ラッチ:Oracleデータベースの例外処理用の行キャッシュオブジェクト

問題の説明

同僚は、サポートが必要なOracleプロジェクトがあると報告しました。説明によると、11月13日以降、データベースには9:00から11:00まで深刻なパフォーマンスの問題が発生します。パフォーマンスレポートは次のとおりです。
ここに画像の説明を挿入
上位5つの情報は次のとおりです。
ここに画像の説明を挿入

問題分析

上記の情報を受け取った時から、私は以前に遭遇したケースとほぼ同じように感じました。このデータベースのバージョンは11.2.0.4バージョンであり、パッチはありません。

[Nov 25, 2020 12:48:05 PM]   OPatch invoked as follows: 'lsinventory '
[Nov 25, 2020 12:48:05 PM]   OUI-67077:
                             Oracle Home       : D:\APL\oracle\product\11.2.0\dbhome_2
                             Central Inventory : C:\Program Files\Oracle\Inventory
                                from           : n/a
                             OPatch version    : 11.2.0.3.4
                             OUI version       : 11.2.0.4.0
                             OUI location      : D:\APL\oracle\product\11.2.0\dbhome_2\oui
                             Log file location : D:\APL\oracle\product\11.2.0\dbhome_2\cfgtoollogs\opatch\opatch2020-11-25_12-48-04PM_1.log
[Nov 25, 2020 12:48:05 PM]   Patch history file: D:\APL\oracle\product\11.2.0\dbhome_2\cfgtoollogs\opatch\opatch_history.txt
[Nov 25, 2020 12:48:05 PM]   Starting LsInventorySession at Wed Nov 25 12:48:05 CST 2020
[Nov 25, 2020 12:48:06 PM]   Lsinventory Output file location : D:\APL\oracle\product\11.2.0\dbhome_2\cfgtoollogs\opatch\lsinv\lsinventory2020-11-25_12-48-04PM.txt
[Nov 25, 2020 12:48:06 PM]   --------------------------------------------------------------------------------
[Nov 25, 2020 12:48:06 PM]   Installed Top-level Products (1):
[Nov 25, 2020 12:48:06 PM]   Oracle Database 11g                                                  11.2.0.4.0
[Nov 25, 2020 12:48:06 PM]   There are 1 products installed in this Oracle Home.
[Nov 25, 2020 12:48:06 PM]   There are no Interim patches installed in this Oracle Home.
[Nov 25, 2020 12:48:06 PM]   --------------------------------------------------------------------------------
[Nov 25, 2020 12:48:06 PM]   Finishing LsInventorySession at Wed Nov 25 12:48:06 CST 2020

STATSPACKから取得できる主な問題は[ラッチ:行キャッシュオブジェクト]です。ログを分析すると、dc_usersとdc_tablespacesの両方が比較的高いレベルにあることがわかります。
ここに画像の説明を挿入

DC_USERS
–これは、セッションがユーザーにGRANTを発行し、そのユーザーがデータベースにログオンしているときに発生する可能性があります。
– dc_usersへの過度の呼び出しは、「set role XXXX」の症状である可能性があります– listen.logを
分析することにより(OEM 12c-> All Metricsを使用するか、可能な場合はデータベースAUDITを確認することにより、失敗したものも含めて、大量のログイン試行の現在を確認できます。または独自のツールを使用)。
–バグ7715339 –ログオンに失敗すると、「行キャッシュロック」待機が発生します–ログオン遅延の無効化を許可します

DC_TABLESPACES
おそらく最も可能性の高い原因は、新しいエクステントの割り当てです。エクステントサイズが低く設定されている場合、アプリケーションは常に新しいエクステントを要求し、競合を引き起こしている可能性があります。急速に成長している小さなエクステントサイズのオブジェクトがありますか?(エクステントの数が多いオブジェクトを探すことで、これらを見つけることができる場合があります)。トレースで挿入/更新アクティビティを確認し、挿入されたオブジェクトのエクステント数を確認します。

もともと分析のためにさらに情報を収集したかった

# 查询latch: row cache objects事件相关SQL语句
SELECT A.SQL_ID, COUNT(1)
  FROM V$ACTIVE_SESSION_HISTORY A, V$EVENT_NAME B
 WHERE A.SAMPLE_TIME BETWEEN
       TO_DATE('2020-11-14 09:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
       TO_DATE('2020-11-14 11:00:00', 'YYYY-MM-DD HH24:MI:SS')
   AND A.EVENT_ID = B.EVENT_ID
   AND B.NAME = 'latch: row cache objects'
 GROUP BY A.SQL_ID
 ORDER BY 2 DESC;

# 查询SQL语句的执行计划,查看是否都与hash join有关系
SELECT * FROM TABLE(dbms_xplan.display_cursor('<SQL_ID>', NULL, 'advanced'));

問題が解決しました

過去に発生したケースは、次のように解決できます。
「行キャッシュロック」の待機時間が長く、データベースがハングする可能性がある(Doc ID 2189126.1)
バグ13902396-ハッシュ結合により、「行キャッシュオブジェクト」ラッチが取得され、「共有プール」ラッチが発生する取得(修正の無効化)(Doc ID 13902396.8)

Linuxプラットフォームでは、最初に13902396パッチを適用してから、次のイベントを設定できます。

 SELECT
    name,
    decode (bitmapped, 0, least (DFLincr, dflinit), bitmapped) -1 "Level"
FROM
    ts$;

event='45053 trace name context forever, level 127'

今回の環境はWindowsですが、そのようなパッチはないようです。この問題を解決するには、環境をOracle12c以降にアップグレードする必要がある場合があります。

おすすめ

転載: blog.csdn.net/weixin_38623994/article/details/110137588