暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-600 2662/kcbzib_kcrsds_1故障克星---Patch_SCN

惜分飞 2025-12-30
97
Oracle恢复利器--Oracle Recovery Tools
Oracle boostrap$异常一键修复工具
Oracle bbed升级版obet(Oracle Block Edit Tool)
如果你是一位稍微有点故事的老Oracle dba,一定遇到过在经典的ORA-600 2662/2663错误;如果你接触的主要是12C+版本Oracle数据库,那很可能遇到过ORA-600 kcbzib_kcrsds_1错误。这些问题的常规思路就是推Oracle SCN,一般解决思路是数据库级别:event,隐含参数,oradebug,操作系统级别gdb,数据文件级别bbed。但是这些需要深厚的Oracle功底和熟练的操作技巧,这款Patch_SCN可以实现一键完成修改操作,实现数据库快速恢复。

软件说明

该软件是惜分飞(https://www.xifenfei.com)开发,仅用来查看和修改Oracle数据库SCN(System Change Number),主要使用在数据库因为某种原因导致无法正常启动的情况下使用该工具进行解决.特别是Oracle新版本中使用隐含参数,event,oradebug等方法无法推进Oracle SCN的情况下,使用该工具能够快速修改SCN,实现数据库启动成功.

不同.NET Framework对应exe版本说明

Patch_SCN_Net2.exe 为.NET Framework 2.0,3.0,3.5版本支持(比如2008及其以前版本)

Patch_SCN_Net4.exe 为.NET Framework 4.0及其以后版本支持(比如2012及其以后版本)

Linux平台直接使用Patch_SCN工具进行修改


支持数据库版本

oracle 9i到oracle 26ai

软件使用(for Window)

检索Oracle进程

通过点击“检索oracle进程”,可以获取到该服务器上运行的所有oracle进程等信息

选择Oracle进程

通过点击“检索oracle进程”获取的结果,可以查看对应的进程需要修改Oracle SCN的地址,

绝大部分情况下,软件可以自动获取到地址,如果软件自动获取地址不对,请联系惜分飞进行处理

查看Oracle SCN值

通过点击“查看SCN值”,即可查看到实时状态的Oracle SCN的情况(注意如果是mount状态,查看scn值为0)


修改Oracle SCN值

填写正确的需要修改是SCN值,然后进行修改(需要确保16进制输入框记录正确)

查询数据库scn

由于数据库在运行,所以查询的scn会比刚修改的时候稍微大一点

    C:\Users\XFF>sqlplus / as sysdba


    SQL*Plus: Release 11.2.0.4.0 Production on 星期一 12月 29 22:26:06 2025


    Copyright (c) 1982, 2013, Oracle.  All rights reserved.




    连接到:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options


    SQL> set num 20
    SQL> select dbms_flashback.get_system_change_number from dual;


    GET_SYSTEM_CHANGE_NUMBER
    ------------------------
                 80000000035

    软件使用(for Linux)

    参数介绍

      [oracle@iZbp11c0qyuuo1gr7j98upZ tmp]$ ./Patch_SCN 
      Usage:
        Software License:       ./Patch_SCN -key
        Get Oracle SPID:        ./Patch_SCN -spid
        Get SCN address:        ./Patch_SCN -addr
        Automatic address mode: ./Patch_SCN <spid> <new_value>
        Manual address mode:    ./Patch_SCN <spid> <address> <new_value>
        Where:
          <spid> - Oracle process ID
          <address> - Memory address (hexadecimal)
          <new_value> - SCN value to modify (decimal or hexadecimal)

      -key 进行注册授权

      -spid 获取LOCAL=NO的进程spid,供后续恢复参考

      -addr 获取需要修改的内存地址

      修改SCN之时,<spid>为必须输入,<address>这个是可选(如果软件无法检测到地址,需要人工输入),SCN值可以是16进制(0x开头)也可以是10进制 


      尝试获取spid进程

        [oracle@iZbp11c0qyuuo1gr7j98upZ tmp]$ ./Patch_SCN -spid


        Found 1 Oracle LOCAL=YES processes: 19914  


        Process Details:
        UID        PID  PPID  C STIME TTY          TIME CMD
        oracle   19914 19912  0 23:02 ?        00:00:00 oraclexifenfei (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

        尝试获取内存地址

          [oracle@iZbp11c0qyuuo1gr7j98upZ tmp]$ ./Patch_SCN -addr
          Retrieving Oracle SCN address...
          Successfully retrieved SCN address: 0x6001ae70

          尝试修改Oracle SCN

          当前数据库scn值

            SQL> select dbms_flashback.get_system_change_number from dual;


            GET_SYSTEM_CHANGE_NUMBER
            ------------------------
                             1423852

            修改Oracle scn

              [oracle@iZbp11c0qyuuo1gr7j98upZ tmp]$ ./Patch_SCN 19914 10000000
              Successfully obtained address automatically: 0x6001ae70
              Original Oracle SCN at Address 0x6001ae70: 0x15b9ff
              Are you sure you want to modify Oracle SCN? (yes/no): yes
              New SCN at Address 0x6001ae70: 0x989680
              Oracle SCN successfully modified.

              查看修改之后的scn值

                SQL> select dbms_flashback.get_system_change_number from dual;


                GET_SYSTEM_CHANGE_NUMBER
                ------------------------
                                10000001


                通过修改控制文件实现Oracle SCN修改

                这种方法修改scn值,不依赖操作系统平台,直接对控制文件的SCN标记位进行修改,具体操作步骤:

                1. “选择Oracle控制文件”,然后会读取来当前SCN的值,

                2. 输入需要修改的新SCN值,然后点击修“改控制文件SCN值”,可以完成Oracle SCN值修改。

                注意:该方法要求数据库处于关闭或者nomount状态

                风险提示

                Oracle的scn修改是风险性较高而且不可逆的操作,千万不要生产环境随意操作

                文章转载自惜分飞,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论