DFS lock handle事件处理

环境: Oracle 11.2.0.1 RAC AXI 6.3
情况:工具通过INSRT INTO TAB1@DB_LINK SELECT * FROM TAB_B往插入数据时,HAND住,会话事件为DFS lock handle,DB_LINK为本地实例,且TAB2表中有clob字段。

1.在使用程序导入深圳数据时,会话hang,以下sql模拟出当时hang住情形.
 select sid from v$mystat where rownum =1; --确认会话sid
 insert into tab1@db_link select * from tab2; --产生回环问题sql 

2.确认产生DFS lock handle事件
select sid,username,event from v$sessoin where sid =&sid;

3.查看会话请求锁的name和mode
select chr(bitand(p1,-16777216)/16777215) || chr(bitand(p1, 16711680)/65535) "Lock",
to_char(bitand(p1, 65536)) "Mode",
p2, p3 , seconds_in_wait
from v$session_wait
where event = ‘DFS lock handle’;

--发现是name :DX   mode:5
 
4.通过锁资源查看是否被其他会话占用

select inst_id, sid, type, id1, id2, lmode, request, block
from gv$lock where type='DX' and id1=&id1 and id2=&id2;

--发现并无存在DX锁,至此,可以推断是又Oracle bug引起.
References
BUG:10282287 - RAC / LOOPBACK CONNECTION / LOB ACCESS / HANG : SQL*NET MORE DATA TO CLIENT
BUG:11736004 - INSERT BY SELECTING CLOB DATA LARGER THAN 32K OVER LOOKBACK DATABASE LINK HANGS


5.通过修改隐含参数规避此bug
sqlplus / as sysdba
alter system set "_clusterwide_global_transactions"=false scope=spfile;


6.重起两个节点实例,使参数生效.


7.执行sql验证,成功执行.
insert into tab1@db_link select * from tab2;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22990797/viewspace-1335041/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22990797/viewspace-1335041/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值