|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
首先进行控制文件的恢复:
在C:\命令提示符下输入 sqlplus /nolog,进入到SQLPLUS的操作环境;
SQL>connect sys/ngsoft as sysdba ===用SYS用户以DBA身份登录
SQL>shutdown abort
SQL>startup nomount
=====重建控制文件
SQL>create controlfile reuse database sxgzorcl noresetlogs archivelog
Logfile group 1 'g:\oracle\oradata\sxgzorcl\redo01.log',
group 2 'g:\oracle\oradata\sxgzorcl\redo02.log',
group 3 'g:\oracle\oradata\sxgzorcl\redo03.log'
datafile 'g:\oracle\oradata\sxgzorcl\system01.dbf',
'g:\oracle\oradata\sxgzorcl\users01.dbf',
'g:\oracle\oradata\sxgzorcl\temp01.dbf',
'g:\oracle\oradata\sxgzorcl\tools01.dbf',
'g:\oracle\oradata\sxgzorcl\indx01.dbf',
'g:\oracle\oradata\sxgzorcl\dr01.dbf',
'g:\oracle\oradata\sxgzorcl\NGPDATA.ORA',
'g:\oracle\oradata\sxgzorcl\rbs01.dbf';
=====成功地重建控制文件后,我们尝试着打开数据库,但系统报错,提示需要进行介质恢复。
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\system01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\users01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\temp01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\tools01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\indx01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\dr01.dbf';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\NGPDATA.ORA';
SQL>recover datafile 'g:\oracle\oradata\sxgzorcl\rbs01.dbf';
====进行介质恢复之后,又进行了数据库的恢复
SQL>recover database;
====提示恢复成功
SQL>alter database open;
打开数据库时提示ORA-01092: ORACLE instance terminated. Disconnection forced.晕,怎么会这样呢?赶紧查看alertsxgzorcl.log,发现提示错误为:
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [88], [78], [1], [], [], [], []
真是受不了,怎么会出现600错误的啊?经过在网上不断的资料查找,发现有类似的问题,但并没有解决办法。最后在一篇文档中发现有以下说明:
ORA-00600错误中4000到5000的,都是因为rollback segment的问题引起的,可以考虑在数据库启动参数时将所有的rollback segment去掉,剩下system,然后重启数据库即可。
根据以上的提示,进行了操作,果然可以解决问题,后来我总结了一下,解决办法应该如下:
1、对于Oracle 9i以前的版本或者回滚段管理模式为MANUAL的,可以在initSID.ora文件中的参数rollback_segments=(...)中将其他的Rollback segments名称去掉,然后启动数据库,删除所有的rollback segment,重建即可。
2、对于自动管理回滚段的,则可以先把undo_management管理模式改为MANUAL,然后重启数据库,把参数undo_tablespace所指的表空间重建即可解决。
OK,至此问题已全部解决,而且没有发生数据丢失的情况。 |
|