1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RDS for Oracle の DataPump

Last updated at Posted at 2018-07-18

RDS for Oracle 同士の DataPump

エクスポートしたら DBLink を張って、Dump を送り込み、インポートするだけの作業です。
この記事は、訳あって 12c -> 11g への移行した際のメモになります。

手順

エクスポート

RDS for Oracle の DATA_PUMP_DIR は変更出来ない。

SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR';

DIRECTORY_NAME
--------------------------------------------------------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
DATA_PUMP_DIR
/rdsdbdata/datapump

DBMS_DATAPUMP でエクスポートを実行する。
ダウングレードしないのであれば、version の指定はいらない。

DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.open( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null, version => '11.2.0');
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => '<<hoge.dmp>>', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.add_file( handle => hdnl, filename => '<<exp_hoge.log>>', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''<<SCHEMA_NAME>>'')');
DBMS_DATAPUMP.start_job(hdnl);
END;
/

出力したファイルを確認する。

SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER BY MTIME;

ログを確認する。

SELECT TEXT FROM TABLE(RDSADMIN.RDS_FILE_UTIL.READ_TEXT_FILE('DATA_PUMP_DIR','<<exp_hoge.log>>'));

転送

まずは DBLink を作成する。

CREATE DATABASE LINK <<DB_LINK_NAME>> CONNECT TO <<USER_NAME>> IDENTIFIED BY <<USER_PASSWORD>> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<<host>>)(PORT=<<port>>))(CONNECT_DATA=(SID=<<identifier>>)))';

そしてダンプファイルを送りこむ。

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_file_name => '<<hoge.dmp>>',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => '<<from_hoge.dmp>>',
destination_database => '<<DB_LINK_NAME>>'
);
END;
/

インポート

ファイルが転送されている事を確認する。

SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER BY MTIME;

確認出来たら、DBMS_DATAPUMP を使い、インポートを実行する。

DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.open( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => '<<from_hoge.dmp>>', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.add_file( handle => hdnl, filename => '<<imp_hoge.log>>', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''<<SCHEMA_NAME>>'')');
DBMS_DATAPUMP.start_job(hdnl);
END;
/

ログを確認する。

SELECT TEXT FROM TABLE(RDSADMIN.RDS_FILE_UTIL.READ_TEXT_FILE('DATA_PUMP_DIR','<<imp_hoge.log>>'));

不要になったファイルは消しましょう。

BEGIN
utl_file.fremove('DATA_PUMP_DIR', '<<hoge.dmp>>');
utl_file.fremove('DATA_PUMP_DIR', '<<exp_hoge.log>>');
END;
/

DBLink も不要なら消しましょう。

DROP DATABASE LINK <<DB_LINK_NAME>>;

以上です。

仲間募集中

弊社ではエンジニアを募集中です。インフラからアプリ、ユーザサポートまで幅広く業務を行ってます。
https://www.nittsu-infosys.com/recruit/2019/index.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?