初めに
時はお金なり。土日祝など、長時間にわたりOCI(Oracle Cloud Infrastructure)インスタンスを使用しない場合は、コストを節約するために停止することを強くお勧めします。
インスタンスの停止忘れは、お金を落とすのと同じ!
料金比較
1ヶ月の稼働日数を22日と仮定すると、毎日定時(8:30から18:30まで)に起動・停止させることで、1ヶ月で合計500時間 (720 - 22*10)を節約できます。つまり、OCPU per hourに関連する費用は、停止なしの場合から69.4%(約7割)も節約できることになります。これは無視できない大きな差異です。
実装方法の比較
OCIにて、インスタンスを自動的に起動・停止させたい場合、可能ですか?可能であれば、その実現方法について質問がある方に対し、解決方法を紹介したいと思います。
回答はまず可能です。インスタンスの種類によって実装方法が異なります。この記事では主に、OCI CLIを使用してインスタンスを起動および停止する方法を紹介します。
| No. | OCI サービス | ネイティブ スケジュール機能 | CLI/APIで 実現 | リソース スケジューラ |
|---|---|---|---|---|
| 1 | Autonomous AI Database | ✅ | 可能 | 対応✅ |
| 2 | Compute | ✘ | 可能 | 対応✅ (Standardのみ) |
| 3 | Oracle Base Database | ✘ | 可能 | 2025/4/29より 対応対象外になった |
| 4 | MySQL DB Service | ✘ | 可能 | ✘ |
| 5 | Oracle Analytics Cloud | ✘ | 可能 | ✘ |
| 6 | OCI Data Integration | ✘ | 可能 | ✘ |
※、Always Free ADBは、ネイティブの起動・停止スケジュール機能を含まない。
2024年5月21日に、OCIリソース・スケジューラがリリースされ、Standard Compute/ADBの起動および停止のスケジュール設定がより簡単になります。詳細について、次の記事をご参考ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定
1. Autonomous AI Database
実現方法-1
OCIコンソールより起動・停止のスケジュールを設定する。
注意点:UTC時間となる。(JSTへの換算を忘れずに)
ADBの詳細画面 →「他のアクション」 →「自動開始/停止スケジュール」
次は、毎日のJST 18時 (UTC 9時)に自動停止する例です。
設定後、次のように、ADBの詳細画面で確認できます。
メリット
- OCIコンソールから簡単に設定可能。
制限事項
- 時間単位でしかスケジュール設定ができない。
- UTC時刻での設定となるため、タイムゾーンの変換が必要。
注意点
1) OCIコンソールのバグ
OCIコンソール(従来のUI)で以下のように表示されています。毎日が emタグ で囲まれています。明らかにこれはバグです。新UIの表示は正常です。

2) UTCからJSTへの変換について
例:月曜日 午前8:00(JST)に自動起動させたい場合、コンソール上では前日の日曜日 23:00(UTC)に設定する必要があります。
実現方法-2

OCI CLIで起動・停止用スクリプトを作成。
- ADBの起動:
- oci db autonomous-database start --autonomous-database-id [ADB_OCID]
- ADBの停止:
- oci db autonomous-database stop --autonomous-database-id [ADB_OCID]
メリット
- 分単位でのスケジュール設定が可能。
- ローカルタイムゾーンでの設定が可能。
- この方法は、ADB 以外のリソースにも適用可能。
制限事項
- スクリプトの作成と、手動でのスケジューラ(cronなど)の設定が必要。
- 実行する端末が必要(例:Always Freeのインスタンスを活用)。
実現方法-3
詳細については次の記事をご参照ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定
メリット
- OCIコンソール上で簡単に設定でき、スクリプトの作成や実行端末は不要。
- 分単位でのスケジュール設定が可能。
制限事項
- UTC時刻での設定となるため、タイムゾーンの変換が必要。
2. Computeインスタンス
APIでPython、Javaなどの言語でも実現可能ですが、OCI CLIはおすすめです。
ステップ
- Step-1) 管理サーバにOCI CLIをインストールして、構成ファイルを設定する。
- Step-2) 起動・停止用のスクリプトを作成する。(次は参考例です。実際の運用環境には、状態をチェックする処理を追加してください。)
- インスタンスの起動:
oci compute instance action --action "START" --instance-id [Instance_OCID] - インスタンスの停止:
oci compute instance action --action "SOFTSTOP" --instance-id [Instance_OCID]
- インスタンスの起動:
- Step-3) 管理サーバから、定時に起動・停止用のスクリプトを実行する。
- Linux OSの場合:crontabを利用
- Windows OSの場合、Task Schedulerを利用
Linuxの実施例: 毎日18時(OSのタイムゾーン)、自動停止用スクリプトを呼び出す。
[opc@linux8 ~]$ crontab -l
00 18 * * * /home/opc/shell/compute_auto_stop.sh- --action 引数:"SOFT"なしで"STOP"を指定できますが、"SOFTSTOP"の使用を推奨します。
- 管理用サーバは24時間稼働であり、料金を節約するため、低スペックでもよい。OCI Always Free Tier (Linuxのみ)でも動ける。
- 管理用サーバに、OCI CLIのインストールとセットアッが必要。インストール方法については、この記事(OCI CLIの実務で使えるコマンド例)をご参照ください。
- 起動・停止対象インスタンスにタグをつけて、対象だけを起動・停止させるのは、よく利用されるケースです。
3. Oracle Base Database
これ以降の実現方法は、上記のComputeインスタンスと同様
- DBノードの起動:oci db node start --db-node-id [DB_Node_OCID]
- DBノードの停止:oci db node stop --db-node-id [DB_Node_OCID]
4. MySQL DB Service
- DB Systemの起動:
oci mysql db-system start --db-system-id [DB_System_OCID]
- DB Systemの停止:
oci mysql db-system stop --shutdown-type FAST|IMMEDIATE|SLOW --db-system-id [DB_System_OCID]
5. Oracle Analytics Cloud
通常のインスタンスでは「起動・停止(Start/Stop)」という用語が使われています、OACインスタンスの場合、OCIコンソールのUIには「一時停止・再開(Pause/Resume)」と表記されます。ただし、CLIコマンドでは他のインスタンスと同様に「Start」「Stop」というコマンドが使われていますので、ご注意ください。
- OACの一時停止:
oci analytics analytics-instance stop --analytics-instance-id [OAC_Instance_OCID]
- OACの再開:
oci analytics analytics-instance start --analytics-instance-id [OAC_Instance_OCID]
6. OCI Data Integration
- ワークスペースの起動:
oci data-integration workspace start --workspace-id [Workspace_OCID]
- ワークスペースの停止:
oci data-integration workspace stop --workspace-id [Workspace_OCID]
使わないときにインスタンスを起動しっぱなしにするのはもったいないです。
楽しくお金を節約しましょう。Happy money saving!
以上
参考資料
MOS (My Oracle Support)
OCI Compute - How to Automate Stop and Start of OCI Instances (Doc ID 2876796.1)
OCI Compute - How to Schedule Start / Stop of an OCI Virtual Machine (Doc ID 2853159.1)
MOSドキュメントの記載内容の抜粋:
OCI CLI コマンド
Docs » db » autonomous-database
Docs » compute » instance
Docs » db » node
Docs » mysql » db-system
Docs » analytics » analytics-instance
Docs » data-integration » workspace
OCI ドキュメント
Schedule Start and Stop Times for an Autonomous Database Instance
インスタンスの停止、起動または再起動