◆取り上げているケース
下記のような環境での、OracleDBの停止起動について記載しています。
・OracleCloudのComputeを使用してWindowsServerを構築
・上記で構築したWindowsServer環境にOracleDatabaseをインストール
・OracleDatabaseをマルチテナントアーキテクチャ(CDB/PDBの形式)で運用する
※マルチテナントの場合、起動時の操作については特に注意が必要です
◆前段
OracleCloudでOracleDatabaseを使用する場合、手軽に利用できるようにするには、
・ADB(ADW/ATP)を利用する
・DBシステム(DBCS)を利用する
のいずれかになると思います。
ADBの場合、DB管理などはOracleCloudにお任せという状態になるので、DBを使用するだけならお手軽です。
DBCSの場合は、ADBよりは安価に利用できますが、LinuxサーバにインストールされたDBを使用することになります。Linuxは一般には馴染みが薄いため、サーバ利用という点ではハードルが上がります。
上記の理由から、
・UIがWindows-PCに近い、WindowsServerを構築
・構築したWindowsServer環境にOracleDatabaseをインストール
という、環境構成が求められる場合があります。
このような環境が求められた場合OracleCloudでは、
・Computeで、OSがWindowsServerのサーバを立てることで環境を用意。
・上記サーバに、個別でOracleDatabaseを用意してインストールする。
このような操作で環境構築を行うことになります。
尚、インストールするOracleDatabaseのライセンスは、OracleCloudの契約には含まれないので、注意が必要です。
このような環境の構築方法については、別途記載するものとし、
本記事では、このようなサーバを起動停止する場合の注意点を記載します。
◆サーバの起動停止
サーバ自体の起動停止は、他のComputeサーバと同じ手順で問題ありません。
手法としては、
・OCI-Webコンソール上で起動停止のボタンをクリックして操作
・OCI-CLIを使用して別環境から起動停止のコマンドを発行
の2点となります。
あえて気にする点を挙げるとすれば、
『WindowsServerは、即時停止とはならない』
という点です。
安全にOSが停止された状態でサーバを停止するようにするため、停止操作後に15分の待機時間が発生します。
これを回避するには、
・サーバ停止操作前に、手動でWindowsをシャットダウンしておく
・サーバ停止操作時に、強制的に停止するオプション操作を行う
という2つの方法があります。
強制停止は推奨される方法ではないので、事前に手動でWindowsをシャットダウンする方法がいいと思います。
◆OracleDBの起動停止
・OracleDBの停止
サーバが停止されれば、OracleDBも停止されます。
但、この場合の停止は強制停止に近いものになるので、OracleDBの停止操作による停止を行うことをお勧めします。
==OracleDBのシャットダウンコマンド==
SQL > SHUTDOWN IMMEDIATE
・OracleDBの起動
デフォルトでは、サーバ起動時に自動でOracleDBも起動します。
但、自動起動するのはCDBのみという点に注意してください。
PDBについては、個別で起動する必要があります。
OracleDBのサービスは起動しているのに、データが格納されているテーブルにアクセスできないような場合は、
CDBだけ起動していてPDBが起動していない状態になっていることがあります。
==OracleDBのPDB起動コマンド==
SQLPLUS / as SYSDBA
SQL> show pdbs
SQL> alter pluggable database all open;
OracleDBの起動停止を頻繁に行うことは少ない場合、
都度コマンドを実行する運用でも問題ないでしょう。
しかし、逆に実行頻度が少ないため、PDBが未起動の状態になっていることに気が付きにくいこともあります。
根本的な解決方法として、
OracleDB起動時にPDBも一緒に起動する方法があります。
==OracleDBのPDB自動起動設定==
※設定を行う場合は、PDBが起動した状態にある必要があります。
SQL> show pdbs
SQL> alter pluggable database all save state;
最後に
先にも書きましたが、サーバ起動後PDB未起動に気が付かず、復旧に時間が掛かったことがあります。
可能であれば、PDBも自動起動するように対応することをお勧めします。