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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21605631/viewspace-751577/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值