zoukankan      html  css  js  c++  java
  • 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
     
     
     
     
     
     
  • 相关阅读:
    元数据管理
    sqoop 安装
    postgres 索引
    postgres 表和库等信息大小统计
    Perl基础语法
    Perl 认识简介
    Oracle层次查询start with connect by
    jquery.cookie.js 的使用指南
    JavaScript中cookie使用
    CSS实现垂直居中的4种思路
  • 原文地址:https://www.cnblogs.com/hopedba/p/5940915.html
Copyright © 2011-2022 走看看