My Oracle Support Banner

トレースの Deadlock Graph を使用して ORA-00060 デットロックのタイプを識別する方法 (Doc ID 1676711.1)

Last updated on AUGUST 04, 2018

適用範囲:

Oracle Database - Enterprise Edition - バージョン 9.0.1.0 以降
この文書の内容はすべてのプラットフォームに適用されます。

本文書利用上のご注意


  本文書は英語で提供されている Document 1507093.1 (最終更新日: 2015年10月07日) の翻訳です。

  ご利用に際しては、英語の原文を併せてご参照頂くことをお勧めいたします。

目的

Oracle がデットロックを検出した際は、デットロックを検出したセッションの現行 SQL は取り消され、リソースを解放し、すべての活動をブロックしないように '文レベルのロールバック' が実行されます。デッドロックが検出されたセッションは、まだ生きており、トランザクションの残りの部分はまだアクティブです。セッションの最後の(取り消された)操作を繰り返すと、再度デットロックになります。

このようなデッドロックが検出されると、"Deadlock Graph" を含む(他の有用な情報と一緒に)トレース・ファイルが生成されます。多数のサービス・リクエストを調べることにより、私達はデッドロックの最も一般的なタイプは、遭遇したデットロックの 'タイプ' を識別するために使用できる Deadlock Graph の "特徴" によって識別できることを見てきました。正しい軌道に沿って調査と解決を継続できるように、この記事では、各タイプの例を示します。

この文章の目的は、元の問題を識別するために、ORA-00060 エラーにより生成される "Deadlock Graph" の使用方法について示すことです。

注意: 注意: デットロックのトレースの一部は、デットロックが不適切または無関係になるようなものであるため、"Deadlock Graph" セクションが 含まれていません。 このような場合、推奨アクションは、以下の文章に概説されているように、いくつかの追加の情報を収集し、サポートにサービス・リクエストを作成することです。:

<Document 1676205.1> ORA-00060 Deadlock Graph がどの例とも一致しない場合: 次の調査手順の提案

もし、まだ使用していない場合は、一般的な ORA-00060 デットロックの問題の調査に役立つトラブルシューテイング・アシスタントを使用することができます。:

<Document 60.1> Troubleshooting Assistant: Oracle Database ORA-00060 Errors on Single Instance (Non-RAC) Diagnosing Using Deadlock Graphs in ORA-00060 Trace Files

Deadlock Graph の解釈

典型的な Deadlock graph はこのようになります:

 

異なるタイプを区別するために、所有側(holder)と待機側(waiter)によって所有/待機しているロックのタイプとモードを確認し、各タイプの特徴をして使用します。例えば、前のグラフは次の特徴を示します。:

Graph のこれらの特徴にフォーカスすることによって:

 

次のタイプ(典型的なアプリケーション・デットロック)であることがわかります。:

TX X X
TX X X

デッドロック・タイプの認識のための"主な特徴"の最も関連性の高い部分はロック・タイプと、それを要求しているモードであることに注意してください。主なタイプは、以下の表でまとめています。

最も一般的なタイプ:

"主な特徴" ロック・タイプ 要求されたロック・モード Deadlock Graph 可能性の高いデットロックのタイプ コメント
モード X (6) で要求しているタイプ TX ロック TX X(6) TX X X
TX X X
アプリケーション TX ロックをモード X (6) で所有 モード X (6) で要求
モード SSX (5) で要求しているタイプ TM ロック TM SSX (5) TM SX SSX SX SSX
TM SX SSX SX SSX
索引のない外部キー (FK) 制約 TM ロックをモード SX (3) で所有 SSX (5) で所有 要求
モード S (4) で要求しているタイプ TX ロック TX S(4) TX X S
TX X S
Interested Transaction List (ITL) 不足
または
ビットマップ索引
または
PK/UK索引

TX ロックをモード X (6) で所有 モード S (4) で要求

ITLとビットマップ索引、PK/UK索引の特徴は同じです。原因を特定するためには更なる調査が必要になります。

モード X (6) で要求しているタイプ TX ロック
Deadlock Graph には単一行
TX X(6) TX X X
Deadlock Graph には単一行
セルフ・デットロック
または
自立型トランザクション セルフデットロック
Deadlock graph に1行のみという点を除いて、標準のアプリケーション・デッドロックと同じように見えます。
Deadlock Graph のタイプ UL ロック UL ANY UL ? ?
?
ユーザー定義ロックのアプリケーション・デットロック これは、ユーザー定義ロックを除いて、標準アプリケーションのデッドロックに非常に類似しています。

 

注意: この表はすべてを網羅しているものではなく、最も一般的な問題の概要を説明しています。上記表にないデットロックになり得るいくつかのまれな状況があります。上記のものと一致しないケースについては、以下の文書で説明されているように、推奨されるアクションはいくつかの追加の診断情報を収集して、サポートにサービス・リクエストを作成することです。:

<Document 1676205.1> ORA-00060 Deadlock Graph がどの例とも一致しない場合: 次の調査手順の提案

遭遇した ORA-00060 デットロックのタイプの様々なタイプの識別および診断方法についての情報は、次の文章を参照してください。:

<Document 1678687.1> トレースの Deadlock Graph を使用して ORA-00060 デットロックのタイプを診断する方法

注意:これらは、最も一般的な種類と原因です。同様の症状は様々な原因で発生する稀なケースがあります。非アプリケーションのデッドロック・タイプの識別について疑問がある場合、または異なる graph が見られる場合は、Oracle サポートにサービスリクエストを登録してください。

Oracle ロック・モードのリファレンス :

0 - なし
1 - null (NULL)
2 - 行共有, 半共有表ロック (SS) とも呼ぶ
3 - 排他表ロック, 副排他表ロック (SX) とも呼ぶ
4 - 共有表ロック (S)
5 - 共有行排他表ロック,共有副排他表ロック(SSX)とも呼ぶ
6 - 排他表ロック (X)

注意: アプリケーション・デットロックの特徴と他の1つの組み合わせが表示されることがあります。例えば、次のようなものが表示されることがあります。:

この記事について質問したり、支援を得たり、経験を共有してください。

Oracle の他のお客様や、Oracle 社員、業界の専門家と更にこのトピックについて探求されますか?

この記事について質問をしたり、他の人からの支援を得たり、あなたの経験を共有するには、ここをクリックして議論に参加してください。
データベース・チューニングの My Oracle Support のコミュニティ・ページにアクセスするには、 ここをクリック して他の記事や有用なサブジェクトを発見してください。

解決策

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.