IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ORA-600 12807 修复

    惜分飞发表于 2023-10-14 15:34:19
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:ORA-600 12807 修复

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    这次阳了有点严重,客户现场打patch无法去,在家里远程值守,在电脑前面闲着就查询和重现了最近朋友和我说的他们的客户遇到ORA-600 12807的故障.查询了下mos,基本上可以确认是由于CON$.CON#达到理论最大值无法继续增加从而报该错误,参考文档:
    Mechanism to Recycle Database Constraint Identifiers (Doc ID 2925056.1)
    Bug 13781691 – ORA-600 [12807] if CON$.CON# very high due to bug 13784384 (Doc ID 13781691.8)
    Bug 25343563 – Mechanism to Implement Constraint Identifier (con#) Recycling (Doc ID 25343563.8)
    在12及其之后的版本中oracle发布了patch 25343563 并设置event启用该patch进行解决.但是如果是12c之前版本,官方没有提供直接的解决方案.最基本的解决方法就是进行数据逻辑迁移,以及避免频繁创建约束导致con$.con#消耗太大

    通过试验重现该错误

    SQL> create table t_xff  (id number not null,name varchar2(100) not null);
    create table t_xff  (id number not null,name varchar2(100) not null)
    *
    ERROR at line 1:
    ORA-00600: internal error code, arguments: [12807], [], [], [], [], [], [], [],
    [], [], [], []
    
    SQL>  create table t_xff  (id number,name varchar2(100));
    
    Table created.
    
    SQL> alter table t_xff add primary key(id);
    alter table t_xff add primary key(id)
    *
    ERROR at line 1:
    ORA-00600: internal error code, arguments: [12807], [], [], [], [], [], [], [],
    [], [], [], []
    
    
    SQL> select con# from sys.con$ where name='_NEXT_CONSTRAINT';
    
          CON#
    ----------
    4294967294
    

    通过一些底层分析,并对部分底层基表进行patch实现数据库可以继续创建约束

    SQL>  alter table t_xff add primary key(id);
    
    Table altered.
    

    使用临时的patch方法,可以快速的恢复业务,后续找适当时间点安排迁移.
    在此提醒:对于一些创建中间对象或者临时对象频繁的系统(特别是大量主键,not null等)注意检查该值距离天花板距离,如果比较接近了最好安排一次逻辑迁移和找出来原因(是oracle bug还是应用触发)

    • oracle之约束
    • 通过修改col$.col#改变列展示顺序
    • move lob导致index失效
    • ORACLE ROWID 分析
    • 实现trigger集中记录所有库ddl操作
    • 授权用户访问数据字典三种方式
    • ORACLE 12C 支持在相同列创建多个索引
    • dul 10 export_mode=true功能增强
    • oracle 建立分区表
    • 两表连接,取出其中某些项不重复的数据
    • DB2入门操作之一
    • Multiple-table cache group配置


沪ICP备19023445号-2号
友情链接