• 警告:ORA-00600 2252 错误正在SCN问题下不断爆发


    自2019年6月23日之后,Oracle启用了 SCN 自动 Auto-Rollover 的新特性,也就是自动调整了 SCN 的增长率算法(缺省32K 每秒,允许 SCN 最高以每秒 96K 计算)。注意,这里说的自动,是指不需要用户做任何主动的变化,数据库会自动调整。


    在告警日志中,可以看到如下一行信息:

    Database SCN compatibility auto-rollover - control file update 

    SCN compatibility changed from 1 to 3 (auto-rollover)

    而这一调整生效之后,带来的一个可能的负面影响就是:当SCN增长率高的数据库连接增长率低的数据库,如果低版本的数据库无法同步拉高SCN,就会出现ORA-600 2552错误,事务或查询无法进行,影响业务运行


    这个问题直接引发的错误号:ORA-600 2252,在Google搜索上,我的2012年的历史文章排在第一位:《ORA-600 2252 错误与SCN的一致性》,这篇文章描述了时间相关的一种情况。


    640?wx_fmt=png


    针对 SCN 兼容性问题,我们曾经发布过一个系列的文章去阐述,所以在此不再赘述,以下链接供参考:


    1. 揭秘Oracle 11.2.0.4前版本DB Link必须在2019年4月前升级

    2. 解决方案:Oracle的DB Link问题及2019年4月升级路线详述

    3. Oracle全面修正了关于DB Link和SCN补丁的公告

    4. Oracle 的 DBMS_SCN 修正以及SCN的auto-rollover新特性


    在『DBASK』问答小程序中,用户在线提问,专家随时解答,每期会整理出一些重要的问题与回复。


    现在,我们首先看看官方对 ORA-600 2552 错误的解释:

    symptom: Query that uses a database link between two machines fails cause: Argument [2252] for the ORA-00600 indicates that the System Change Number (SCN) Oracle is calculating for a transaction is an unreasonable number
    The SCN is calculated based in part on the host system date. If the system date is a LONG way off, the maximum possible value calculated for the SCN may be impossibly large which would result in an ORA-600[2252].

    翻译一下就是:

    ORA-600 的 2552 号错误,表明 Oracle 为事务计算出来的 SCN 号是不合理的数值,其中的一个可能原因和系统时间相关,因为 SCN 的计算和时间有关,如果操作系统的时间错误,就可能导致这个问题。

    当然,最近爆发的 2552 问题和时间无关,是和 SCN 的算法改变相关。对于高版本的数据库,SCN的合理值很高,而对于低版本的数据库,SCN的合理值较低,当通过 DB Link 连接这两个数据库时,因为分布式事务需要同步两个数据库之间的SCN,而低版本数据库不可抬升,就出现了 2552 错误。


    当出现这个错误之后,意味着,高版本的数据库 SCN 已经跃升到高值,这个跃迁不可逆转,所以唯一的办法就是升级低版本的数据库


    如果在遇到这个错误之前,可以针对高版本的数据库禁用自动的SCN Roll-Over新特性,继续保持低增长率,则不会出现和低版本失联问题。


    我们再来看一下出现这类问题的场景和症状:


    例如,主生产数据库为 12.2/12.1.0.2/11.2.0.4等高版本(SCN 增长率高),但还有核心库为10.2.0.4.0,为低版本(SCN增长率低)。


    主生产数据库和核心库通过 DB Link 进行核心业务数据交互,这其中的过程决定业务交易的成败。


    • 关键点:客户未在6/23前升级低版本,也没有关闭高版本的SCN Auto RollOver。

    • 案发场景:某12.1.0.2的数据库,由于相连某个数据库发生SCN异常增长,通过DB Link被推高到同样位置。

    2019-08-12T16:17:13.142309+08:00
    Session (10381,312): EXTERNAL SCN ALERT: Advanced SCN by 1244395 minutes worth to 0x000016cbca6399b7, by outbound distributed transaction begin with returned scn
    Session (10381,312): EXTERNAL SCN SOURCE: Outbound connection to DBID: xxxx GLOBAL_DB_NAME: DXHX
    Session (10381,312): EXTERNAL SCN SOURCE: DBlink Name: XXXX, Connect String: (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = no) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = XXXX)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = XXXX) (failover_mode=(type=select)(method=basic)))), Remote Machine: XXX

    这个高版本数据库SCN异常跳增涨到2.39E13,而当前的16k速率SCN上限仅为1.66E13。


    以下查询诊断输出了SCN的跳变时间,正常情况下数据库的 SCN 位于低位,但是在某个时间受其他数据库影响发生跳变:

    Time SCN Changed By Time
    ------------- --------------------
    20190812-1600 16,625,261,888,353
    20190812-1601 16,625,261,888,724
    20190812-1644 16,625,269,791,170
    20190812-1728 16,625,271,982,215 ==> 16k速率下SCN, 离headroom 约13天
    20190812-1813 23,985,018,894,186 ==> 96k速率下SCN, 远高于 16k速率下headroom
    20190812-1814 23,985,018,894,301
    20190812-1900 23,985,020,302,986
    20190812-1947 23,985,022,403,528
    20190812-2028 23,985,024,519,726
    20190812-2028 23,985,024,522,323
    20190812-2119 23,985,027,176,419

    该数据库需要通过DB Link访问低版本数据库,由于SCN超出低版本数据库SCN 的最大限制,导致ORA-00600 2252 错误。两者之间DB Link无法再工作,严重影响业务:

    ORA-00600: 内部错误代码, 参数: [2252], [2834], [4076555716], [], [], [], [], []

    由于 SCN 具有传播性,所有和高 SCN 数据库相连接的数据库,都抬升了 SCN,这些数据库连接低版本平台都会出现错误,所有相关业务都可能遭受影响,这时候就只能通过紧急升级低版本数据库来解决问题。


    再次警示:请大家再次检查自己管理的数据库,是否还有高低版本混用的情况,如果有,重点关注是否有高版本数据库的SCN超越16k headroom的情况,最好做成监控脚本,万一有超过需要尽快升级旧版本


    整理了一个监控脚本供大家参考:https://www.modb.pro/download/3131(复制地址至浏览器或点击左下角的「阅读原文」)


    以上问题对于有大量分支机构数据库的全国性企业,尤其需要重视。


    此前我们低估了这一罕见异常可能出现的概率,根据墨菲定律,可能会发生的事情是一定会发生的。所以强烈建议大家要么及时升级低版本的数据库,要么禁用高版本数据库的 Auto-Rollover 特性(同时降低 SCN 兼容性级别至 1 ),避免问题出现时措手不及而影响业务,造成损失


    在处理此问题时有任何疑难,欢迎随时咨询云和恩墨技术支持:010-59007017 。


    如有收获,请划至底部,点击“在看”,谢谢!smiley_83.png


    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    help,30万+下载的完整菜单栏

    2019DTCC,数据库大会PPT

    2018DTCC , 数据库大会PPT

    2018DTC,2018 DTC 大会 PPT

    ENMOBK《Oracle性能优化与诊断案例》

    DBALIFE,“DBA 的一天”海报

    DBA04,DBA 手记4 电子书

    122ARCH,Oracle 12.2体系结构图

    2018OOW,Oracle OpenWorld 资料

    产品推荐

    云和恩墨Bethune Pro2 企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!


    640?wx_fmt=jpeg


    云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。


    640?wx_fmt=jpeg

    云和恩墨大讲堂 | 一个分享交流的地方

    长按,识别二维码,加入万人交流社群


    640?wx_fmt=jpeg

    请备注:云和恩墨大讲堂

  • 相关阅读:
    如何修改 gitlab 的项目名称
    Vue 项目中 webSocket 的使用(服务端是 Java Spring boot)
    如何能选到好的车牌号
    实现微信,浏览器,App中H5的路线规划
    H5 navigator.geolocation demo
    npm package.json 中版本指定符号: ~ 、^、*
    小程序中静态资源绝对路径的写法
    重置gvim8 ctrl+f的翻页功能
    [TS]Map的基本操作
    [TS]闭包测试
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13311965.html
Copyright © 2020-2023  润新知