ホームページ >データベース >Oracle >Oracleでデッドロックをクエリする方法

Oracleでデッドロックをクエリする方法

WBOY
WBOYオリジナル
2022-01-25 16:51:527264ブラウズ

Oracle では、select ステートメントを使用してデッドロックをクエリできます。このステートメントは単純なデータ クエリに使用されます。構文は「select * from v$session where sid in (select session_id from v$locked_object)」です。 。

Oracleでデッドロックをクエリする方法

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle でデッドロックをクエリする方法

1. デッドロックを確認します

1) dba ユーザーを使用して次のステートメントを実行します

select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)

結果を出力すると、デッドロックが発生していることを説明し、どのマシンがデッドロックであるかを確認できます。フィールドの説明:

  • Username: デッドロック ステートメントで使用されるデータベース ユーザー;

  • Lockwait: デッドロックのステータス (コンテンツがある場合) 、それはデッドロックであることを意味します。

  • ステータス: ステータス、アクティブはデッドロックを意味します。

  • マシン: デッドロック ステートメントが存在するマシン。

  • プログラム: デッドロックを生成するステートメントは主にどのアプリケーションから発生しているか

2) dba ユーザーを使用して次のステートメントを実行します。デッドロックの Lock ステートメントを表示できます。

select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

2. デッドロックの解決策

1) デッドロックされたプロセスを見つけます:

SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

2) デッドロックされたプロセスを強制終了します: alter system kill session ' sid,serial#'; (sid=l.session_id の場合)

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がOracleでデッドロックをクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。