Oracleで強制終了したセッションが「killed」で残ってしまう場合の対処方法

Oracleのセッションを強制終了しようとしても残ってしまって消えないことがあります。

以前は諦めていたのですが、意外と簡単に消すことができることが分かりました。

この記事では「Killed」で残ってしまっているセッションの切断方法を紹介します。

「KILLED」で残ってしまう・・・

[alter system kill session]コマンドを実行してもクライアント側で何らかアクションを起こしてエラーが発生するまでは「killed」で残ってしまいます。

「immediate」オプションで大抵は解決

「immediate」オプションを指定すると、セッションの始末後、すぐにユーザーに制御を戻すに指示します。大抵の場合はこれで解決します。

最終手段は[orakill]コマンド

それでも残ってしまう場合はDBサーバのプロセスを終了させる必要があります。SQLではなくコマンドプロンプト上で[orakill]コマンドを実行する必要があります。

あまり推奨されていないコマンドのようですが・・・

[orakill]コマンドの生成SQL

下記のSQLを実行すると[orakill]コマンドを取得できます。

SQLの実行結果です。最後の列の値が実際に実行するコマンドになります。

MACHINE PROGRAM STATUS COMMAND
MACHINE01 EXCEL.EXE INACTIVE orakill orcl 31652
MACHINE02 EXCEL.EXE INACTIVE orakill orcl 33452
MACHINE03 EXCEL.EXE INACTIVE orakill orcl 31204
MACHINE04 EXCEL.EXE INACTIVE orakill orcl 31988

DBサーバー上で[orakill]コマンドを実行する

DBサーバーでコマンドプロンプトを開き、先程取得したコマンドを実行します。

これで暫くするとセッションが強制終了します。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です