EC2(Windows)上の DBeaver により Oracle - handson target database を右クリックします。
コンテキストメニューよりSQL Editorを選択してください。
以下の 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;
実行するにはオレンジ色の ▶︎ ボタンをクリックします。
mys3bucket は環境に合わせて変更してください。
Windows 環境のキーボードは US ASCII 配列になっていますのでご注意ください。
上記のプロシージャは、ダウンロードタスクをバックグランドで実行するため、SQL 文の戻り値はバックグランドタスクのタスク ID となります。
このタスク ID を使ってバックグランドタスクの実行状況を問い合わせることができます。
プロシージャの詳細は以下のマニュアルで確認できます。 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));
<task_id>は上記のタスク ID に置き換えてください。
IMPORT する前に、確認のため DBeaver の左ペインから Oracle - handson target database > Schemas を展開します。
SHスキーマが存在しないことを確認してください。
この 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;
IMPORT の状況は、先ほどの SQL 中で指定したimport.logに書き出されます。
以下の SQL 文で import.log の内容を確認可能です。
SELECT text
FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR'
,'import.log'));
いくつかエラーが出ていますが、これは元のダンプファイルに配慮すべき問題があり、今回の IMPORT タスクの問題ではありません。
Job "SCOTT"."SYS_IMPORT_FULL_07" completed with 14 error(s) at Thu Jul 4 12:26:59 2019 elapsed 0 00:00:43
IMPORT 完了後、左ペインの Oracle - handson target database > Schemas を右クリックします。
コンテキストメニューより Refresh をクリックします。