目次
今回は
みなさん、こんにちはMaxGaugeを販売しております日本エクセムの製品担当です。
今回はOracle Databaseで発生したロック待機をMaxGaugeで分析する方法を紹介します。
ロックに関する事象は調査が難航するケースが多いですが、
MaxGaugeを使えばロックが発生したセッションやSQLを比較的簡単に調査することが可能で調査時間の短縮などの効果も期待できます。
「enq: TX – row lock contention」どうやって調べてます?
AWRレポートなどで「enq: TX – row lock contention」(行ロック)の待機時間が多くなっている場合、「どのSQLでロック待機が発生しているのか?」と確認したいときがあると思います。
AWRレポートなら “Segments by Row Lock Waits” セクション辺りの情報から競合しているセグメントを探したり、ASHで「enq: TX – row lock contention」が発生しているセッションを探したりするケースが多いと思います。
MaxGaugeではロック待機の確認は簡単です。
ロック待機の状況をツリー状に表示して、ロックの原因となっているセッション、ロック待機しているセッション、ロック待機中のSQL、
などの情報を元にロックの発生状況を簡単に分析することができます。
①ロック待機セッションをツリー状で表示します。
一番上の行がロックしているセッション(フォルダ)で2行目以降がロックで待たされているセッション(ウェイター)です。Oracle RAC環境では複数のノード間で発生したロックの状況を表示します。
②MaxGaugeはロック待機の状況を1秒毎に取得しています。
数字の秒数をクリックすることでロック・ツリーを1秒毎に確認することができます。
MaxGaugeでのロック待機の調査方法
MaxGaugeでは「現在発生しているロック待機状況」と「過去に発生したロックの機状況」を確認することができます。
現在発生しているロック待機状況を確認する
MaxGaugeのリアルタイムモニタでロック待機の状況を確認することができます。
リアルタイムモニタではロック待機の分析に役立つフレームがあります。
このフレームを組み込むことでロック待機の状況をリアルタイムに確認/分析することが可能です。
ロック待機の確認/分析で役立つフレーム
①ロック待機待ちセッション数・フレーム : インスタンス毎にロック待機中のセッション数をグラフで表示します。待機時間に応じてグラフの色が変化します。
②ロック待機待ちセッション・フレーム : ロック待機中のセッションの一覧を表示しするフレーム、ロック待機中のセッションの詳細を調べます。
③ロックツリー・フレーム : ロックの状態をツリー状で表示します、ロックを保持しているセッションを先頭にインデントのロック待機セッションを確認します。
過去に発生したロック待機の状況を確認する
MaxGaugeのパフォーマンスアナライザで過去に発生したロック待機の状況を確認することができます。
ロック待機の確認にはパフォーマンスアナライザの「性能トレンド」画面で詳細を分析できるタブがあります。
性能トレンドのロック待機分析に役立つタブ
①ロック待機セッション数グラフ : ロック待機セッション数の推移のグラフ、ロック待機の発生状況をグラフから確認します。
②ロック・ツリー : ロックの状態をツリー状で表示します、ロックを保持しているセッションを先頭にインデントのロック待機セッションを確認します。
パフォーマンスアナライザでの調査手順の詳細は(https://www.ex-em.co.jp/blog/lockcheck/ )で紹介しています。
MaxGaugeを使ったロック待機の確認ポイント
MaxGaugeを使用するとロックの状況がツリー状で表示されるのでロック待機によるトラブルの調査では簡単かつ短時間に状況を把握することが可能です。ロック待機の確認ポイントを以下にまとめました。
確認ポイント |
---|
MaxGaugeでのデッドロック発生の表示
デッドロックが発生したセッションはMaxGaugeでも識別できるように表示します。
リアルタイムモニタ
デッドロックが発生すると対象セッションの「Lock Name」列に「Dead Lock」と表示されます。
パフォーマンスアナライザ
デッドロックが発生したセッションの行は文字が赤色で表示されます。
最後に
今回はMaxGaugeを使用したロック待機の調査/分析方法について紹介しました。
ロック待機の調査は一般的にはデータベース管理者が調査する必要がありますが、
MaxGaugeを利用すると簡単に調査できることからアプリケーション開発者、システム運用者でも調査が可能になると考えております。
日本エクセムではロック待機に関する待機イベントの詳細を紹介しています、少々難しいですが待機イベントを詳しく理解したい方はご参照ください。
- enq: TX – Index contention 👉 https://www.ex-em.co.jp/blog/enq-tx-index-contention/
- enq: SQ – contention 👉https://www.ex-em.co.jp/blog/enq-sq-contention-2/
- enq: US – contention 👉https://www.ex-em.co.jp/blog/enq-us-contention/
- enq: TX – allocate ITL entry 👉https://www.ex-em.co.jp/blog/enq-tx-allocate-itl-entry/
- enq: TM – contention 👉 https://www.ex-em.co.jp/blog/enq-tm-contention/
いかがでしたでしょうか?
次回の記事もお楽しみにしていてください♪