DBMS_LOCKとのロック競合を表示するAWRレポート
Automated Workload Repository(AWR)レポートにDBMS_LOCKが表示された場合、ロック競合に関していくつか問題がある可能性があります。この待機イベントは、別のデータベースの別のガベージ・コレクタ・セッションがすでにロックしたリソースを予約待ちしようとしているガベージ・コレクタ・セッションです。そのため、現在のガベージ・コレクタのみが待機します。ガベージ・コレクタ処理の待機は、他のガベージ・コレクタの処理を妨げますが、それ以外の処理を妨げることはありません。
たとえば、次では、AWRレポートの競合イベントを示しています。
AWR Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ wait Call Event Waits Time (s) (ms) Time Wait Class ------------------------------ ------------ ----------- ------ ------ ---------- enq: UL - contention 2,388 6,997 2930 72.0 Application
また、PERF AWRレポートの「SQL ordered by CPU Time」の項に表示されているように、ガベージ・コレクタには、非常に短いCPU時間が使用されています。
SQL ordered by CPU Time DB/Inst: REM0LNX/REM Snaps: 14976-14977
-> Resources reported for PL/SQL code includes the resources used by all SQL
statements called by the code.
-> % Total DB Time is the Elapsed Time of the SQL statement divided
into the Total Database Time multiplied by 100
CPU Elapsed CPU per % Total
Time (s) Time (s) Executions Exec (s) DB Time SQL Id
---------- ---------- ------------ ----------- ------- -------------
0 3,508 120 0.00 36.1 0mt5pk2501gph
Module: timestenorad@etcpro01.oracle.com (TNS V1-V3)
DECLARE v_lockHandle VARCHAR2(200); BEGIN dbms_lock.allocate_unique(
'ORATT$ORA_GC1_CACHEADMIN', v_lockHandle); :retval := dbms_lock.request(
v_lockHandle, dbms_lock.x_mode, 30, FALSE); END;
0 3,499 120 0.00 36.0 bb07h2a1v817x
Module: timestenorad@etcpro01.oracle.com (TNS V1-V3)
DECLARE v_lockHandle VARCHAR2(200); BEGIN dbms_lock.allocate_unique(
'ORATT$ORA_DDSMONITOR1_CACHEADMIN', v_lockHandle); :retval :=
dbms_lock.request(v_lockHandle, dbms_lock.x_mode, 30, FALSE); END;