最近关于SCN的问题又被炒的沸沸扬扬;因为Oracle之前更新了一篇文章(ANNOUNCEMENT: Recommended patches and actions for Oracle databases versions 12.1.0.1, 11.2.0.3 and earlier – before June 2019 (Doc ID 2361478.1))

简单的说,Oracle将在2019年6月份自动启动SCN的新机制,即SCN rate 最大增长可达96kb,远超之前的32kb。当然,并不是说所有版本的Oracle数据库,都将自动启用这一特性(感觉Oracle埋了一个坑)。准确一点的说,时间点是2019年6月23号;如下:

SYS@ora122>set serveroutput onSYS@ora122>declare  2    v_autorollover_date date;  3    v_target_compat number;  4    v_is_enabled boolean;  5  begin  6    dbms_scn.getscnautorolloverparams(v_autorollover_date, v_target_compat, v_is_enabled);  7    dbms_output.put_line('auto rollover date      : '||to_char(v_autorollover_date,'YYYY-MM-DD'));  8    dbms_output.put_line('target scheme           : '||v_target_compat);  9    dbms_output.put_line('rollover enabled (1=yes): '||sys.diutil.bool_to_int(v_is_enabled)); 10  end; 11  /auto rollover date      : 2019-06-23target scheme           : 3rollover enabled (1=yes): 1PL/SQL procedure successfully completed.

那么那些版本的库将在2019年6月份自动启动这个特性呢?如下:

针对上述版本的数据库将会在6月23号自动自动新机制。这么这个新机制是什么呢?简单的讲就是以前老版本的scn机制我们可以理解为是scheme 1、新版本将自动改成scheme 3,每秒允许增长的阈值更大。

SYS@ora122> declare  2    v_rsl number;  3    v_headroom_in_scn number;  4    v_headroom_in_sec number;  5    v_cur_scn_compat number;  6    v_max_scn_compat number;  7  begin  8    dbms_scn.getcurrentscnparams(v_rsl, v_headroom_in_scn, v_headroom_in_sec, v_cur_scn_compat, v_max_scn_compat);  9    dbms_output.put_line('reasonable scn limit (soft limit): '||to_char(v_rsl,'999,999,999,999,999,999')); 10    dbms_output.put_line('headroom in scn                  : '||to_char(v_headroom_in_scn,'999,999,999,999,999,999')); 11    dbms_output.put_line('headroom in sec                  : '||v_headroom_in_sec); 12    dbms_output.put_line('current scn compatibility scheme : '||v_cur_scn_compat); 13    dbms_output.put_line('max scn compatibility scheme     : '||v_max_scn_compat); 14  end; 15  /reasonable scn limit (soft limit):       16,439,976,001,536headroom in scn                  :       16,439,897,793,807headroom in sec                  : 1003411730current scn compatibility scheme : 1max scn compatibility scheme     : 3PL/SQL procedure successfully completed.

当然,Oracle在这些版本中引入了一个dbms_scn包来控制这个机制。

比如我们这里就可以直接用dbms_scn来disable这个机制。

SYS@ora122>exec dbms_Scn.DISABLEAUTOROLLOVER;PL/SQL procedure successfully completed.SYS@ora122>shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SYS@ora122>startup mountORACLE instance started.Total System Global Area 4999610368 bytesFixed Size                  8803024 bytesVariable Size             956304688 bytesDatabase Buffers         3489660928 bytesRedo Buffers                7970816 bytesIn-Memory Area            536870912 bytesDatabase mounted.SYS@ora122>alter database set scn compatibility 1;Database altered.Elapsed: 00:00:00.00SYS@ora122>alter database open;Database altered.SYS@ora122>declare  2    v_autorollover_date date;  3    v_target_compat number;  4    v_is_enabled boolean;  5  begin  6    dbms_scn.getscnautorolloverparams(v_autorollover_date, v_target_compat, v_is_enabled);  7    dbms_output.put_line('auto rollover date      : '||to_char(v_autorollover_date,'YYYY-MM-DD'));  8    dbms_output.put_line('target scheme           : '||v_target_compat);  9    dbms_output.put_line('rollover enabled (1=yes): '||sys.diutil.bool_to_int(v_is_enabled)); 10  end; 11  /auto rollover date      : 2019-06-23target scheme           : 3rollover enabled (1=yes): 0PL/SQL procedure successfully completed.Elapsed: 00:00:00.01

