RDS for Oracle でdatapump でスキーマを指定し exportする
RDSの標準機能として、7日前までであれば任意のタイミグにポイントリカバリーで復旧できる機能がついていて、AWSコンソール上からGUIでポチポチしていけば結構簡単にリカバリのRDSを作成できます。
ただ、ポイントリカバリーで戻るのはDBの全てのデータです。
この方法で問題ない場合はこれでよいと思いますが、今回紹介するのはOracleのdatapumpを利用して特定スキーマのエクスポートの方法をご紹介します。
DBを複数人や複数システムで利用していて、全体を戻すことはできないけど、特定のスキーマだけ戻したい場合などは、このdatapumpでのexportは有効な手法だと思います。
はずは、RDSにdbmasterユーザでログインします。
ホスト名とSIDは環境に合わせて修正ください。ポートは変更してない限り1521でよいと思います。
sqlplus dbmaster@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXXX.ap-northeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=SID)))
次に、スキーマを指定してexportします。
ファイル名やexport対象のスキーマを下記としていますが、環境に合わせて修正ください。
exportファイル名:dumpfile.dmp
exportのログ:export.log
exportするスキーマ:SCHEMA01, SCHEMA02, SCHEMA03, SCHEMA04
DECLARE hdnl NUMBER; status VARCHAR2(20); BEGIN hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name=>null); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'dumpfile.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'export.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_LIST',' ''SCHEMA01'',''SCHEMA02'',''SCHEMA03'',''SCHEMA04'' '); DBMS_DATAPUMP.START_JOB(handle => hdnl); DBMS_DATAPUMP.WAIT_FOR_JOB(hdnl,status); END; /
ログの確認し、エラーがない事を確認
SELECT TEXT FROM TABLE(RDSADMIN.RDS_FILE_UTIL.READ_TEXT_FILE('DATA_PUMP_DIR','export.log'));
importの手順は下記を参照ください。
RDS for Oracle でdatapump でexportしたスキーマ名とは別名のスキーマでimportする