とりあえずExport。
Data Pumpを使って、HRスキーマにあるサンプル表をてきとーなスキーマにコピーしようと思った。
create tableでコピーしても、not null制約以外の制約はコピーされない。
じゃあExport/Importを使え、ということだ。
んじゃ、まずはExportしてみよう。
対象は、HRスキーマにある全部の表。
1.ダンプファイル(Exportしたファイルのこと)とログを格納するディレクトリを作成。
これはmkdirを使っててきとーな場所に作ればいい。
所有者はExportを実行するOSユーザ、DBAグループにしておきましょう。
パーミッションは774くらいで。
今回は/work/oracle/expdp_dir1ディレクトリにダンプファイルとログを置くことにした。
2.Oracleの方にディレクトリと読み書き権限を与える。
(1) /work/oracle/expdp_dir1ディレクトリに、任意のOracle管理名を設定。
「expdp_dir1」というディレクトリ名を設定することにした。
SQL> create directory expdp_dir1 as '/work/oracle/expdp_dir1';
ディレクトリが作成されました。
(2) hrスキーマのオブジェクトを格納するので、hrユーザにexpdp_dir1ディレクトリに読み書き権限を与える。
SQL> grant read,write on directory expdp_dir1 to hr;
権限付与が成功しました。
3.(ここはやらなくてもいい)Exportするデータのサイズはどのくらいなのかな?と、見積もってみる。
estimate_only=yにして、Exportを実行(この場合、データ量の見積もりのみでExportは行われない。)
※ログファイル名を「exp_est.log」にしている。
[oraora@localhost ~]$ expdp hr/****** directory=expdp_dir1 estimate_only=y logfile=expdp_dir1:exp_est.log
Export: Release 10.2.0.1.0 - Production on 日曜日, 27 7月, 2008 12:58:50
Copyright (c) 2003, 2005, Oracle. All rights reserved.
接続先: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
"HR"."SYS_EXPORT_SCHEMA_01"を起動しています: hr/******** directory=expdp_dir1 estimate_only=y logfile=expdp_dir1:exp_est.log
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. 見積"HR"."COUNTRIES" 64 KB
. 見積"HR"."DEPARTMENTS" 64 KB
. 見積"HR"."EMPLOYEES" 64 KB
. 見積"HR"."JOBS" 64 KB
. 見積"HR"."JOB_HISTORY" 64 KB
. 見積"HR"."LOCATIONS" 64 KB
. 見積"HR"."REGIONS" 64 KB
BLOCKSメソッドを使用した見積り合計: 448 KB
ジョブ"HR"."SYS_EXPORT_SCHEMA_01"が12:59:37で正常に完了しました
4.Exportしてみる。
ダンプファイル名は「hr_exp年月日.dmp」、ログファイル名は「hr_exp年月日.log」にした。
[oraora@localhost ~]$ expdp hr/****** directory=expdp_dir1 schemas=hr dumpfile=expdp_dir1:hr_exp`date +%y%m%d`.dmp logfile=expdp_dir1:hr_exp`date +%y%m%d`.log
Export: Release 10.2.0.1.0 - Production on 日曜日, 27 7月, 2008 21:53:46
Copyright (c) 2003, 2005, Oracle. All rights reserved.
接続先: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
"HR"."SYS_EXPORT_SCHEMA_01"を起動しています: hr/******** directory=expdp_dir1 schemas=hr dumpfile=expdp_dir1:hr_exp080727.dmp logfile=expdp_dir1:hr_exp080727.log
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 448 KB
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/SEQUENCE/SEQUENCEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/COMMENTの処理中です
オブジェクト型SCHEMA_EXPORT/PROCEDURE/PROCEDUREの処理中です
オブジェクト型SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDUREの処理中です
オブジェクト型SCHEMA_EXPORT/VIEW/VIEWの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TRIGGERの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
. . "HR"."COUNTRIES" 6.085 KB 25行がエクスポートされました
. . "HR"."DEPARTMENTS" 6.632 KB 27行がエクスポートされました
. . "HR"."EMPLOYEES" 15.76 KB 107行がエクスポートされました
. . "HR"."JOBS" 6.609 KB 19行がエクスポートされました
. . "HR"."JOB_HISTORY" 6.585 KB 10行がエクスポートされました
. . "HR"."LOCATIONS" 7.710 KB 23行がエクスポートされました
. . "HR"."REGIONS" 5.289 KB 4行がエクスポートされました
マスター表"HR"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
HR.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
/work/oracle/expdp_dir1/hr_exp080727.dmp
ジョブ"HR"."SYS_EXPORT_SCHEMA_01"が21:54:57で正常に完了しました
はい、エクスポートできました。
明日はインポートしよう。
<オマケ>
ORA-39002: 操作が無効です
ORA-39070: ログ・ファイルをオープンできません。
ORA-39087: ディレクトリ名EXPDP_DIR1は無効です
というエラーが出る場合・・・
いちばんはじめのcreate directory~で設定したディレクトリ名、ディレクトリパスが正しいかどうかを確認しましょう。
誤っていた場合、alter directory~っていうのはないので、drop directory~をやってから、再作成します。
ORA-39002: 操作が無効です
ORA-39070: ログ・ファイルをオープンできません。
ORA-29283: 無効なファイル操作です。
ORA-06512: "SYS.UTL_FILE", 行475
ORA-29283: 無効なファイル操作です。
というエラーが出る場合・・・
ダンプファイル/ログを格納するディレクトリの所有者・グループ、パーミッションを確認しましょう。
create tableでコピーしても、not null制約以外の制約はコピーされない。
じゃあExport/Importを使え、ということだ。
んじゃ、まずはExportしてみよう。
対象は、HRスキーマにある全部の表。
1.ダンプファイル(Exportしたファイルのこと)とログを格納するディレクトリを作成。
これはmkdirを使っててきとーな場所に作ればいい。
所有者はExportを実行するOSユーザ、DBAグループにしておきましょう。
パーミッションは774くらいで。
今回は/work/oracle/expdp_dir1ディレクトリにダンプファイルとログを置くことにした。
2.Oracleの方にディレクトリと読み書き権限を与える。
(1) /work/oracle/expdp_dir1ディレクトリに、任意のOracle管理名を設定。
「expdp_dir1」というディレクトリ名を設定することにした。
SQL> create directory expdp_dir1 as '/work/oracle/expdp_dir1';
ディレクトリが作成されました。
(2) hrスキーマのオブジェクトを格納するので、hrユーザにexpdp_dir1ディレクトリに読み書き権限を与える。
SQL> grant read,write on directory expdp_dir1 to hr;
権限付与が成功しました。
3.(ここはやらなくてもいい)Exportするデータのサイズはどのくらいなのかな?と、見積もってみる。
estimate_only=yにして、Exportを実行(この場合、データ量の見積もりのみでExportは行われない。)
※ログファイル名を「exp_est.log」にしている。
[oraora@localhost ~]$ expdp hr/****** directory=expdp_dir1 estimate_only=y logfile=expdp_dir1:exp_est.log
Export: Release 10.2.0.1.0 - Production on 日曜日, 27 7月, 2008 12:58:50
Copyright (c) 2003, 2005, Oracle. All rights reserved.
接続先: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
"HR"."SYS_EXPORT_SCHEMA_01"を起動しています: hr/******** directory=expdp_dir1 estimate_only=y logfile=expdp_dir1:exp_est.log
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. 見積"HR"."COUNTRIES" 64 KB
. 見積"HR"."DEPARTMENTS" 64 KB
. 見積"HR"."EMPLOYEES" 64 KB
. 見積"HR"."JOBS" 64 KB
. 見積"HR"."JOB_HISTORY" 64 KB
. 見積"HR"."LOCATIONS" 64 KB
. 見積"HR"."REGIONS" 64 KB
BLOCKSメソッドを使用した見積り合計: 448 KB
ジョブ"HR"."SYS_EXPORT_SCHEMA_01"が12:59:37で正常に完了しました
4.Exportしてみる。
ダンプファイル名は「hr_exp年月日.dmp」、ログファイル名は「hr_exp年月日.log」にした。
[oraora@localhost ~]$ expdp hr/****** directory=expdp_dir1 schemas=hr dumpfile=expdp_dir1:hr_exp`date +%y%m%d`.dmp logfile=expdp_dir1:hr_exp`date +%y%m%d`.log
Export: Release 10.2.0.1.0 - Production on 日曜日, 27 7月, 2008 21:53:46
Copyright (c) 2003, 2005, Oracle. All rights reserved.
接続先: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
"HR"."SYS_EXPORT_SCHEMA_01"を起動しています: hr/******** directory=expdp_dir1 schemas=hr dumpfile=expdp_dir1:hr_exp080727.dmp logfile=expdp_dir1:hr_exp080727.log
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 448 KB
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/SEQUENCE/SEQUENCEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/COMMENTの処理中です
オブジェクト型SCHEMA_EXPORT/PROCEDURE/PROCEDUREの処理中です
オブジェクト型SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDUREの処理中です
オブジェクト型SCHEMA_EXPORT/VIEW/VIEWの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TRIGGERの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
. . "HR"."COUNTRIES" 6.085 KB 25行がエクスポートされました
. . "HR"."DEPARTMENTS" 6.632 KB 27行がエクスポートされました
. . "HR"."EMPLOYEES" 15.76 KB 107行がエクスポートされました
. . "HR"."JOBS" 6.609 KB 19行がエクスポートされました
. . "HR"."JOB_HISTORY" 6.585 KB 10行がエクスポートされました
. . "HR"."LOCATIONS" 7.710 KB 23行がエクスポートされました
. . "HR"."REGIONS" 5.289 KB 4行がエクスポートされました
マスター表"HR"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
HR.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
/work/oracle/expdp_dir1/hr_exp080727.dmp
ジョブ"HR"."SYS_EXPORT_SCHEMA_01"が21:54:57で正常に完了しました
はい、エクスポートできました。
明日はインポートしよう。
<オマケ>
ORA-39002: 操作が無効です
ORA-39070: ログ・ファイルをオープンできません。
ORA-39087: ディレクトリ名EXPDP_DIR1は無効です
というエラーが出る場合・・・
いちばんはじめのcreate directory~で設定したディレクトリ名、ディレクトリパスが正しいかどうかを確認しましょう。
誤っていた場合、alter directory~っていうのはないので、drop directory~をやってから、再作成します。
ORA-39002: 操作が無効です
ORA-39070: ログ・ファイルをオープンできません。
ORA-29283: 無効なファイル操作です。
ORA-06512: "SYS.UTL_FILE", 行475
ORA-29283: 無効なファイル操作です。
というエラーが出る場合・・・
ダンプファイル/ログを格納するディレクトリの所有者・グループ、パーミッションを確認しましょう。
この記事へのコメント
��碚� �蒻