Skip to Main Content

Chinese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

重建控制文件打开数据库时报错ORA-01092: ORACLE instance terminated. Disconnection forced

yongjingSep 8 2012 — edited Sep 10 2012
前天帮医保中心恢复数据库时遇到的一个问题,数据库出问题是因为操作失误删除了所有的控制文件,后面重建控制文件打开数据库时报ora-01092的错误
原因是打开数据库时报
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 5 with name “_SYSSMU5$” too small
我猜测的原因打开数据库时根据日志文件回滚未提交的事务所造成的.
下面是我解决访问题的方法,我在自己的数据库上做了测试后来总算打开数据库了
当控制文件时而重做日志文件还有且数据库有没有提交的数据时如何恢复
在重建控制文件前应该先将原来的重做日志文件备份后在删除,但如果你在创建控制文件时使用原来的日志文件那么在打开数据库时会报错,错误信息如下:
SQL>alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced

所以在重建控制文件前应该先将原来的重做日志文件备份后在删除在创建时不使用原来的重做日志文件
SQL> CREATE CONTROLFILE set Database ocp Resetlogs
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'D:\oracle\product\10.2.0\oradata\ocp\RED001.LOG'SIZE 50M,
9 GROUP 2 'D:\oracle\product\10.2.0\oradata\ocp\RED002.LOG'SIZE 50M,
10 GROUP 3 'D:\oracle\product\10.2.0\oradata\ocp\RED003.LOG'SIZE 50M
11 DATAFILE
12 'D:\oracle\product\10.2.0\oradata\ocp\SYSTEM01.DBF',
13 'D:\oracle\product\10.2.0\oradata\ocp\UNDOTBS01.DBF',
14 'D:\oracle\product\10.2.0\oradata\ocp\SYSAUX01.DBF',
15 'D:\oracle\product\10.2.0\oradata\ocp\USERS01.DBF'
16 CHARACTER SET ZHS16GBK
17 ;

控制文件已创建。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: ??????????? RESETLOGS ? NORESETLOGS ??


SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: ?? 1 ?????????????
ORA-01110: ???? 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\OCP\SYSTEM01.DBF'


SQL> alter database add logfile group 1;
alter database add logfile group 1
*
第 1 行出现错误:
ORA-01184: ????? 1 ???


SQL> select group#,sequence#,members,bytes,status,archived from v$log;

GROUP# SEQUENCE# MEMBERS BYTES STATUS ARC
---------- ---------- ---------- ---------- ---------------- ---
1 0 1 52428800 UNUSED YES
3 0 1 52428800 CURRENT YES
2 0 1 52428800 UNUSED YES

SQL> ALTER DATABASE ADD LOGFILE GROUP 4
2 ('D:\oracle\product\10.2.0\oradata\ocp\redo04a.log','D:\oracle\product\
10.2
3 .0\oradata\ocp\redo04b.log')
4 SIZE 512 M;
ALTER DATABASE ADD LOGFILE GROUP 4
*
第 1 行出现错误:
ORA-00301: ?????? 'D:\oracle\product\10.2
.0\oradata\ocp\redo04b.log' ??? - ??????
ORA-27040: ??????, ??????
OSD-04002: ????????????
O/S-Error: (OS 123) ????????????????????????????????


SQL> ALTER DATABASE ADD LOGFILE GROUP 4
2 ('D:\oracle\product\10.2.0\oradata\ocp\redo04a.log','D:\oracle\product\
10.2.0\oradata\ocp\redo04b.log')
3 SIZE 50 M;

数据库已更改。

SQL> alter database drop logfile group 1;

数据库已更改。

SQL> alter database drop logfile group 2;

数据库已更改。

SQL> recover database until cancel;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????


SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: ?? 1 ?????????????
ORA-01110: ???? 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\OCP\SYSTEM01.DBF'


SQL> recover database;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????


SQL> create pfile from spfile;

文件已创建。
在创建的initSID.ora的初始化参数文件中加入以下参数:
allowresetlogs_corruption=true
allowterminal_recovery_corruption=true
undo_tablespace='SYSTEM'
undo_management='MANUAL'

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount pfile=D:\oracle\product\10.2.0\db_1\database\initocp.ora
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 88083332 bytes
Database Buffers 515899392 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。


SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\OCP\SYSTEM01.DBF'

SQL> recover datafile 1;
完成介质恢复。
SQL> recover datafile 2;
完成介质恢复。
SQL> recover datafile 3;
完成介质恢复。
SQL> recover datafile 4;
完成介质恢复。
SQL> recover datafile 5;
ORA-01179: 文件 5 不存在


SQL> alter database open;

数据库已更改。

SQL>

帖子经 yongjing编辑过
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 8 2012
Added on Sep 8 2012
8 comments
1,380 views