人に聞けない痔の悩み、これでスッキリ >>

Oracle9i 9.2.0
テーブルのデータも権限もなく、順序のみをEXPしてIMPしたいのですが、どのようにしたらよいでしょうか?

//EXP
C:\oracle\ora92\bin\EXP.EXE ユーザ/パス@サービス file='C:\DB移行作業
\SEQUENCE_EXP.DMP' ROWS=N INDEXES=N TRIGGERS=N

//IMP
C:\oracle\ora92\bin\imp.exe toshi/toshi@grjctc2 file='DB移行作業\SEQUENCE_EXP.DMP' FEEDBACK=100000 IGNORE=Y ROWS=N INDEXES=N CONSTRAINTS=N ANALYZE=N TABLES=(住所テーブル)

上記で一応うまく登録されたようですが、
よくわかりません。

どなたかアドバイスお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

DBをユーザー単位でエクスポートしておくと、


表や索引だけでなく、プロシージャ、ファンクションなどが
エクスポートできるので、ユーザー単位いインポートしては
如何でしょう。
もし、それでは困るというのであれば、
別ユーザでシーケンスを作って、ユーザー単位でエクスポートし、
それをインポートすれば、シーケンスのみインポートできますよ。
    • good
    • 1

impではシーケンスのみを行うことはできません。


SHOW=Yでファイルの内容のみを表示し、create sequence文を拾って反映するのが良いかと思います。

imp <userid>/<password> file=SEQUENCE_EXP.DMP show=y

impでtablesを指定すると、そのテーブルのみ反映されます。順序はインポートされません。
以下のSQLを実行し、確認してみてください。
select object_name,object_type from user_objects;
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qbatファイルからsql文実行

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

Aベストアンサー

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:http://biz.rivus.jp/sqlplus_overview.html

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

Qimportについて

こんばんは。

exportしたダンプファイルを頂いたので
oracleにimportしようと思っています。
色々調べて以下のようにわかったのですが、
間違っていないか、パラメータで追加した方が
よいものがあれば、ご指摘お願いします。

1)
既に同じ内容のテーブルが存在するが、それは気にせずimportを行う。既存のテーブルデータは新しくimportするもので更新されている???

2)
SQL*PLUSでコマンドを叩く。
コマンド内容は以下の通り。
imp system/manager fromuser=test1 touser=test2 file=db_data.dmp log=implog.log

test1 ← DBA権限あり。
test2 ← このユーザーの表領域にデータを作成したい。

Aベストアンサー

>上記オプションで、既存のテーブルは古いデータが削除され、

ignore=yにしてもimpコマンドではデータの削除は行われません。
一意制約違反となります。
あらかじめ不要なデータは消しておきましょう。

truncate table テーブル名;
でデータを切り捨てるのがいいかと。


>新規に増えたテーブルは
>新規に作成(データ込み)と考えて正しいでしょうか?

はい。こちらはこうです。

Qdatapumpの実行方法について

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"drop tablespace tbl01"したのですが、
expdpでデータベース全体をエクスポートしたものから、impdpしても
削除したものが戻せませんでした。
impdpのコマンドに誤りがあるのでしょうか。


