こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

datapumpの実行方法について

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

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で発生しています
=====

投稿日時 - 2013-11-01 13:24:51

QNo.8329463

困ってます

質問者が選んだベストアンサー

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

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

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

投稿日時 - 2013-11-03 18:45:39

お礼

度々ご回答いただきありがとうございます。

>SYSスキーマにオブジェクトを作成しなければならない理由が無いのであれば、
>新しいスキーマを作成してそちらにオブジェクトを移動した方が良いです。

今回のものについては、SYSに置く必要がないので、お教えいただきました手順で、
別のスキーマのオブジェクトに移動させようと思います。

投稿日時 - 2013-11-11 17:57:59

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちわ。

> impdpのコマンドに誤りがあるのでしょうか。
SYS スキーマでTable を作成している事が原因だと思います。
確か、expdp はSYS スキーマオブジェクトは対象外だった筈だと思います。

投稿日時 - 2013-11-02 00:54:18

補足

回答いただきありがとうございます。

調べてみましたら、確かにSYSスキーマオブジェクトは対象外のようです。
=====
制限事項
・システム・スキーマSYS、ORDSYS、EXFSYS、MDSYS、DMSYS、CTXSYS、ORDPLUGINS、LBACSYS、XDB、
SI_INFORMTN_SCHEMA、DIP、DBSNMP、WMSYSは、スキーマに含まれるメタデータが
ダンプ・ファイル・セット内の他のオブジェクトの一部としてエクスポートされるため、
全体エクスポートの一部としてエクスポートされません。

・SYSスキーマが所有しているオブジェクトに対する権限はエクスポートされません。
=====

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

投稿日時 - 2013-11-03 12:15:53

お礼

度々ご回答いただきありがとうございます。

No2の方にも書かせていただきましたが、
今回のものについては、SYSに置く必要がないので、お教えいただきました手順で、
別のスキーマのオブジェクトに移動させようと思います。

投稿日時 - 2013-11-11 18:00:16

あなたにオススメの質問