AWS

RDS for Oracle でdatapump でexportしたスキーマ名とは別名のスキーマでimportする

RDS for Oracle でdatapump でexportしたスキーマ名とは別名のスキーマでimportする

datapumpを利用してexportしたスキーマ名とは別のスキーマ名でimportする方法を紹介します。

export方法はこちらをご参照ください。
RDS for Oracle で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)))

次に、コピー元のスキーマ名とコピー先のスキーマ名を指定してimportします。
ファイル名や対象のスキーマを下記としていますが、環境に合わせて修正ください。
exportしたダンプファイル:dumpfile.dmp
importのログ:import.log
exportしたMOTOSCHEMAをSAKISCHEMAとしてimportします。

DECLARE
hdnl NUMBER;
status VARCHAR2(20);
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', 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 => 'import.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_REMAP(hdnl, 'REMAP_SCHEMA', 'MOTOSCHEMA1', 'SAKISCHEMA1');
DBMS_DATAPUMP.METADATA_REMAP(hdnl, 'REMAP_SCHEMA', 'MOTOSCHEMA2', 'SAKISCHEMA2');
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','import.log'));

 

タイトルとURLをコピーしました