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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM