S3のダンプファイルからRDSでデータをIMPORT

01

  • S3 にアップロードしたダンプファイルを RDS for Oracle で Import するためには、まずプロシージャを使って RDS for Oracle にダンプファイルをダウンロードします。
  1. EC2(Windows)上の DBeaver により Oracle - handson target database を右クリックします。

  2. コンテキストメニューよりSQL Editorを選択してください。


02

以下の SQL 文を SQL Editor に入力し、実行してください。

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
    p_bucket_name    => 'mys3bucket',
    p_s3_prefix      => 'nondmshandson58/',
    p_directory_name => 'DATA_PUMP_DIR')
AS TASK_ID FROM DUAL;

  1. 実行するにはオレンジ色の ▶︎ ボタンをクリックします。

  2. mys3bucket は環境に合わせて変更してください。

Windows 環境のキーボードは US ASCII 配列になっていますのでご注意ください。

  • 上記のプロシージャは、ダウンロードタスクをバックグランドで実行するため、SQL 文の戻り値はバックグランドタスクのタスク ID となります。

  • このタスク ID を使ってバックグランドタスクの実行状況を問い合わせることができます。

プロシージャの詳細は以下のマニュアルで確認できます。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.html


03

  • 上記のタスク ID を使ってダウンロードタスクの状況を確認します。
  1. 以下の SQL 文を SQL Editor から実行してください。
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));

<task_id>は上記のタスク ID に置き換えてください。


04

  1. IMPORT する前に、確認のため DBeaver の左ペインから Oracle - handson target database > Schemas を展開します。

  2. SHスキーマが存在しないことを確認してください。


05

  1. 以下の SQL 文を SQL Editor で実行します。

この SQL はダウンロード済みのダンプファイルを Oracle 標準の DBMS_DATAPUMP プロシージャを使って IMPORT するものになります。

DECLARE
    hdnl NUMBER;
BEGIN
    hdnl := dbms_datapump.open (operation => 'IMPORT'
, job_mode => 'FULL'
, version => 'COMPATIBLE');
    DBMS_DATAPUMP.ADD_FILE( handle => hdnl
, filename => 'import.log'
, directory => 'DATA_PUMP_DIR'
, filetype => dbms_datapump.ku$_file_type_log_file);
    DBMS_DATAPUMP.ADD_FILE(handle => hdnl
, filename => 'mig_oracle_handson.dmp'
, directory => 'DATA_PUMP_DIR'
, filetype => dbms_datapump.ku$_file_type_dump_file);
    DBMS_DATAPUMP.START_JOB(handle => hdnl);
END;

06

  1. IMPORT の状況は、先ほどの SQL 中で指定したimport.logに書き出されます。

  2. 以下の SQL 文で import.log の内容を確認可能です。

SELECT text
FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR'
,'import.log'));

いくつかエラーが出ていますが、これは元のダンプファイルに配慮すべき問題があり、今回の IMPORT タスクの問題ではありません。


07

  • IMPORT が完了すると import.log には以下のようなメッセージが出力されます。
Job "SCOTT"."SYS_IMPORT_FULL_07" completed with 14 error(s) at Thu Jul 4 12:26:59 2019 elapsed 0 00:00:43
  1. IMPORT 完了後、左ペインの Oracle - handson target database > Schemas を右クリックします。

  2. コンテキストメニューより Refresh をクリックします。


08

  1. 最後に IMPORT されたスキーマ(SH)やそのオブジェクトの中身を確認してみてください。