oracle自治事務引起的死鎖
1.關於自治事務引起的死鎖oracle解釋
Note:65961.
Because the parent and child transactions are independent, they also are not able to share any locks; if a parent transaction has a resource locked that a child attempts to obtain, then a deadlock situation occurs. In this case, the offending statement is automatically rolled back with an "ORA-00060: deadlock detected while waiting for resource" exception raised within the child. Information on how to troubleshoot a deadlock can be found in:
2.模擬自治事務引起的死鎖
SQL> create table eymit(id int);
Table created
SQL> insert into eymit select 1 from dual;
1 row inserted
SQL> commit;
Commit complete
SQL> delete from eymit;
1 row deleted
SQL>
SQL> declare
2 pragma autonomous_transaction;
3 begin
4 delete from eymit;
5 commit;
6 end;
7 /
declare
pragma autonomous_transaction;
begin
delete from eymit;
commit;
end;
ORA-00060: 等待資源時檢測到死鎖
ORA-06512: 在 line 5
3.分析日誌
檢視Alert檔案資訊
Mon Dec 24 18:26:04 2012
ORA-00060: Deadlock detected. More info in file /opt/local/oracle/diag/rdbms/gs3421/gs3421/trace/gs3421_ora_19373.trc
根據alert找到具體的trace檔案,注意和普通死鎖不一樣,下面Blocker(s)和Waiter(s)為同一個sid,同時trace中有正在執行的SQL和被鎖的物件ID
[oracle@CN01L0301000025 trace]$ more gs3421_ora_19373.trc
Trace file /opt/local/oracle/diag/rdbms/gs3421/gs3421/trace/gs3421_ora_19373.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /opt/local/oracle/product/11.2.0/dbhome_1
System name: Linux
Node name: CN01L0301000025
Release: 2.6.18-164.el5
Version: #1 SMP Thu Sep 3 03:28:30 EDT 2009
Machine: x86_64
Instance name: gs3421
Redo thread mounted by this instance: 1
Oracle process number: 46
Unix process pid: 19373, image: oracle@CN01L0301000025
*** 2012-12-24 18:26:04.290
*** SESSION ID:(1152.197) 2012-12-24 18:26:04.290
*** CLIENT ID:() 2012-12-24 18:26:04.290
*** SERVICE NAME:(gs3421) 2012-12-24 18:26:04.290
*** MODULE NAME:(PL/SQL Developer) 2012-12-24 18:26:04.290
*** ACTION NAME:(Command Window - New) 2012-12-24 18:26:04.290
*** 2012-12-24 18:26:04.290
DEADLOCK DETECTED ( ORA-00060 )
[Transaction Deadlock]
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-0003001b-0001dd36 46 1152 X 46 1152 X
session 1152: DID 0001-002E-0000CA27 session 1152: DID 0001-002E-0000CA27
Rows waited on:
Session 1152: obj - rowid = 000700C5 - AABwDFAAEAAAv5cAAA
(dictionary objn - 458949, file - 4, block - 196188, slot - 0)
----- Information for the OTHER waiting sessions -----
----- End of information for the OTHER waiting sessions -----
Information for THIS session:
----- Current SQL Statement for this session (sql_id=g3mk1njgws241) -----
DELETE FROM EYMIT
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----
object line object
handle number name
0x15960f918 5 anonymous block
===================================================
PROCESS STATE
4.解決方案
自治事務和主事務是兩個獨立的事力,根據上面資訊找到相關的自治事務提前進行提交
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21605631/viewspace-751577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 巢狀事務 VS 自治事務Oracle巢狀
- Oracle死鎖一例(ORA-00060),鎖表導致的業務死鎖問題Oracle
- insert引起的死鎖,起因主鍵衝突
- 檢視oracle死鎖程式並結束死鎖Oracle
- 【Oracle】死鎖的產生與處理Oracle
- MySQL死鎖案例二(自增列導致死鎖)MySql
- 記一次Oracle死鎖/阻塞排查Oracle
- 解決Oracle死鎖問題步驟Oracle
- AUTONOMOUS TRANSACTION(自治事務)的介紹(轉)
- 作業系統(5) 死鎖的概念 死鎖產生的必要條件 死鎖的處理策略 預防死鎖 避免死鎖 死鎖的檢測和解除 銀行家演算法作業系統演算法
- 死鎖
- 鎖的使用與死鎖的避免
- 面試:什麼是死鎖,如何避免或解決死鎖;MySQL中的死鎖現象,MySQL死鎖如何解決面試MySql
- 事務的本質和死鎖的原理・改
- MySQL:一個死鎖分析 (未分析出來的死鎖)MySql
- SQL Server 的死鎖SQLServer
- Java 中的死鎖Java
- SQLServer的死鎖分析(1):頁鎖SQLServer
- 什麼是死鎖?如何解決死鎖?
- 面試官:什麼是死鎖?怎麼排查死鎖?怎麼避免死鎖?面試
- 死鎖概述
- 例項詳解 Java 死鎖與破解死鎖Java
- PostgreSQL DBA(68) - 使用DBLink實現自治事務SQL
- MySQL 死鎖和鎖等待MySql
- 死鎖和可重入鎖
- 剖析6個MySQL死鎖案例的原因以及死鎖預防策略MySql
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- 死鎖是什麼?如何預防和避免死鎖?
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- oracle的鎖Oracle
- 線上併發事務死鎖問題排查
- 死鎖-舉例
- 併發:死鎖
- 遭遇ITL死鎖
- 死鎖案例分析
- GCD 死鎖原因GC
- 死鎖案例二
- 死鎖案例三
- 使用JDK自帶的工具jstack找出造成執行程式死鎖的原因JDKJS行程