联系:手机/微信(+86 17813235971) QQ(107644445)
标题:Patch_SCN快速修复ORA-01555数据库open故障
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
有一个朋友在线把数据文件拷贝走,然后发现异常又拷贝回来,结果再重启库发现数据库无法正常启动,尝试强制拉库
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 1046834263 generated at 07/24/2026 22:04:11 needed for thread
1
ORA-00289: suggestion : /data02/archivelog/reybtstg/1_1755_1147617488.dbf
ORA-00280: change 1046834263 for thread 1 is in sequence #1755
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/app/oracle/oradata/reybtstg/system01.dbf'
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 10 with name
"_SYSSMU10_1197734989$" too small
Process ID: 298308
Session ID: 613 Serial number: 3
alert日志报错信息
ARC0: STARTING ARCH PROCESSES COMPLETE Thread 1 opened at log sequence 1 Current log# 1 seq# 1 mem# 0: /data02/reybtstg/oradata/redo01.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Sat Jul 25 14:15:34 2026 SMON: enabling cache recovery ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x0000.3e656c5d): select ctime, mtime, stime from obj$ where obj# = :1 Errors in file /u01/app/oracle/diag/rdbms/reybtstg/reybtstg/trace/reybtstg_ora_298308.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01555: snapshot too old: rollback segment number 10 with name "_SYSSMU10_1197734989$" too small Errors in file /u01/app/oracle/diag/rdbms/reybtstg/reybtstg/trace/reybtstg_ora_298308.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01555: snapshot too old: rollback segment number 10 with name "_SYSSMU10_1197734989$" too small Error 704 happened during db open, shutting down database USER (ospid: 298308): terminating the instance due to error 704 Instance terminated by USER, pid = 298308 ORA-1092 signalled during: alter database open resetlogs... opiodr aborting process unknown ospid (298308) as a result of ORA-1092 Sat Jul 25 14:15:35 2026 ORA-1092 : opitsk aborting process
这个错误比较好处理只要修改Oracle scn即可,使用Patch_SCN for Linux进行修改
---会话1
[oracle@xff ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 25 14:21:11 2026
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile='/tmp/pfile';
ORACLE instance started.
Total System Global Area 6.4137E+10 bytes
Fixed Size 2269072 bytes
Variable Size 1.5569E+10 bytes
Database Buffers 4.8318E+10 bytes
Redo Buffers 246980608 bytes
SQL> @/tmp/rectl
Control file created.
---会话2
[oracle@xff tmp]$ ./Patch_SCN -h
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)
[oracle@xff tmp]$ ./Patch_SCN -spid
Found 3 Oracle LOCAL=YES processes: 283668 283670 305036
Process Details:
UID PID PPID C STIME TTY TIME CMD
oracle 283668 283627 0 Jul18 ? 00:15:10 oracletesta (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 283670 283627 0 Jul18 ? 00:35:25 oracletesta (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 305036 304678 0 14:21 ? 00:00:00 oracleorcltg (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
[oracle@xff tmp]$ ./Patch_SCN 305036 1146834263
Successfully obtained address automatically: 0x6001ae70
Original Oracle SCN at Address 0x6001ae70: 0x0
Are you sure you want to modify Oracle SCN? (yes/no): yes
New SCN at Address 0x6001ae70: 0x445b4d57
Oracle SCN successfully modified.
数据库正常打开
----会话1 SQL> recover database; Media recovery complete. SQL> alter database open ; Database altered. SQL>
完成本次数据库恢复工作.
