こんにちは、KiYOです。
システムエンジニア歴20年オーバーの経歴です。
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のプロセス数とセッション数 こんにちは、KiYOです。 システムエンジニア歴20年オーバーの経歴です。 Oracleを使用してて、急に以下のエラーで接続できなくなる事があった場合、Oracleのプロセス…
Oracleの学習はオンライン学習のUdemyをオススメします。私もいろいろと受講しています。
何度も繰り返し見ることができるとこが非常に便利です。
[affi id=2]
コメント