ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

Object Storage にアップロードしたファイルを Autonomous Database の DATA_PUMP_DIR にコピーする。(Oracle Cloud Infrastructure)

本エントリは Oracle Cloud Infrastructure #2 Advent Calendar 2020 の Day 1 です。
Day 1 と言っても、もう 12月5日 ですけどね……#2 は余り埋まってないので、気ままに書いていこうかと。
彡(゚)(゚)

Oracle Cloud Infrastructure #2 Advent Calendar 2020
https://qiita.com/advent-calendar/2020/oci2

Object Storage にアップロードしたファイルを Autonomous Database の DATA_PUMP_DIR に コピーしてみます。

1. Object Storage の作成とファイルアップロード

特に難しいことも無いので、粛々とやる。 WS000000.JPG

2. IAMユーザーの作成と権限(Policy)の付与

Object Storage に対する権限を持った IAMユーザー を作成します。付与した権限(Policy Statement)は下記となります。

ALLOW GROUP AYU_IAM_Group1 TO manage object-family IN compartment ayu-compartment01

WS000001.JPG WS000002.JPG WS000003.JPG

3. IAMユーザーの Auth Token発行

IAMユーザーの Auth Token を発行します。後から確認は出来ないので注意 WS000004.JPG

4. DBMS_CLOUD.CREATE_CREDENTIAL で Autonomous Database に Auth Token を登録

DBMS_CLOUDパッケージ の CREATE_CREDENTIALプロシージャ で 3. の Auth Token を Autonomous Database に登録します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'CRED_AYU_TOKEN', -- 任意の文字列
    username => 'AYU_IAM_USER1',         -- Auto Token を発行したIAMユーザー名
    password => 'xxxxxxxxxxxxxxxxxxxx'   -- 3. で生成した Auth Token
  );
END;
/

PL/SQLプロシージャが正常に完了しました。

5. DBMS_CLOUD.GET_OBJECT で Object Storage から Autonomous Database の DATA_PUMP_DIR にファイルをコピー

DBMS_CLOUDパッケージ の CREATE_CREDENTIALプロシージャ で Auth Token を Autonomous Database に登録します。

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'CRED_AYU_TOKEN',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/xxxxxxxxxxxx/b/ayu-bucket1/o/test.txt',
     directory_name => 'DATA_PUMP_DIR'
   ); 
END;
/

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'CRED_AYU_TOKEN',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/xxxxxxxxxxxx/b/ayu-bucket1/o/test2.txt',
     directory_name => 'DATA_PUMP_DIR'
   ); 
END;
/

PL/SQLプロシージャが正常に完了しました。

PL/SQLプロシージャが正常に完了しました。

6. DBMS_CLOUD.LIST_FILES でコピー結果を確認

DBMS_CLOUD.LIST_FILESファンクション で DATA_PUMP_DIR の中身を確認します。TABLEファンクションなので SELECT文 で確認

COLUMN OBJECT_NAME FORMAT A30;
COLUMN CHECKSUM FORMAT A30;
SELECT * FROM TABLE(DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR'));

OBJECT_NAME                         BYTES CHECKSUM                       CREATED                            LAST_MODIFIED                     
------------------------------ ---------- ------------------------------ ---------------------------------- ----------------------------------
test.txt                                6                                2020/12/05 05:20:09.000000000 GMT: 2020/12/05 05:20:09.000000000 GMT:
test2.txt                               7                                2020/12/05 05:20:57.000000000 GMT: 2020/12/05 05:20:57.000000000 GMT:

7. まとめ

本当は別記事を書くつもりやったんやけど、思いのほか長くなったんで切り出してみた。
次の Advent Calendar はいつ書こうかしら……皆さんも Oracle Cloud と Advent Calendar をよろしくね彡(^)(^)

Oracle Cloud Infrastructure Advent Calendar 2020
https://qiita.com/advent-calendar/2020/oci

Oracle Cloud Infrastructure #2 Advent Calendar 2020
https://qiita.com/advent-calendar/2020/oci2

8. 参考ドキュメント

A Autonomous Database提供パッケージ・リファレンス
DBMS_CLOUDパッケージ
https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/dbms-cloud-package.html#GUID-CE359BEA-51EA-4DE2-88DB-F21A9FC10721