Database Support Blog

  • Oracle Cloud
2021.01.21

REST APIを利用したOCI DB Systemの起動・停止方法

通常、Oracle Cloud Infrastructure (以下、OCI) のDatabase Cloud Service(以下、DB System)の起動・停止・状態の確認などの管理操作を行う際、Oracle Cloud管理コンソールまたはOCI CLIを利用します。また、Oracle CloudではOCI DB Systemの管理操作を行うREST APIを利用したbashスクリプト(OCI-CURL)も提供しています。
OCI-CURLを利用することでOCI DB Systemの管理操作を自動で行う スクリプトを簡単に作成できます。

OCI DB Systemだけでなく、OCIで提供されるほとんどのサービスはOCI-CURLを利用して管理操作ができます。
この記事では、OCI DB Systemの管理操作に焦点を絞ってご紹介します。


※記事の中で、利用するREST APIのドキュメント上での記載個所をご紹介します。
  REST APIのドキュメントは、以下のURLよりご確認ください。
  [REST APIの詳細情報を記載したドキュメントURL]
     https://docs.cloud.oracle.com/en-us/iaas/api/#/


OCI-CURL の初期設定

まずは、Linux OSのマシン上でOCI-CURLを設定する手順をご紹介します。

1.以下のURLへアクセスし、表示されるOCI-CURLのサンプルスクリプトの内容を全てコピーします。
 [サンプルスクリプトURL]
 https://docs.cloud.oracle.com/iaas/Content/Resources/Assets/signing_sample_bash.txt

2.OCI-CURLを実行するLinux OSマシン上で新規スクリプト「oci-curl.sh」を作成し、”1”でコピーした内容を
 貼り付けます。


 [opc@oms1 ~]$ mkdir restapitest  [opc@oms1 ~]$_cd restapitest  [opc@oms1 restapitest]$ vi oci-curl.sh

