很多时候,我们需要调整数据库系统的SCN值,有的是为了恢复的需要,如为了解决clearcase/" target="_blank" >cc>ORA-600 2662错误. 而以下修改纯属无聊: 1.通过oradebug修改SCN 2.确认更改
[oracle@jumper oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Wed Dec 21 10:33:35 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - ProductionSQL> col a for 999999999999999
SQL> select CHECKPOINT_CHANGE# a from v$datafile; A
---------------
107374358304
107374358304
107374358304SQL> oradebug setmypid
Statement processed.
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [5000BC68, 5000BC88) = 00000019 0002F97F 00004979
00000000 00000000 00000000 00000000 5000B948
SQL> oradebug poke 0x5000BC69 4 8
BEFORE: [5000BC68, 5000BC70) = 00000019
AFTER: [5000BC68, 5000BC70) = 00000819
SQL> select dbms_flashback.get_system_change_number a from dual;
A
----------------
8903467399681SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [5000BC68, 5000BC88) = 00000819 0002FA0C 00004A75
00000000 00000000 00000000 00000000 5000B948
SQL>
SQL> alter system checkpoint;System altered.
SQL> select CHECKPOINT_CHANGE# a from v$datafile;
A
----------------
8903467399867
8903467399867
8903467399867
3.此时无法正常关闭数据库
Oracle会检测到异常:
SQL> shutdown immediate; |
4.shutdown abort强制关闭数据库
重新启动会出现错误
SQL> shutdown abort; Total System Global Area 114365800 bytes |
5.通过不完全恢复启动数据库
SQL> recover database using backup controlfile until cancel;
Database altered. |
此时数据库可以正常打开