1
2

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 1 year has passed since last update.

[OCI]毎日決まった時間に行うOracle Analytics Cloudの起動/停止をAutonomous Databaseを使って実現してみた

Last updated at Posted at 2023-03-08

はじめに

Autonomous Databaseと組み合わせて使用されることの多いOracle Analytics Cloudの自動起動/停止をAutonomous Databaseを使用して実現する方法を検証してみました。

この記事ではリソース・プリンシパルを使用しますので、こちらのマニュアルに従って、使用するAutonomous Databaseを含む動的グループを作成し、作成した動的グループに対してAnalytics Cloudに対する操作を許可するポリシーを作成する必要があります。

動的グループの作成例:
動的グループadb_groupを作成し、一致ルールとして以下を入力
(resource.idにAutonomous DatabaseのOCIDを指定)

resource.id='ocid1.autonomousdatabase.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxx'

ポリシーの例:
動的グループadb_groupに属するリソースに、テナンシ内の全てのアナリティクス・インスタンスの管理を許可する

allow dynamic-group adb_group to manage analytics-instances in tenancy

Oracle Analytics Cloudインスタンスを管理する権限、ポリシーに関する詳細は、こちらのマニュアルに記載があります。

1.Analytics CloudインスタンスのOCIDの確認

コンソールで操作対象となるAnalytics InstanceのOCIDを確認してメモしておきます。
 のコピー.png

2.Autonomous Databaseへの接続

SQL*PlusからAutonomous Databaseに接続します。

SQL*Plus: Release 19.0.0.0.0 - Production on 水 3月 8 17:12:12 2023
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

最終正常ログイン時間: 水 3月  08 2023 09:50:44 +09:00

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.18.0.1.0
に接続されました。
SQL>

3.Analytics Cloudインスタンスを起動するプロシージャの作成

Analytics Cloudインスタンスを起動するプロシージャ「start_oac_instance」を作成します。

start_oac_instanceプロシージャ
SQL> CREATE OR REPLACE PROCEDURE start_oac_instance
  2  IS
  3  	response             dbms_cloud_oci_an_analytics_start_analytics_instance_response_t;
  4  	target_oac_region    VARCHAR2(200) := 'ap-tokyo-1'; -- Analytics Cloudインスタンスのリージョン
  5  	target_oac_ocid      VARCHAR2(200) := 'ocid1.analyticsinstance.oc1.ap-tokyo-1.aaxxxxxxxxxxxxxja'; -- Analytics CloudインスタンスのOCID
  6  
  7  BEGIN
  8  	response := DBMS_CLOUD_OCI_AN_ANALYTICS.START_ANALYTICS_INSTANCE (
  9                    analytics_instance_id => target_oac_ocid,
 10                    region                => target_oac_region,
 11                    credential_name       => 'OCI$RESOURCE_PRINCIPAL'
 12  	);
 13  END;
 14  /

プロシージャが作成されました。

SQL> 

4.Analytics Cloudインスタンスを停止するプロシージャの作成

Analytics Cloudインスタンスを停止するプロシージャ「stop_oac_instance」を作成します。

stop_oac_instanceプロシージャ
SQL> CREATE OR REPLACE PROCEDURE stop_oac_instance
  2  IS
  3  	response             dbms_cloud_oci_an_analytics_stop_analytics_instance_response_t;
  4  	target_oac_region    VARCHAR2(200) := 'ap-tokyo-1'; -- Analytics Cloudインスタンスのリージョン
  5  	target_oac_ocid      VARCHAR2(200) := 'ocid1.analyticsinstance.oc1.ap-tokyo-1.aaxxxxxxxxxxxxxja'; -- Analytics CloudインスタンスのOCID
  6  
  7  BEGIN
  8  	response := DBMS_CLOUD_OCI_AN_ANALYTICS.STOP_ANALYTICS_INSTANCE (
  9                    analytics_instance_id => target_oac_ocid,
 10                    region                => target_oac_region,
 11                    credential_name       => 'OCI$RESOURCE_PRINCIPAL'
 12  	);
 13  END;
 14  /

プロシージャが作成されました。

SQL >

5.作成したプロシージャのテスト実行

プロシージャ「start_oac_instance」を実行します。

SQL> exec start_oac_instance

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