3.作成したスクリプトの以下の設定を環境に合わせて編集し、保存します。
 編集対象項目と各項目の確認方法を以下に記載します。

  ※編集項目※
   tenancyId:テナンシOCID
   authUserId:Oracle Cloudへの接続に利用する認証ユーザーのOCID
   keyFingerprint:RSAキーのフィンガープリント
   privateKeyPath:(操作対象へ接続するための)秘密鍵のファイル名

  [確認方法]
  a.テナンシOCID:
   Oracle Cloud管理コンソールより、トップページで画面の右上にある「プロファイル」アイコンより、
   ”テナンシ:<クラウドアカウント名>”を選択します。
   テナンシ詳細ページが展開されたら、OCIDの横にある”Copy(コピー)”を選択します。
   ’oci-curl.sh’のtenancyId の値をコピーした値に更新します。

  b.認証ユーザのOCID:
   Oracle Cloud管理コンソールより、トップページで画面の右上にある「プロファイル」アイコン
   より、”ユーザー名“を選択します。
   「ユーザー詳細」ページが展開されたら、OCIDの横にある“Copy(コピー)”を選択します。
   ’oci-curl.sh’のauthUserId の値をコピーした値に更新します。

  c.秘密鍵のファイル名:
   設定前に、秘密鍵をまだ生成していない場合はPEM形式で生成しておきましょう。
   秘密鍵の対となる公開鍵の情報も必要となるため、公開鍵も併せて生成します。
   ■Linux OSマシンにて「opc」ユーザーとして秘密鍵と公開鍵を生成する方法
    以下のコマンドをopcユーザにて実行します。
    
    [秘密鍵作成コマンド]
    openssl genrsa -out oci_api_key.pem 2048
    ※上述ののコマンドは、パスフレーズなしで秘密鍵を生成します。
      パスフレーズを設定する必要がある場合は、OCIのドキュメントをご参照ください。
     参考:https://docs.cloud.oracle.com/ja-jp/iaas/Content/GSG/Tasks/creatingkeys.htm
        https://docs.cloud.oracle.com/ja-jp/iaas/Content/API/Concepts/apisigningkey.htm
   
    <実行例>


 [opc@oms1 ~]$ openssl genrsa -out oci_api_key.pem 2048
 Generating RSA private key, 2048 bit long modulus
 ......................... ....... +++
 ... +++
 e is 65537 (0x10001)

     [公開鍵作成コマンド]
     openssl rsa -pubout -in oci_api_key.pem -out oci_api_key_public.pem
     ※上述のコマンドは、パスフレーズなしで秘密鍵を生成します。
       パスフレーズを設定する必要がある場合は、OCIのドキュメントをご参照ください。
    
     <実行例>


 [opc@oms1 ~]$ openssl rsa -pubout -in oci_api_key.pem -out oci_api_key_public.pem
 writing RSA Key

      秘密鍵ファイル名とファイルの配置先を記録します。
      ’oci-curl.sh’のprivateKeyPathの値を記録した値に更新します。

    d.RSAキーのフィンガープリント:
     RSAキーのフィンガープリントを生成するためには、手順3cで生成した公開鍵の内容をコピー
     します。

     <実行例>


 [opc@oms1 ~]$ cat oci_ap i _key_public.pem
 -----BEGIN PUBLIC KEY-----
 MUIBI LANBgkqhkiG9w0BAQEFAAOCAQ8AMI IBCgKCAQEA4GES6qW4fm2Bru/zoylz

     OCIコンソールに移動し、手順3bで説明されている「ユーザーの詳細」ページに移動して、左側の
     [リソース]セクションの下にある[API Keys(APIキー)]を選択後、“AddPublic Key(公開鍵の追加)“
     を選択します。
     公開キーの追加ページが展開されたら、”PASTE PUBLIC KEYS(公開鍵の貼り付け)”を選択します。

      コピーしておいた公開鍵の情報を貼り付け、“Add(追加)”を選択します。

      [API Keys(APIキー)]に追加した公開鍵のフィンガープリントが表示されます。

      この値をコピーし、’oci-curl.sh’のauthUserId の値をコピーした値に更新します。

  4.oci-curl.shへ実行権限を付与します。
   [コマンド例]
   chmod 700 oci-curl.sh
   oci-curl.shを作成することで、OCI-CURLの設定は完了です。

OCI DB SystemをOCI-CURL.shを利用して起動する