●expdp実行
-----
・tablespace作成
$ sqlplus / as sysdba
SQL> create tablespace tbl01 datafile '+data/testdb/datafile/tblsp1' size 10m autoextend off;
-----
・sequence作成
SQL> create sequence seq1;
-----
・TABLE作成
SQL> CREATE TABLE TEST_TBL(USER_ID VARCHAR2(8) NOT NULL, DEPT_NO VARCHAR2(8)) tablespace tbl01;
-----
・INSERT実行(5件分)
begin
for i in 1..5 loop
INSERT INTO TEST_TBL (USER_ID, DEPT_NO) VALUES (seq1.nextval, '1234') ;
commit;
end loop;
end;
/
-----
・expdp使用する為の準備
ディレクトリの作成と read/write 権限の付与
$ sqlplus / as sysdba
SQL> create directory expdp_dir as '/u01/tpump';
SQL> grant read,write on directory expdp_dir to system;
-----
・expdb実行
$ expdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:expdp_all.log full=y
=====
"SYSTEM"."SYS_EXPORT_FULL_01"を起動しています: system/******** dumpfile=TEST_DIR:expdp_all.dmp logfile= full=y
BLOCKSメソッドを使用して見積り中です...
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATAの処理中です
-中略-
SYSTEM.SYS_EXPORT_FULL_01に設定されたダンプ・ファイルは次のとおりです:
/u01/tpump/expdp_all.dmp
ジョブ"SYSTEM"."SYS_EXPORT_FULL_01"が11:31:19で正常に完了しました
=====

$ expdp system/pass tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile= TEST_DIR:expdp_tbl.log
=====
"SYSTEM"."SYS_EXPORT_TABLE_01"を起動しています: system/******** tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile=
BLOCKSメソッドを使用して見積り中です...
BLOCKSメソッドを使用した見積り合計: 0 KB
ORA-39166: オブジェクトSYSTEM.TEST_TBLが見つかりません。
ORA-31655: ジョブに対してデータまたはメタデータ・オブジェクトが選択されていません
ジョブ"SYSTEM"."SYS_EXPORT_TABLE_01"が完了しましたが、2エラーが11:33:54で発生しています
=====

●impdp実行
$ impdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:impdp_all.log
=====
マスター表"SYSTEM"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"SYSTEM"."SYS_IMPORT_FULL_01"を起動しています: system/******** dumpfile=expdp_dir:expdp_all.dmp logfile= full=y
オブジェクト型DATABASE_EXPORT/TABLESPACEの処理中です
ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"TEMP"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"USERS"はすでに存在します
ORA-39083: オブジェクト型TABLESPACEの作成が次のエラーで失敗しました:
ORA-01119: データベース・ファイル'+DATA/testdb/datafile/tblsp1'の作成中にエラーが発生しました。
ORA-17502: ksfdcre:4 ファイル+DATA/testdb/datafile/tblsp1の作成に失敗しました
ORA-15005: name "testdb/datafile/tblsp1" is already used by an existing alias
-中略-
※以下のORAエラーが多数発生
例:ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
例:ORA-39151: 表"SYSTEM"."REPCAT$_PRIORITY_GROUP"が存在します。スキップのtable_exists_actionのため、すべての依存メタデータおよびデータはスキップされます
例:ORA-39111: 依存オブジェクト型OBJECT_GRANT:"SYSTEM"はスキップされ、ベース・オブジェクト型VIEW:"SYSTEM"."SCHEDULER_PROGRAM_ARGS"はすでに存在します
-中略-
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/POST_TABLE_ACTIONの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TRIGGERの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型DATABASE_EXPORT/AUDITの処理中です
ジョブ"SYSTEM"."SYS_IMPORT_FULL_01"が完了しましたが、146エラーが20:14:48で発生しています
=====

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"...続きを読む

Aベストアンサー

> SYSスキーマなどを含めてエクスポートしたいときには、
> Full=y では無理だから各スキーマ(SYS、ORDSYS等)を指定して個別で
> 行う必要があるということなのでしょうか。

SYS スキーマはシステムの持ち物なのでexp した事はありません。
その他も、Oracle Text やExpression Filter 等、Oracle の拡張機能をInstall
した際に作成されるスキーマのため、ユーザが意識的にexp/imp する事はありません。

SYSスキーマにオブジェクトを作成しなければならない理由が無いのであれば、
新しいスキーマを作成してそちらにオブジェクトを移動した方が良いです。
テーブルのデータだけで良ければ、ユーザ作成後に
Create table 新ユーザ.テーブル名 as select * from SYS.テーブル名;
とすれば、コピー可能です。

Q既にテーブルが存在する場合のインポート

インポート対象のテーブルが既に存在する場合、次のエラーが発生します。

IMP-00015: オブジェクトがすでに存在するため次の文は失敗しました:
"CREATE TABLE ...

SQL Loaderではデータにスペースや改行が含まれているとdatの作成がめんどうですし、dmpファイルでcreate文を削除するようなこともできればしたくありません。

データを追記したいのでテーブルを削除せずにインポートしたいのですが、どうすればよいでしょうか?

Aベストアンサー

参考URLの内容はどうでしょうか?

参考URL:http://www2.odn.ne.jp/~cag07740/tech_info/oracle_ans7.html

Qoracleのエクスポートについて

こんにちわ

質問なんですが、oracleのデータを他のマシンに移行するためにテーブルをエクスポートしようと思うのですが、エクスポートする際、シーケンスもいっしょにエクスポートすることは可能なのでしょうか?

Aベストアンサー

>オブジェクト所有者が含まれるようにオプション指定するにはどうしたらよいのでしょうか?

エクスポートのモードを、FULLとするか、ユーザモードでエクスポートする。
ユーザモードの場合は、シーケンスを所有するユーザを忘れない。
という普通のエクスポートです。
詳しくは、ユーティリティマニュアルをご覧あれ。

QOracle 10gで順序sequenceの作成(定義)した内容を見るには?

Oracle 10gで順序sequenceの作成(定義)した内容を見るにはどうしたらよいのでしょうか?
desc sequence_nameでは SP2-0381: DESCRIBE sequenceは使用できませんと表示されます。

Aベストアンサー

 次の検索を実行してください。

 select * from user_sequences where sequence_name = "find_sequence";

where句のfind_sequeceの所は、探したいsequenceの名前を入れてください。もし、where句を省略すると自分の保有するすべての順序が出てきます。
 出てくる各列の意味は、次の通りです。

 sequence_name 順序名
 min_value 順序の最小値
 max_value 順序の最大値
 increment_by 順序の間隔
 cycle_flag 順序が最大値の後、最初の値に戻るかどうか
 order_flag 順序番号が順番に生成されるかどうか
 cache_size 順序のキャッシュの量

 この表は、システム表の一つで、順序の定義すべてを管理しています。(正確には、システム表へのビューですが。)
 もし、あなたに、それなりの権限があるのであれば、all_sequences表を検索すれば、システムにおいてあなたが使用できるすべての順序がリストできますし、dba_sequencesを検索すれば、システム上に存在するすべての順序をリストできます。ただし、dba_ で始まるシステム表の検索は、権限が必要です。また、与えられた権限にかかわらず、この表への挿入・削除・変更は、すべて不可です。念のため。

 次の検索を実行してください。

 select * from user_sequences where sequence_name = "find_sequence";

where句のfind_sequeceの所は、探したいsequenceの名前を入れてください。もし、where句を省略すると自分の保有するすべての順序が出てきます。
 出てくる各列の意味は、次の通りです。

 sequence_name 順序名
 min_value 順序の最小値
 max_value 順序の最大値
 increment_by 順序の間隔
 cycle_flag 順序が最大値の後、最初の値に戻るかどうか
 order_flag 順序番号が順番に生成...続きを読む

QoracleのimpdpでORA-39166

ORALCEのexpdpおよびimpdpの勉強のために自宅環境で操作していたところ、
impdpにてORA-39166(オブジェクトが見つからない)が発生してしまいした。
いろいろ調べてみたのですが、解決に至ってないためお力添えをお願いいたします。

【環境】
OS : linux ※CentOS(64bit)
ORALCE11gXE

【やりたいこと】
studyスキーマのTEST1テーブルをexpdpでエクスポート(content=data_only)し、
同じスキーマ内のTEST2テーブルにimpdpにてデータを入れる。

【発生までの操作】
1.expdp system/パスワード@XE directory=test_dir tables=study.TEST1 log=test_exp.log content=data_only

2.impdp system/パスワード@XE directory=test_dir dumpfile=expdat.dmp log=test_imp.log tables=study.TEST2 content=data_only

2の操作をしたタイミングで以下のメッセージ。

ORA-39002: invalid operation
ORA-39166: Object STUDY.TEST2 was not found.

【備考】
・TEST1およびTEST2はまったく同じテーブル構造です。studyユーザで作成してます。
・STUDY.TEST2は存在します。
(「sqlplus study/パスワード@XE」でログインしdesc TEST2で確認できるため)
・exdpは正常に終了しており、dumpファイルは「expdat.dmp」で作成されています。


以上です。
ご教授のほどよろしくお願いいたします。

ORALCEのexpdpおよびimpdpの勉強のために自宅環境で操作していたところ、
impdpにてORA-39166(オブジェクトが見つからない)が発生してしまいした。
いろいろ調べてみたのですが、解決に至ってないためお力添えをお願いいたします。

【環境】
OS : linux ※CentOS(64bit)
ORALCE11gXE

【やりたいこと】
studyスキーマのTEST1テーブルをexpdpでエクスポート(content=data_only)し、
同じスキーマ内のTEST2テーブルにimpdpにてデータを入れる。

【発生までの操作】
1.expdp system/パスワード@XE directory...続きを読む

Aベストアンサー

「expdat.dmp」の中に「STUDY.TEST2」というオブジェクトの
情報がないという意味のメッセージが出ているので
そのまんまの内容だと思うのですが。

そもそもData Pumpはバックアップや別のスキーマ・インスタンスに
移動する際に使用する機能であって、同一スキーマの別テーブルに
移動する為に使用するものではなかったと思います。たぶん。

study.TEST1のデータを削除して以下のコマンドを実行したらどうなりますか?
impdp system/パスワード@XE directory=test_dir dumpfile=expdat.dmp log=test_imp.log tables=study.TEST1 content=data_only

Qデータを削除しても表領域の使用率が減りません

いつもお世話になっております。

今使用している表領域の使用率が高くなってきたため、
不要なテーブルやデータを削除しました。

ですが、少ししか使用率が減らず困っています。

テーブルを削除した際にはPURGE RECYCLEBINで、BIN~のテーブルも
消しています。

何か他に原因があるのでしょうか?

Aベストアンサー

前の方のおっしゃるとおり、DELETEしただけでは領域は開放されません(ハイウォーターマークが下がらない)ので、以下を試してみてください。

1.該当テーブルの全件削除で良い場合
truncate テーブル名 drop storage;
を実行する。
これで領域も開放されます。(最後のところをreuse storageとすると領域保持する意味となる)

2.部分的にdeleteして、領域を開放したい場合
alter table テーブル名 enable row movement;
alter table テーブル名 shrink space cascade;
alter table テーブル名 disable row movement;
を実行する。
1行目は領域開放の前準備、3行目は1行目の変更を元に戻す意味。
2行目でcascadeしておくと、関連インデックスの領域も一緒に縮小してくれます。


人気Q&Aランキング