环境:RHEL 6.5(x86-64) + Oracle 11.2.0.4

声明:推进SCN属于非常规恢复范畴,不建议非专业人员操作,否则后果自负。

需求:我这里演示下推进SCN 10W数量级,实际需求推进多少可以根据ORA-600 [2662] [a] [b] [c] [d] [e]具体值来确认。

ARGUMENTS:

Arg [a] Current SCN WRAP

Arg [b] Current SCN BASE

Arg [c] dependent SCN WRAP

Arg [d] dependent SCN BASE

Arg [e] Where present this is the DBA where the dependent SCN came from.

更多详情可参考: ORA-600 [2662] "Block SCN is ahead of Current SCN" (文档 ID 28929.1)

1.查看当前数据库的Current SCN

  1. SYS@orcl> select current_scn||'' from v$database;
  2. CURRENT_SCN||''
  3. --------------------------------------------------------------------------------
  4. 4563483988

可以看到当前SCN是4563483988,我现在想推进SCN,在10w级别,也就是4563483988标红数字修改为指定值。

2.重新启动数据库到mount阶段

重新启动数据库到mount阶段:

  1. SYS@orcl> shutdown abort
  2. ORACLE instance shut down.
  3. SYS@orcl> startup mount
  4. ORACLE instance started.
  5. Total System Global Area 1235959808 bytes
  6. Fixed Size 2252784 bytes
  7. Variable Size 788529168 bytes
  8. Database Buffers 436207616 bytes
  9. Redo Buffers 8970240 bytes
  10. Database mounted.

3.使用oradebug poke推进SCN

我这里直接把十万位的"4"改为"9"了,相当于推进了50w左右:
说明:实验发现oradebug poke 推进的SCN值,既可以指定十六进制的0x11008DE74,也可以直接指定十进制的4563983988。

  1. SYS@orcl> oradebug setmypid
  2. Statement processed.
  3. SYS@orcl> oradebug dumpvar sga kcsgscn_
  4. kcslf kcsgscn_ [06001AE70, 06001AEA0) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6001AB50 00000000
  5. SYS@orcl> select to_char(checkpoint_change#, 'XXXXXXXXXXXXXXXX') from v$database;
  6. TO_CHAR(CHECKPOINT_CHANGE#,'XXXXXX
  7. ----------------------------------
  8. 110013C41
  9. SYS@orcl> oradebug poke 0x06001AE70 8 4563983988
  10. BEFORE: [06001AE70, 06001AE78) = 00000000 00000000
  11. AFTER: [06001AE70, 06001AE78) = 1008DE74 00000001
  12. SYS@orcl> oradebug dumpvar sga kcsgscn_
  13. kcslf kcsgscn_ [06001AE70, 06001AEA0) = 1008DE74 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6001AB50 00000000
  14. SYS@orcl> alter database open;
  15. Database altered.
  16. SYS@orcl> select current_scn||'' from v$database;
  17. CURRENT_SCN||''
  18. --------------------------------------------------------------------------------
  19. 4563984271

可以看到已经成功将SCN推进到4563983988,SCN不断增长,所以这里查到的值略大一些。

4.补充实际计算推进SCN的方法

本文在 2018-12-16 进一步补充说明:
在实际这类工作中,我们实际应该是要认真计算好需要推进SCN的值,而不应图省事直接给一个很大的值。后者不但是技术水平不成熟的表现,而且是不负责任的行为。

  1. --ORA-00600: internal error code, arguments: [2662], [2], [1424107441], [2], [1424142235], [8388617], [], []
  2. select 2*power(2,32)+1424142235 from dual;
  3. 10014076827
  4. --ORA-00600: internal error code, arguments: [2662], [2], [1424142249], [2], [1424142302], [8388649], [], []
  5. select 2*power(2,32)+1424143000 from dual;
  6. 10014077592

总结公式:c * power(2,32) + d {+ 可适当加一点,但不要太大!}

c代表:Arg [c] dependent SCN WRAP

d代表:Arg [d] dependent SCN BASE

  1. oradebug setmypid
  2. oradebug dumpvar sga kcsgscn_
  3. oradebug poke 0x060012658 8 10014077592
  4. oradebug dumpvar sga kcsgscn_
  5. alter database open;

最后要说的是,做事情还是多考虑些,在非常规恢复中也能温柔的去推进SCN,高级DBA的价值从细节上体现。

Oracle推进SCN系列:使用oradebug在mount状态下推进SCN的更多相关文章

  1. mount状态下表空间情报试验

    SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> sta ...

  2. 【OCP|OCM】Oracle培训考证系列

     [OCP|OCM]Oracle培训考证系列  我的个人信息 网名:小麦苗 QQ:646634621 QQ群:618766405 我的博客:http://blog.itpub.net/26736162 ...

  3. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  4. [Oracle] Data Guard 系列(5) - 创建逻辑备库

    在创建逻辑备库之前,必须得先创建物理备库,关于如何创建物理备库,请参考<Data Guard 系列(4) - 在不停主库的情况下创建物理备库>. 1. 在物理备库上停止日志应用服务 SYS ...

  5. 7.oracle学习门户系列七---网络管理和配置

    oracle学习门户系列七 网络管理和配置 们学习了模式和用户.包含模式定义以及模式的作用. 这篇我么来看下ORACLE数据库中的网络管理和配置.只是这篇好像和上篇没有继承啊.这怎么看? Ok,事实上 ...

  6. oracle 12c 学习系列(1)–12c初体验

    详见原文博客链接地址: oracle 12c 学习系列(1)–12c初体验

  7. 6. oracle学习入门系列之六 模式

    oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等.篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何差别. 我们要保证的是每次 ...

  8. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

随机推荐

  1. [No000011D].NETCORE1/19-.NET Core 指南

    .NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区共同维护.跨平台的,支持 Windows.macOS 和 Linux,并且可用于设备.云和嵌入式/ ...

  2. shell监控之列出1小时内cpu占用最多的10个进程

    脚本内容如下: -------------------------------------------------------------------------------------------- ...

  3. python-----多线程、线程池、进程池

    import threadingimport time ###############################多线程################################------ ...

  4. utf-8 utf8

    mysql> DROP TABLE IF EXISTS student; Query OK, 0 rows affected (0.00 sec) mysql> create table ...

  5. Linux之sed、awk

    Linux 之AWK 命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格默认分隔 ...

  6. wpf中通过ObjectDataProvider实现文本框的双向数据绑定(ps:适用于在文本框比较多的时候使用)

    前端代码: 也页面的xaml中引入ObjectDataProvider: <Window.Resources> <ResourceDictionary> <ObjectD ...

  7. __dict__和dir()的区别:未完

    1.  dir()是一个函数,返回的是list.__dict__是一个字典,键为属性名,值为属性值: 2.  dir()用来寻找一个对象的所有属性,包括__dict__中的属性,所以说__dict__ ...

  8. PHP进阶-PHP执行和加速原理

  9. [knowledge][lisp] lisp与AI

    https://blog.youxu.info/2009/08/31/lisp-and-ai-1/ https://blog.youxu.info/2010/02/10/lisp-and-ai-2/

  10. pandas与sqlalchemy交互实现科学计算

      import pandas as pd import numpy as np from sqlalchemy import create_engine #建立数据库引擎 engine = crea ...