- ベストアンサー
Windows2000でのOSシャットダウンによるインスタンスリカバリ
現在、Oracle9iをWindows2000にインストールして使用しているのですが、Windowsをシャットダウンすることにより、再起動時にインスタンスリカバリが発生しています。 Windowsのプラットフォームガイドを参考に、以下の値をレジストリに登録したのですが、やはりうまくいきません。(アラートログに「Beginning crash recovery of 1 threads」等と記録されているのでそのように判断しました。) ORA_SHUTDOWN:TRUE ORA_SHUTDOWN_TIMEOUT:60 ORA_SID_AUTOSTART:TRUE ORA_SID_SHUTDOWN:TRUE ORA_SID_SHUTDOWN_TIMEOUT:60 ORA_SID_SHUTDOWNTYPE:i ちなみに、管理ツールの「サービス」でOracleServiceSIDを手動で停止した後に再起動した場合は上記のログが出ないため、インスタンスが正しく終了されているようです。 Windowsの終了時にインスタンスを正しく終了させるにはどのようにすればよいのでしょうか? ご存知の方、宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ログオフスクリプトだけでなく、 シャットダウンスクリプトもありますよ。 これでインスタンスを落としている顧客も実際にいました。 設定方法は、こちらを。 http://www.okweb.ne.jp/kotaeru.php3?q=476205
その他の回答 (2)
- msystem
- ベストアンサー率42% (79/186)
>例えばシャットダウン時に自動的にoradim -shutdown のバッチファイルを実行する等)自動停止の仕組みにしたいのですが、やはり無理でしょうか? 私もいちどそのようなスクリプトを書こうとしてめんどくさくなってやめたことがあります。BATファイルで自動停止は勿論できるのですが、Windowsのログオフスクリプトでちゃんと動くかどうかを確認していません。(Windowsのシャットダウンで期待するとおりにログオフスクリプトが動くかどうかが不明) 後は、スクリプト内でWindowsを終了するコードを記述し、Windowsの終了を必ずそのスクリプトで行うという運用規則でするしかないかもしれません。そうなると、少なくともVBScriptですね。 いずれにしても、チャレンジしていないのでアドバイスできません。 私は結局、Oracleの稼動しているコンピュータの電源を切るときは、BATファイルを実行してからという運用規則で対応しています。 >マニュアルは結構調べたのですが、 私のほうでも調べたのですが、載ってないですね。もしかしたら、Oracleの講習で聞いたのかもしれません。あやふやで申し訳ありません。
お礼
やはり難しいということですね。 自動でシャットダウン時に停止する仕組みがないとすると、普通はシャットダウンの際には手動でOracleを停止するようにしているということですよね。(Oracle for Windows2000 を運用している所はたくさんあると思うのですが) 少々面倒ですが、当面の間はシャットダウン前に msystemさんのシャットダウンスクリプト方式で止めるようにしようと思います。 どうもありがとうございました。
- msystem
- ベストアンサー率42% (79/186)
はっきりとは覚えていないのですが、レジストリに設定したものは、サービスの停止のときにしか効かなかったように記憶しています。(8iでは)9iから変わっていたらすいません。 そのため、Windows終了時はabortで終了してしまうため、インスタンスリカバリが発生します。OracleのDBがあるコンピュータをシャットダウンしたいときは、必ず、インスタンスを正常に止めてからWindowsのシャットダウンすることが必要だと思います。 たしか、マニュアルのどこかに書いてあったように思います。
補足
回答ありがとうございます。 マニュアルは結構調べたのですが、シャットダウン前にインスタンスを停止しなければならない、といった記述は見つけられませんでした。 別の手段でもいいので(例えばシャットダウン時に自動的にoradim -shutdown のバッチファイルを実行する等)自動停止の仕組みにしたいのですが、やはり無理でしょうか?
お礼
シャットダウンスクリプトというものがあるんですか。全然知りませんでした。 これを使用すれば、シャットダウンの際に何も意識せずにOracleインスタンスをとめる事ができそうですね。 早速試してみます。 有力な情報をありがとうございました。