OCI DB Systemを起動するためには、”startDBnode.sh”を作成します。
シェルスクリプトの内容は以下の内容を含めて作成します。
・“OCI-CURLの設定”で作成した、テナンシー等の主要な情報を含むoci-curl.shを実行
・DB Nodeを起動するために必要な情報をシェルスクリプト内の関数(oci-curl関数)に設定する。
※DB Systemの起動・停止は、DB Systemを構成するDB Nodeに対して実行します。
設定する関数の設定値について、以下に紹介します。
  1.Database endpoint :DB Systemが存在するリージョンを示すDatabase Service用のエンドポイント
   を確認します。

   REST APIの詳細情報を記載したドキュメントURLのページをスクロールし、左側の項目を以下の順で選択
   します。パラメータの設定情報が確認できます。
   “Database Service API” -> “Database Service API Home”

   東京リージョンを利用している場合、Database endpointは“database.ap-tokyo-1.oraclecloud.com”
   となります。

 2.Method of call :実行する処理内容を指定します。 ここでは、DB Nodeに対する処理を指定します。
  処理内容は、GET,DELETE,POST,PUTのいずれかを指定します。ここでは、起動処理を実行するため、
   “POST”を設定します。

 3.JSON file:リクエスト本文として利用するための空のJSONファイルを作成します。
  ここでは、 “empty.json”という名前で作成します。
  JSONファイルで実行するコンテンツは中括弧{}で示します。DB Nodeを起動/停止するリクエスト
  の場合、構成パラメータの設定を行う必要はありません。そのため、今回の処理では空のJSON
  ファイルを作成します。
  ※DB Systemの作成操作を行う場合等は、JSONファイルのコンテンツとして構成パラメーターを
   記載します。


 [opc@oms1 restapitest]$ cat empty.json
 {
 }

 4.API Version & DB Node & Action:使用するAPIのバージョンと操作対象のAPI(dbNodes)および
  実行する処理を指定します。

  [APIバージョンと操作対象の設定]
   /20160918/dbNodes/$1
   ※上述は、利用するAPIのバージョンが20160918の例です。全てのOCI APIには同じバージョンがあり
    ます。

   この情報に、DBノードで実行する必要があるアクションのタイプを指定するクエリパラメーターを追加
   する必要もあります。 DBノードを開始するので、“?action=start”を追加します。

   よって、以下の引数をパラメータに設定します。

  [oci-curlに指定するパラメータ設定]
   /20160918/dbNodes/$1? action=start
   REST APIの詳細情報を記載したドキュメントURLのページをスクロールし、左側の項目を以下の順で
   選択します。パラメータの設定情報が確認できます。
   “Database Service API” -> “DbNode” ->”DbNodeAction”

 1.~4.で確認した情報を用いて作成した“startDBnode.sh”の内容は以下のとおりです。


 #!/bin/bash
 . ./oci-curl.sh
 oci-curl database.ap-tokyo-1.oraclecloud.com post ./empty.json/20160918/dbNodes/$1?action=start

 “startDBnode.sh”へ実行権限を付与します。
 chmod 700 startDBnode.sh


 [opc@oms1 restapitest]$ chmod 700 startDBnode.sh

 起動する対象のDB NodeのOCIDを引数に指定して、スクリプトを実行します。
 [DB NodeのOCIDの確認方法]
 処理対象のDB Nodeを識別するためのOCIDは、Oracle Cloud管理コンソールより以下の手順で
 確認します。
 “Bare Metal, VM and Exadata” -> (操作対象の)”DBsystem” -> (DB System詳細ページの
 リソース項目) “Nodes” 
 “Nodes”の右端にあるアクションメニュー (3つの点)より、”Copy OCID(OCIDのコピー)”を
 選択します。

 コピーしたDBノードのOCIDを利用して、“startDBnode.sh”を実行します。
 JSONの出力で “lifecycleState(状態)”: “STARTING(起動中)”となったことが確認できます。
 
 <実行例>


 [opcloms1 restapitest]$ ./startDBnode.sh ocid1.dbnode.oc1.ap-tokyo-1.ab
 {
 "additional Details" : null,
 "backupIpId": null,
 "backupVnic2Id" : null,
 "backupVnicId" : null,
 "dbSystemld" : "ocid1.dbsystem.oc1.ap-tokyo-1.ab
 "faultDomain" : "FAULT-DOMAIN-1",
 "hostIpId" : null,
 "hostname" : "testdblaarthi,
 "id" : "ocid1.dbnode.oc1.ap-tokyo-1.ab
 "LifecycleState" : " STARTING",
 "maintenanceType": null,
 "softwareStorageSizeInGB" : 200,
 "timeCreated" : "2020-07-30T07:42:58.967Z”,
 "timeMaintenanceWindowEnd": null,
 "timeMaintenanceWindowStart": null,
 "vnic2Id": null,
 "vnicId" : "ocidi.vnic.oc1.ap
}

スクリプト実行後、Oracle Cloud管理コンソールを確認するとDB Nodeの状態が”STARTING”となっていることを確認できます。

しばらくすると、状態は “Available(実行中)”に変わります。

OCI DB Systemの状態をOCI-CURL.shを利用して取得する

OCI DB Systemの状態を確認する新しいスクリプト “getstatusDBnode.sh” を作成します。
スクリプトの内容はは“startDBnode.sh” とほとんど同じです。

