2015-04-24 15:25:34 (Fri);
リスナーが起動しない(タイムアウトする)
例えばバッチファイルなどでDB+リスナーを起動しようとして起動しなかった場合など。
手動では正常に起動するのにバッチではたまに失敗する、、という場合は
Windowsのサービスのタイムアウトの可能性が高いです。
例)DB起動ばっち.bat
NET START "OracleServiceORCL"
NET START "OracleOraDb10g_home1TNSListener"
Windowsサービス起動がタイムアウトしている!?
OSのイベントログ(システムイベントログ)の内容です。
2015/04/23 02:07:22
OracleOraDb10g_home1TNSListener サービスの接続を待機中にタイムアウト (30000 ミリ秒) になりました。
2015/04/23 02:07:22
OracleOraDb10g_home1TNSListener サービスを、次のエラーが原因で開始できませんでした:
そのサービスは指定時間内に開始要求または制御要求に応答しませんでした。
上記は、Windowsサービス OracleOraDb10g_home1TNSListener の開始が
30 秒(デフォルト値)で行えず、タイムアウトしたことを示しております。
大半は、サーバー負荷の影響によってタイムアウトが発生したというものです。
対策は?!
サーバー負荷が低い時間帯に実施するのがベストですが、スケジューリングで深夜にしているなどという場合は、
常に見ておくこともできないので難しい時もあると思います。。
そういう場合は、Windowsサービスの起動時のタイムアウト時間を変更することができるので検討してみましょう。
1. レジストリ エディタ (Regedit.exe) を起動します。
2. Control キーで DWORD 値の ServicesPipeTimeout の値データを 60000 に変更します。
これを行うには、以下の手順を実行します。
a. 以下のレジストリ キーを見つけてクリックします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
b. [Control] サブキーをクリックします。
c. DWORD 値の [ServicesPipeTimeout] を右クリックし、[修正] をクリックします。
d. [10 進] をクリックします。
e. 60000 と入力し、[OK] をクリックします。
3. [ServicesPipeTimeout] 値が存在しない場合は、[Control] キーに新しい DWORD 値を追加し、
その値のデータを 60000 に設定します。これを行うには、以下の手順を実行します。
a. 以下のレジストリ キーを見つけてクリックします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
b. [Control] サブキーをクリックします。
c. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
d. ServicesPipeTimeout と入力し、Enter キーを押します。
e. DWORD 値の [ServicesPipeTimeout] を右クリックし、[修正] をクリックします。
f. [10 進] をクリックします。
g. 値 60000 を入力し、[OK] をクリックします。
この値は 60000 ミリ秒を意味し、60 秒または 1 分と同じです。
注 : この変更は、コンピュータを再起動するまで有効になりません。
注 : レジストリの操作なので十分に注意して実施してください。(要バックアップ)
おしまい
最終更新:2015年04月24日 15:25