ora-00060 之分析

1.单机 alert 日志  会提示 ora-00060 报错

2.RAC 节点则不然,alert 日志不会提示 ora-000060 报错 ,而会在 alert 日志提示出报警Global Enqueue Services Deadlock detected.

In a Real Application Cluster (RAC) environment, instead of ORA-60, one would see the following messages in database alert log:
Global Enqueue Services Deadlock detected. More info in file
/u01/diag/rdbms/rac/RAC1/trace/RAC1_ora_3457040.trc.

分析死锁思路:

1.找到对应的trace 文件 ,皆可以找到SQL.

O/S info: user: opdb, term: UNKNOWN, ospid: 21496822
machine: pdbdb01 program: oracle@pdbdb01 (J001)
client info: Tot:00:00:12.36 Rows:6642 Avg.:537
application name: RB_TD_PRC.PROCESS_ACCOUNTS, hash value=1443721618
current SQL:
UPDATE RB_BASE_ACCT_STATS SET AMT_OF_CHEQUE_DEP_MTD = NVL (AMT_OF_CHEQUE_DEP_MTD, 0) + :B11 , NO_OF_CHEQUE_DEP_MTD = NVL (NO_OF_CHEQUE_DEP_MTD, 0) + :B10 , AMT_OF_CHEQUE_DEP_CTD = NVL (AMT_OF_CHEQUE_DEP_CTD, 0) + :B11 , NO_OF_CHEQUE_DEP_CTD = NVL (NO_OF_CHEQUE_DEP_CTD, 0) + :B10 , AMT_OF_CHEQUE_DEP_YTD = NVL (AMT_OF_CHEQUE_DEP_YTD, 0) + :B11 , NO_OF_CHEQUE_DEP_YTD = NVL (NO_OF_CHEQUE_DEP_YTD, 0) + :B10 , NO_OF_TRAN_MTD = DECODE (:B9 , 'C', NO_OF_TRAN_MTD + 1, 'D', NO_OF_TRAN_MTD - 1 ), NO_OF_TRAN_CTD = DECODE (:B9 , 'C', NO_OF_TRAN_CTD + 1, 'D', NO_OF_TRAN_CTD - 1 ), NO_OF_TRAN_YTD = DECODE (:B9 , 'C', NO_OF_TRAN_YTD + 1, 'D', NO_OF_TRAN_YTD - 1 ), PREV_ACCT_BAL = ACCT_BAL, ACCT_BAL = NVL (:B8 , 0), STAT_CTRL_DATE = :B7 , HIGH_BAL_MTD = DECODE (:B3 , 'Y', DECODE (DECODE (CTRL_DATE, :B2 ,
DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK
possible owner[80.21496822] on resource TX-002B000D-03B8CE94

2. 也可以通过 ash  chain 分析 等待事件的 enq: TX - row lock contention' SQL 

2.观察了00:00  ~ 01:00 这个时间段所有的跟锁等待  enq: TX - row lock contention'相关的SQL, SQL 如下:

SQL_ID: 7hwyyfm5hv8wm
原文地址:https://www.cnblogs.com/feiyun8616/p/12460858.html