说明了这么多,最重要的问题来了。

1. 如何判断我的数据库是否受这个scn机制变化的影响?

  • 如果你的所有Oracle数据库都是11.2.0.4或12.2等新版本,那么无需做任何处理;

  • 如果你的所有数据库中,有部分低版本(如10205、11.1)需要通过dblink访问高版本的库(如11.2.0.4,12.2),那么可能有风险,建议将低版本的库进行升级或者安装上面推荐的Patch;

  • 如果你的数据库都是低版本的库,那么不受任何影响;

  • 如果你的数据库之间,没有dblink相互访问,你也可以高枕无忧!


2. 如果判断一个数据库的scn是否异常,是否达到scheme 极限

SYS@ora122>select dbms_flashback.get_system_change_number "current value",  2         ((((to_number(to_char(sysdate,'YYYY'))-1988)*12*31*24*60*60) +  3         ((to_number(to_char(sysdate,'MM'))-1)*31*24*60*60) +  4         (((to_number(to_char(sysdate,'DD'))-1))*24*60*60) +  5         (to_number(to_char(sysdate,'HH24'))*60*60) +  6         (to_number(to_char(sysdate,'MI'))*60) +  7         (to_number(to_char(sysdate,'SS')))) * (16*1024)) "RSL scheme 1",  8         round(dbms_flashback.get_system_change_number/((((to_number(to_char(sysdate,'YYYY'))-1988)*12*31*24*60*60) +  9         ((to_number(to_char(sysdate,'MM'))-1)*31*24*60*60) + 10         (((to_number(to_char(sysdate,'DD'))-1))*24*60*60) + 11         (to_number(to_char(sysdate,'HH24'))*60*60) + 12         (to_number(to_char(sysdate,'MI'))*60) + 13         (to_number(to_char(sysdate,'SS')))) * (16*1024))*100,5) "% to RSL scheme 1" 14  from dual;         current value           RSL scheme 1 % to RSL scheme 1---------------------- ---------------------- -----------------            78,207,891     16,439,977,345,024            .00048

通过上述脚本即可判断,如果to RSL scheme 1 百分比高达90%,那么说明你的数据库scn增长异常,建议进行处理。


3. 新版本的scn机制后,scn最大可到多少?


我们知道老版本中scn最大值为power(2,48);新机制后被成为Big Scn,可达power(2,64),相差了数万倍。

最后接下来大家需要做什么? 梳理所有Oracle数据库,确认版本信息,采取行动吧!


相关推荐


升级更新:Oracle关于DB Link在2019年升级的10g版本兼容性

预警揭秘:倒计时炸弹11.2.0.4前版本DB Link必须在2019年4月升级真相

抢鲜体验:Oracle 19C单实例数据库安装步骤详解

作者简介


李真旭:网名 Roger,Oracle ACE,拥有超过10年的 Oracle 运维管理使用经验;参与过众多移动、电信、联通、银行等大型数据库交付项目, 具有丰富的运维管理经验,对 Oracle 数据库管理运行机制、锁机制、优化机制等具有深入理解;擅长 Oracle 数据库的 performance tunning、troubleshooting 以及异常恢复;个人博客:http://www.killdb.com


资源下载

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

2018DTCC ,数据库大会PPT

2018DTC,2018 DTC 大会 PPT

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

DBALIFE ,“DBA 的一天”海报

DBA04 ,DBA 手记4 电子书

122ARCH ,Oracle 12.2体系结构图

2018OOW ,Oracle OpenWorld 资料

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

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

请备注:云和恩墨大讲堂

