史上最全,呕心沥血总结oracle推进SCN方法(五)

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

前面介绍了4种推进SCN方法
(1)event 10015 来增加 scn 的值
(2)隐含参数_minimum_giga_scn 来增加 scn 的值
(3)gdb/dbx 来直接修改内存中的值
(4)使用oradebug poke 直接修改内存中的值

现在来说一下oracle推进SCN方法5:通过修改控制文件来修改 scn 的值

1、查看数据库当前scn

SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
	   2412760

select 2412760,to_char(2412760,'xxxxxxxxxxxxx'),to_char(3412760,'xxxxxxxxxxx') from dual;

   2412760 TO_CHAR(2412760,'XXXXXXXXXXX TO_CHAR(3412760,'XXXXXXX
---------- ---------------------------- ------------------------
   2412760         24d0d8                     341318

SQL> shutdown abort;

2、修改控制文件的SCN值

修改方法为:
1、当数据块为8k的时候,控制文件大小为16k
2、找到Controlfile Checkpointed at scn,偏移量为第一个块的60,比如0x4060,然后具体位置在0x4060的第9至第14个byte(共6个字节)
3、找到第一个块的第一行,如0x4000,将offset为15的flag由0x04改为0x00,并同时将checksum值(offset为16、17)全部清零(验证信息修改为全部0)。

先备份一下控制文件,然后把控制文件用UE打开:先切换文字模式,查找数据库名字“DBBBED”,然后切换为16进制,快速找到位置00004000h开始

请添加图片描述
将0499B0右键替换为000000
将36D224右键替换为想要的值:181334。
修改结果:
请添加图片描述

3、查看修改后的SCN

然后拷贝控制文件到原位置,启动数据库

SQL> startup;
ORACLE instance started.
SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
	   3412765             <<<<<< 比2412760 大了1000000

数据库启动后查询scn为3412765 (数据库当前scn)果然微大于3412760 (修改控制文件scn),证明我们通过修改控制文件scn,实现数据库scn推进是没问题的。

链接:
史上最全,呕心沥血总结oracle推进SCN方法(一)
史上最全,呕心沥血总结oracle推进SCN方法(二)
史上最全,呕心沥血总结oracle推进SCN方法(三)
史上最全,呕心沥血总结oracle推进SCN方法(四)

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老苏畅谈运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值