Oracle では、select ステートメントを使用してデッドロックをクエリできます。このステートメントは単純なデータ クエリに使用されます。構文は「select * from v$session where sid in (select session_id from v$locked_object)」です。 。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
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 サイトの他の関連記事を参照してください。