SCN风波又起,2019年6月之前Oracle必须升级吗?相关推荐

  1. oracle数据库6月之后的数据,Oracle数据库SCN存在可能在2019年6月导致宕机问题

    当前的问题 Oracle日前发布了两个公告在其官网上,简单描述为对应的数据库都需要打上对应的最小补丁,否则在2019年6月的时候可能会导致大范围宕机的情况. SCN是System Change Num ...

  2. 2019年5月数据库流行度排行:老骥伏枥与青壮图强

    在五一假期中,DB-Engines 的2019年度5月份数据库流行度排行榜已然出炉. 在前十名中,同比下降的数据库产品有四个,分别是 Oracle .MySQL.Microsoft SQL Serve ...

  3. 天津12月计算机二级报名入口,2019年12月天津计算机二级考试报名入口已开通

    [摘要]天津市2019年12月计算机二级考试报名入口已开通,准备参加天津12月考试的小伙伴们抓紧时间去报名了,为了方便大家报名,环球网校小编整理了2019年12月天津计算机二级考试报名入口,小伙伴们快 ...

  4. D2 日报 2019年6月11日

    ? 开源项目 ➡️ sfyc23/EverydayWechat watch 34 star 1690 fork 317 每日自动给女朋友发微信暖心话. github.com ➡️ YMFE/yapi ...

  5. epubbuilder 过期_记者调查|浠水县思源实验学校向学生发过期牛奶,生产日期2019年12月14日...

    楚天都市报11月2日讯(记者董淑健 通讯员魏学建) 生产日期2019年12月14日,保质期6个月.过期几个月的牛奶能喝吗?几天前,居然通过学校食堂发到了学生手中. 浠水县思源实验学校的一些学生家长对此 ...

  6. 资源|2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 2019 年 10 月,谷歌正式宣布,开源机器学习库 TensorFlow 2.0 现在 ...

  7. Oracle已从2019年1月起收取Java费用

    Oracle (甲骨文)近日宣布,"2019年1月之后",如果没有他们的商业许可证,JavaSE 8 将不会再收到公开更新,也将无法用于"商业,商业或生产用途" ...

  8. D2 日报 2019年1月2日

    官网阅读获得更好的体验,传送门<日报 2019年1月2日> 你有一个苹果,我有一个苹果,交换之后我们还是各自有一个苹果. 你有一份知识,我有一份知识,我们互相分享一下就都有了两份知识. 开 ...

  9. 2019手机浏览器排名_浏览器排行榜2019年1月浏览器市场份额排名

    各大电脑浏览器2019年1月浏览器市场份额排名如何?NetMarketShare的最新统计数据显示,2019年1月份Google Chrome浏览器在桌面.笔记本上的份额已达67.29%,比此前一个月 ...

最新文章

  1. SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
  2. 2020年2月全国程序员工资统计
  3. 设置好网络协议了为何网络还是不通_记一次菜鸟网络的面试经历
  4. JavaScript设计模式 单例模式
  5. 2021南航计算机专硕上岸经验贴
  6. 机器人仿真软件小汇总
  7. 如何用matlab求向量在基下的坐标,请问什么是有关向量的基底、基向量、基坐标?...
  8. 原来String、StringBuffer、StringBuilder底层是这么回事
  9. “人活着是为了什么?”“生活的中心是什么?”
  10. 登陆远程kvm_KVM远程VMM管理
  11. Facebook联手纽约大学,要把核磁共振成像时间缩短10倍
  12. 模型选择的几种方法:AIC,BIC,HQ准则
  13. PMBOK2012的几种合同形式 PPP和BOT
  14. 单相半波可控整流电路仿真设计(任务书+lunwen+MATLAB仿真源文件)
  15. 印尼用户app使用特点
  16. ccs一次替换一个多出使用的变量
  17. Ubuntu的基本用法:常用指令,控制流程和重定向
  18. SAST + SCA: 结合使用安全升级
  19. umeditor 专题
  20. python安装环境变量出错_在windows 10上安装twisted时出错。INCLUDE环境变量为空

热门文章

  1. 360安全路由器v2处理器_您的路由器有多不安全?
  2. opensource项目_最佳Opensource.com:编程
  3. 卡尔曼滤波原理(2)
  4. ROS笔记(27) 机械臂的组装
  5. 开关电源怎么测试文波_开关电源纹波标准与规范测试说明
  6. Y15BeTa的乱搞方法(占坑待填)
  7. $mona$要成为高端玩家
  8. 查找某一字符串在目标字符串中所在的位置
  9. ActiveMq笔记3-AMQ高可用性理论
  10. 【Win】使用L2TP出现809错误