oci-curl関数の2番目のパラメータで指定する実行する処理内容は”GET”を設定します。
GETの場合は、起動の際のように3番目のパラメータとして空のJSONファイルを指定する必要がありません。

4番目のパラメータとして指定するAPIのバージョンと操作対象のDB Nodeの情報では、以下の設定を利用します。

[APIバージョンと操作対象の設定]
/20160918/dbNodes/$1

$1には特定のDB NodeのOCIDを指定するため、actionパラメータは必要ありません。

APIの詳細情報が掲載されたURLのページをスクロールし、左側の項目を以下の順で選択します。パラメータの設定情報が確認できます。
“Database Service API” -> “DbNode” ->”GetDbNode

“getstatusDBnode.sh”の内容は以下のとおりです。


 #!/bin/bash
 . ./oci-curl.sh
 oci-curl database.ap-tokyo-1.oraclecloud.com get /20160918/dbNodes/$1

getstatusDBnode.sh”へ実行権限を付与します。

chmod 700 getstatusDBnode.sh

確認する対象のDB NodeのOCIDを引数に指定して、スクリプトを実行します。
JSONの出力で “lifecycleState(状態)”: “AVAILABLE(実行中)”であることが確認できます。


 [opc@oms1 restapitest]$ ./getstatusDBnode.sh ocid1.dbnode.oc1.ap-tokyo-1.ab
 {"additional Details":null,"backupIpId":null,"backupVnic21d":null,"backupVnicld":null, "dbSystemId":"ocid1,XXXXXXXXXXXXXXXXXXXXXXX,faultDomain":"FAULT-DOMAIN-1", "hostlpld":null, "hostname" : "testdblaartXXXXXXXXXXXXXXXXXXXXXXXXX,"lifecycleState":"style="color:red">AVAILABLE", "maintenanceType" :null, "Soft:42:58.9677",timeMaintenanceWindowEnd":null,"timeMaintenanceWindowStart":null,"vnic21d":null,"vnicld": "qvgqph7b14y5qrccgcmimdtee4osz4rya" } [opc@oms1 restapitest]$

OCI DB SystemをOCI-CURL.shを利用して停止する

OCI DB Systemを起動するためには、”stopDBnode.sh”を作成します。
スクリプトの内容は“startDBnode.sh” と同様ですが、actionパラメータの値を“STOP”とする
必要があります。

“stopDBnode.sh”の内容は以下のとおりです。


 #!/bin/bash
 . ./oci-curl.sh
 loci-curl database.ap-tokyo-1.oraclecloud.com post ./empty.json /20160918/dbNodes/$1?action=stop

stopDBnode.sh”に実行権限を付与します。

chmod 700 stopDBnode.sh

停止する対象のDB NodeのOCIDを引数に指定して、スクリプトを実行します。
DBの“lifecycleState(状態)”:”STOPPING(停止中)”となり、しばらくすると停止します。


 [opc@oms1 restapitest]$ ./stopDBnode.sh ocid1.dbnode.oc1.ap-tokyo-1.ab
  "additional Details" : null,
  "backupIpld" : null,
  "backupVnic2ld": null,
  "backupVnicld" : null,
  "dbSystemld" : "ocid1.dbsystem.oc1.ap-tokyo-1.ab
  "faultDomain" : "FAULT-DOMAIN-1",
  "hostIpld": null,
  "hostname" : "testdblaarthi",
  "id" : "ocid1.dbnode.oc1.ap-tokyo-1.ab
  "lifecycleState" : " STOPPING",
  "maintenanceType": null,
  "softwareStorageSizeInGB": 200,
  "timeCreated" : "2020-07-30T07:42:58.967Z”,
  "timella intenanceWindowEnd": null,
  "timeMaintenanceWindowStart": null,
  "vnic2Id": null,
  "vnicld" : "ocidl.vnic.oc1.ap-tokyo-1.ab
 [opcloms1 restapitest]$

