シャットダウンスクリプト

お客さんのところのサーバで、設定した時間にOSをシャットダウン、サーバ起動するようにしていたのだけれど、OSシャットダウン時に実行していたOracleシャットダウン(インスタンスの停止)のバッチがうまく動作していないらしい。どうして動作しないのか分からないので、「とりあえずOracleシャットダウンはしないで、OSシャットダウンだけするようにしてきましたー」と後輩が恐ろしいこと(データベースが壊れたらどうするんだよ!)を言うので、じゃあ、OSシャットダウンのときに「シャットダウンスクリプトOracleシャットダウンすればいいじゃん!」と教えてあげました。
Windows XP Pro、Windows 2000 でできます。たぶんWindows Server 2003でもできるんじゃないかな。以下、XP Proでの設定手順。

  1. [スタート]→[ファイル名を指定して実行]→"mmc"と入力して実行→「コンソール1」が開く
  2. [ファイル]→[スナップインの追加と削除]→「スナップインの追加と削除」ウィンドウで[追加]ボタン押下→「スタンドアロン スナップインの追加]」で"グループポリシー オブジェクト エディタ"を選んで[追加]
  3. 「グループポリシー ウィザードの開始」が表示されるので、[グループポリシーオブジェクト]は"ローカルコンピュータ"のままで[完了]ボタンを押下。
  4. スタンドアロン スナップインの追加]」画面を閉じる。「スナップインの追加と削除」画面で「OK」ボタン。
  5. 「コンソール1」に「ローカルコンピュータポリシー」が追加される。
  6. [コンソールルート]→[ローカルコンピュータポリシー]→[コンピュータの構成]→[Windowsの設定]→[スクリプト(スタートアップ/シャットダウン)]
  7. "シャットダウン"を選択して「シャットダウンのプロパティ」を開く。
  8. [追加]ボタンを押し、スクリプト(バッチ等)を指定し、必要があれば、そのスクリプトに渡すパラメータを設定する。

これでOSシャットダウンの時に、指定したスクリプトが実行されます。ただし、画面でスクリプトが動いているところを確認はできません。「シャットダウンスクリプトを実行しています・・・」ぐらいのメッセージしかでません。なので、スクリプトが正常な動作をしているかどうか見極めるには、スクリプトに何かしらの工夫が必要になると思われます。

Oracleインスタンス停止については、id:Tensor:20090326も参考にしてみてください。