SQL>

コンソールで対象のAnalytics Cloudインスタンスの状態を確認します。
状態が「非アクティブ」から「更新中」になりました。
スクリーンショット 2023-03-08 23.05.02.png
少し待つと、状態が「アクティブ」になり、Analytics Cloudのインスタンスが起動しました。
スクリーンショット 2023-03-08 23.24.31.png

次にプロシージャ「stop_oac_instance」を実行します。

SQL> exec stop_oac_instance

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

SQL> 

コンソールで対象のAnalytics Cloudインスタンスの状態を確認します。
状態が「アクティブ」から「更新中」になりました。
スクリーンショット 2023-03-08 23.28.11.png
少し待つと、状態が「非アクティブ」になり、Analytics Cloudのインスタンスが停止しました。
スクリーンショット 2023-03-08 23.40.45.png

6.Analytics Cloudインスタンスを起動するプロシージャの自動実行の設定

毎日朝8時にプロシージャ「start_oac_instance」を実行してAnalytics Cloudインスタンスを起動するジョブ「START_OAC_INSTANCE_JOB」を作成します。

ジョブ START_OAC_INSTANCE_JOB
SQL> BEGIN
  2    DBMS_SCHEDULER.CREATE_JOB (
  3      job_name            => 'START_OAC_INSTANCE_JOB', -- ジョブの名前
  4      job_type            => 'STORED_PROCEDURE', -- ジョブのタイプ
  5      job_action          => 'ADMIN.START_OAC_INSTANCE', --実行するプロシージャ名
  6      start_date          => TO_TIMESTAMP_TZ('2023-03-09 08:00:00 +9:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),  --初回実行のタイムスタンプ
  7      repeat_interval     => 'FREQ=DAILY;INTERVAL=1', -- ジョブの実行頻度
  8      auto_drop           => FALSE); -- ジョブの実行後の自動削除
  9  END;
 10  /

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

SQL> 

ジョブ「START_OAC_INSTANCE_JOB」を有効化します。

SQL> EXEC DBMS_SCHEDULER.ENABLE('START_OAC_INSTANCE_JOB');    

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

SQL> 

7.Analytics Cloudインスタンスを停止するプロシージャの自動実行の設定

毎日18時にプロシージャ「stop_oac_instance」を実行してAnalytics Cloudインスタンスを停止するジョブ「STOP_OAC_INSTANCE_JOB」を作成します。

ジョブ STOP_OAC_INSTANCE_JOB
SQL> BEGIN
  2    DBMS_SCHEDULER.CREATE_JOB (
  3      job_name            => 'STOP_OAC_INSTANCE_JOB', -- ジョブの名前
  4      job_type            => 'STORED_PROCEDURE', -- ジョブのタイプ
  5      job_action          => 'ADMIN.STOP_OAC_INSTANCE', --実行するプロシージャ名
  6      start_date          => TO_TIMESTAMP_TZ('2023-03-09 18:00:00 +9:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),  --初回実行のタイムスタンプ
  7      repeat_interval     => 'FREQ=DAILY;INTERVAL=1', -- ジョブの実行頻度
  8      auto_drop           => FALSE); -- ジョブの実行後の自動削除
  9  END;
 10  /

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

SQL> 

ジョブ「STOP_OAC_INSTANCE_JOB」を有効化します。

SQL> EXEC DBMS_SCHEDULER.ENABLE('STOP_OAC_INSTANCE_JOB');

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

SQL> 

8.作成したジョブの確認

作成したジョブを確認します。

SQL> SELECT job_name, enabled, next_run_date
  2  FROM user_scheduler_jobs
  3  WHERE job_name IN ('START_OAC_INSTANCE_JOB','STOP_OAC_INSTANCE_JOB');

JOB_NAME
--------------------------------------------------------------------------------
ENABL
-----
NEXT_RUN_DATE
---------------------------------------------------------------------------
START_OAC_INSTANCE_JOB
TRUE
23-03-09 08:00:00.000000 +09:00

STOP_OAC_INSTANCE_JOB
TRUE
23-03-09 18:00:00.000000 +09:00


SQL>

以上で、毎日決まった時間に行うOracle Analytics Instanceの起動/停止をAutonomous Databaseを使って実現できました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?