通过控制文件修改scn,适合11g,12c版本
SQL> set line 132
SQL> set wrap off
SQL> l1
1* select * from v$version
SQL> r
1* select * from v$version
BANNER CON_I
-------------------------------------------------------------------------------- ---------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE 12.1.0.2.0 Production
TNS for 64-bit Windows: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
SQL> select CHECKPOINT_CHANGE# a from v$datafile_header;
A
----------------
8113679
8113679
8113679
8113679
8113679
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
8113679
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> oradebug setmypid
已处理的语句
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [14BCC4270, 14BCC42A0) = 00000000 00000000 00000000 00000000 00000000 00000
00 00000000 00000000 00000000 4BCC3CF0 00000001
SQL> select to_char('8113800','xxxxxxxxx') from dual;
TO_CHAR('8
----------
7bce88
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
--开始修改控制文件,先修改control01.ctl,将control02.ctl重命名为control02bak.ctl
等control01.ctl修改完成后拷贝一份为control02.ctl,然后启动数据库检查。
通过UE打开:先切换文字模式,查找数据库名字“ZXM”,然后切换为16进制,快速找到位置00004000h开始,将04CA0C右键替换为000000
将71CD7B右键替换为想要的值:88CE7B。

修改结果如下:

然后拷贝控制文件。

此时可以启动数据库。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1677721600 bytes
Fixed Size 3046368 bytes
Variable Size 1006634016 bytes
Database Buffers 654311424 bytes
Redo Buffers 13729792 bytes
数据库装载完毕。
数据库已经打开。
SQL> oradebug setmypid
已处理的语句
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [14BCC4270, 14BCC42A0) = 007BCF48 00000000 00000000 00000000 00000000 00000000 000000
00 00000000 00000000 00000000 4BCC3CF0 00000001
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
8113803
SQL> select CHECKPOINT_CHANGE# a from v$datafile_header;
A
----------------
8113803
8113803
8113803
8113803
8113803
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [14BCC4270, 14BCC42A0) = 007BD15E 00000000 00000000 00000000 00000000 00000000 000000
00 00000000 00000000 00000000 4BCC3CF0 00000001
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
8113803
SQL> select to_char('8113803','xxxxxxxxx') from dual;
TO_CHAR('8
----------
7bce8b
其它可参考文档:
以正常库控制文件操作的,只改了一处。
[oracle@localhost.localdomain:/home/oracle]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 29 18:39:22 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> select CHECKPOINT_CHANGE# a from v$datafile_header;
A
----------
972173
972173
972173
972173
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
972173
使用ue工具打开控制文件,

[root@localhost ecard]# mv control01.ctl control01.ctl.bak
[root@localhost ecard]# rz -E
rz waiting to receive.
[root@localhost ecard]# ls -l
total 1530516
-rw-r--r-- 1 root root 9748480 Sep 29 18:37 control01.ctl
-rw-r-----. 1 oracle oinstall 9748480 Sep 29 18:05 control01.ctl.bak
-rw-r-----. 1 oracle oinstall 52429312 Sep 29 06:46 redo01.log
-rw-r-----. 1 oracle oinstall 52429312 Sep 29 18:05 redo02.log
-rw-r-----. 1 oracle oinstall 52429312 Sep 29 06:46 redo03.log
-rw-r-----. 1 oracle oinstall 534781952 Sep 29 18:05 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 775954432 Sep 29 18:05 system01.dbf
-rw-r-----. 1 oracle oinstall 30416896 Sep 27 19:42 temp01.dbf
-rw-r-----. 1 oracle oinstall 73408512 Sep 29 18:05 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5251072 Sep 29 18:05 users01.dbf
[root@localhost ecard]# chown oracle.oinstall control01.ctl
[root@localhost ecard]# cd /u01/app/oracle/fast_recovery_area/
[root@localhost fast_recovery_area]# cd ecard/
[root@localhost ecard]# ls
control02.ctl
[root@localhost ecard]# mv control02.ctl control02.ctl.bak
[root@localhost ecard]# cp /u01/app/oracle/oradata/ecard/control01.ctl ./control02.ctl
[root@localhost ecard]# ls -l
total 19040
-rw-r--r-- 1 root root 9748480 Sep 29 18:38 control02.ctl
-rw-r-----. 1 oracle oinstall 9748480 Sep 29 18:05 control02.ctl.bak
[root@localhost ecard]# chown oracle.oinstall control02.ctl
[root@localhost ecard]# su - oracle
Last login: Tue Sep 29 18:05:21 PDT 2020 on pts/1
[oracle@localhost.localdomain:/home/oracle]$ slqplus / as sysdba
bash: slqplus: command not found...
[oracle@localhost.localdomain:/home/oracle]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 29 18:39:22 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 4259082240 bytes
Fixed Size 2260040 bytes
Variable Size 872416184 bytes
Database Buffers 3372220416 bytes
Redo Buffers 12185600 bytes
Database mounted.
Database opened.

浙公网安备 33010602011771号