LoginSignup
4
1

More than 1 year has passed since last update.

[OCI]PL/SQL SDKを使ってAutonomous Databaseのリフレッシュ可能クローンを定期的にリフレッシュさせてみた

Last updated at Posted at 2022-07-07

Autonomous Databaseのリフレッシュ可能クローンのリフレッシュを、ソースとなっているAutonomous DatabaseでPL/SQL SDKを用いて自動実行させてみました。

※こちらはあくまでサンプルのため、クローンの状態の確認やエラーハンドリングは実装しておりません。こちらを参考に本番環境に実装される際は、適宜エラーハンドリング等を追加で実装してください。

リフレッシュ可能クローンのOCIDとリージョンを指定して、10分前のタイムスタンプを指定して対象となるクローンのリフレッシュを実行するPL/SQLプロシージャ「refresh_clone」を作成します。

ここではクレデンシャルとしてリソース・プリンシパルを使用しています。

refresh_cloneプロシージャ
CREATE OR REPLACE PROCEDURE refresh_clone
IS
  response_body   dbms_cloud_oci_database_autonomous_database_t;
  response        dbms_cloud_oci_db_database_autonomous_database_manual_refresh_response_t;
  refresh_details dbms_cloud_oci_database_autonomous_database_manual_refresh_details_t;
  
  clone_ocid      VARCHAR2(256);
  region_id       VARCHAR2(20);
  
BEGIN
  -- リフレッシュ可能クローンのOCIDをセット
  clone_ocid := 'ocid1.autonomousdatabase.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  --リージョン識別子をセット
  region_id  := 'us-ashburn-1';
  
  -- refresh_detailsの初期化
  refresh_details := dbms_cloud_oci_database_autonomous_database_manual_refresh_details_t();

  -- 10分前のタイムスタンプを取得
  SELECT systimestamp-(1/144) INTO refresh_details.time_refresh_cutoff FROM dual; 

  -- 10分前のタイムスタンプを指定してリフレッシュ可能クローンのリフレッシュを実行
  response := DBMS_CLOUD_OCI_DB_DATABASE.AUTONOMOUS_DATABASE_MANUAL_REFRESH(
                autonomous_database_id => clone_ocid,
                autonomous_database_manual_refresh_details => refresh_details,
				credential_name => 'OCI$RESOURCE_PRINCIPAL',
				region => region_id);

END;
/

PL/SQLプロシージャが作成できたので実行してみます。

EXECUTE refresh_clone;

コンソールでリフレッシュ可能クローンの状態を確認してみます。

更新中のステータスに変わりました。
スクリーンショット 2022-07-07 17.46.55.png

作業リクエストを確認してみます。
スクリーンショット 2022-07-07 17.47.25.png
リフレッシュが開始されたことが確認できました。

作成したプロシージャREFRESH_CLONEが毎日0時に自動実行されるように、DBMS_SCHEDULERのジョブ"REFRESH_CLONE_JOB"を作成します。

RERESH_CLONE_JOB
BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
        job_name           =>  'REFRESH_CLONE_JOB',
        job_type           =>  'STORED_PROCEDURE',
        job_action         =>  'ADMIN.REFRESH_CLONE', 
        start_date         =>  TO_TIMESTAMP_TZ('2022-07-8 00:00:00 +9:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),
        repeat_interval    =>  'FREQ=DAILY;INTERVAL=1',
        auto_drop          =>  FALSE,
        enabled            =>  TRUE
    );
END;
/

以上で、Autonomous Databaseが毎日0時に自動的にリフレッシュ可能クローンをリフレッシュするように設定できました。

4
1
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
4
1