fysoft2006 发表于 2006-12-25 12:40:52

一次数据库的灾难恢复过程

首先进行控制文件的恢复:
在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: , , , , [], [], [], []
真是受不了,怎么会出现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,至此问题已全部解决,而且没有发生数据丢失的情况。

ertyu7878 发表于 2017-3-31 19:55:55

首先进行控制文件的恢复:

896704098 发表于 2015-3-5 12:58:11

好像很厉害的样子,只能仰望

mxbing1984 发表于 2014-7-21 12:18:03

太高深了,楼主应该过了OCM

fogwindxn 发表于 2018-9-27 10:03:13

谢谢分享,学习中

eling0203 发表于 2019-3-3 23:09:40

没学过oracle

wsw11111 发表于 2006-12-29 10:18:35

这个没有搞好,好好学习一下,不过有没有SQL方面的呢

yan305019 发表于 2007-1-26 21:32:22

一般操作人员不要轻易学

chen_muyu 发表于 2007-8-30 10:28:24

这么复杂不会用啊....:L :L :L

bree 发表于 2007-8-30 20:31:06

我晕,下载了一个又不能下下一个了

泰山浪子 发表于 2007-9-3 14:52:50

学习中
:handshake

white 发表于 2007-9-11 14:55:38

  谢谢分享,正在学习中

loveerp 发表于 2007-9-11 15:14:07

一般操作人员也不会操作啊:lol

djfeng2008 发表于 2007-9-30 13:13:21

一般操作人员不要轻易学,太复杂了

wangdangzlp 发表于 2007-10-2 09:07:55

搞不来,太深奥        

风帆刘工 发表于 2009-9-7 17:48:05

太高深了,楼主应该过了OCP

mimidog312 发表于 2012-9-10 12:58:41

很深奥。:L

恶魔の吻 发表于 2012-9-26 10:53:38

太深了.....

yxljie 发表于 2012-10-12 17:47:04

这个太过高深,还不敢玩。

jszzjxc 发表于 2013-4-27 09:58:38

一般操作人员也不会操作啊
页: [1] 2
查看完整版本: 一次数据库的灾难恢复过程