EBS_DBA_问题:主键insert引起的死锁

今天业务用户发现问题,有一批请求一直在运行状态,
 
 
 
 
 
初步判断是由死锁引起的,于是查看一下锁的状态:
发现:
Insert Into Qgl_Docnum
  (Ledger_Id,
   Legal_Entity,
   Period_Name,
   Period_Num,
   Je_Source,
   Je_Category,
   Max_Doc_Number)
Values
  (:B1, :B7, :B2, :B6 || :B5, :B3, :B4, 0)
是由这一段sql引起的,
然后看这张表的表结构,发现主键为:
 
 
询问开发人员,发现开发人员动了测试环境该表的表结构,并且主键发生了变动:
 
LEDGER_ID, LEGAL_ENTITY, PERIOD_NAME,Je_Source,Je_Category
 
然后解决问题的思路:
将测试环境的表1(测试)备份为表2,将生产环境的表1(生产)复制到测试环境表3(测试),
 
 
问题原因:
1 insert不会造成死锁
2 oracle会自动处理死锁
3 大量insert时,建议分批提交
 
insert我看文章说也会发生锁,唯一情况是在有主键的表上,且两条insert语句主键相同时发生
 
我感觉如果两个session同时插一个主键,应该是不会冲突,因为谁先用谁就可以占用主键。

如果两个session每个都插入一批再提交,也许会主键冲突,比如
比如session a用主键1,2
session b用主键2,1
 
 
 
 
 
 

转载于:https://www.cnblogs.com/hopedba/p/5940915.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值