Oracleのロック原因のセッション抽出&強制ロック解除

当ページのリンクには広告が含まれています。

こんにちは、KiYOです。

システムエンジニア歴20年オーバーの経歴です。

KiYO
KiYO

Oracleを使ったシステムを構築しているとたまーにデッドロックが発生して応答が返ってこないことがあります。(バグなんですが。。)

これが本番稼働中のシステムでもたまに起きることがあるんです。(最悪です)

その原因セッション特定と解決方法をご紹介します。

目次

ロック原因のセッション抽出

以下のSQLコマンドを実行すると、現在ロックされているSIDとSERIAL#が表示されます。

SELECT 
    SID,
    SERIAL#
FROM 
    V$SESSION
WHERE 
    SID IN (SELECT 
               SID
            FROM 
           V$LOCK
            WHERE
           TYPE IN ('TM','TX')
            );

ロックの解除

以下のALTERコマンドを実行すると、指定したセッションが切断され、ロックが解除されます。

SID、SERIAL#には、さきほど抽出したセッション情報を入力します。

ALTER SYSTEM KILL SESSION '<SID>, <SERIAL#>';

まとめ

振り返り
  • ロック原因のセッション抽出
  • ロックの解除

を解説してきました。

緊急時の臨時対応としてはいいですが、恒久対応にはなりませんので、
デッドロックの根本原因を特定して対策が必要です。

デッドロックについては別記事を起こします。 では!

セッション数やプロセス数の上限値オーバー解消はこちらをご覧ください。

Oracleの学習はオンライン学習のUdemyをオススメします。私もいろいろと受講しています。

何度も繰り返し見ることができるとこが非常に便利です。

[affi id=2]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITの事や自分の経験談など綴っていきたいと思っています。

コメント

コメントする

CAPTCHA


目次