スクリプト実行後、Oracle Cloud管理コンソールを確認するとDB Nodeの状態が”STOPPING”となっていることを確認できます。

補足情報:Autonomous Databasesの自動管理操作

DB Systemの操作用に作成したスクリプトに少し変更を加えるだけで、Autonomous Databaseの管理操作を行うためのスクリプトが作成できます。

[Autonomous Databaseの起動]
APIの詳細情報が掲載されたURLのページをスクロールし、左側の項目を以下の順で選択します。パラメータの設定情報が確認できます。

“Database Service API” -> “AutonomousDatabase” ->” StartAutonomousDatabase”

Autonomous Databaseを起動するスクリプトの内容は以下のとおりです。

 #!/bin/bash
 . ./oci-curl.sh
 oci-curl database.ap-tokyo-1.oraclecloud.com POST ./empty.json /20160918/autonomous Databases/$1/actions/start

[Autonomous Databaseの状態確認]
DB Systemと同様にAutonomous DatabaseのOCIDを引数に指定確認することで、スクリプトを実行することで、データベースが起動しているかを確認することが可能です。

APIの詳細情報が掲載されたURLのページをスクロールし、左側の項目を以下の順で選択します。パラメータの設定情報が確認できます。

“Database Service API” -> “AutonomousDatabase” ->” GetAutonomousDatabase”

Autonomous Databaseの状態を確認するスクリプトの内容は以下のとおりです。

 #!/bin/bash
 ../oci-curl.sh
 oci -curl database.ap-tokyo-1.oraclecloud.com get /20160918/autonomousDatabases $1

[Autonomous Databaseの停止]
APIの詳細情報が掲載されたURLのページをスクロールし、左側の項目を以下の順で選択します。パラメータの設定情報が確認できます。
“Database Service API” -> “AutonomousDatabase” ->” StopAutonomousDatabase”

Autonomous Databaseを停止するスクリプトの内容は以下のとおりです。

 #!/bin/bash
 ../oci-curl.sh
 oci-curl database.ap-tokyo-1.oraclecloud.com POST ./empty.json /20160918/autonomousDatabases/$1/actions/ stop

執筆者情報

Aarthi Mudhalvan プロフィール画像

2019年5月よりアシストでデータベースエンジニア、コンサルタントとして勤務

所有資格:
・Oracl Cloud Infrastructure 2018 Architect Associate
・AWS Certified Solution Architect Associate

アシスト データベース ウェビナー


■商標に関して
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
2021.09.08

再作成不要!Oracle CloudのDBシステムのタイム・ゾーン変更手順

Oracle CloudでDBシステムを利用するとUTCがデフォルトのタイム・ゾーンとして選択され作成・起動されます。オラクル社はUTCの使用を推奨していますが、お客様の管理業務やアプリケーション観点からUTCを変更する必要もあるかと思います。今回はタイム・ゾーンの変更方法をご紹介します。

  • Oracle Cloud
2021.08.27

クラウド関連ウェビナー開催報告 『ビジネスに合わせた伸縮可能な基盤とは?』

「ビジネスに合わせた伸縮可能な基盤とは? ~ クラウドファーストを推進したお客様事例」と題して基幹システムをOracle Exadata Cloud@CustomerとOracle Exadata Cloud Serviceのハイブリッド構成へ移行されたパーソルキャリア様にご登壇いただきました。イベントレポートをお届けします。

  • Oracle Cloud
2021.08.02

【Oracle Cloud Infrastructure】事前用意で解決スピードアップ!サポート問い合わせ前に揃えておきたい情報

OCIのお問い合わせをいただく前にあらかじめ環境を識別するための情報をご用意いただくことで、サポートの初動対応がスムーズになり、解決スピードアップにつながります。円滑にサポートを受けていただくためのポイントをご紹介します。

ページの先頭へ戻る