找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 13549|回复: 22

[数据库知识] 一次数据库的灾难恢复过程

[复制链接]
发表于 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: [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,至此问题已全部解决,而且没有发生数据丢失的情况。
发表于 2017-3-31 19:55:55 | 显示全部楼层
首先进行控制文件的恢复:
回复 点赞 拍砖

使用道具 举报

发表于 2015-3-5 12:58:11 | 显示全部楼层
好像很厉害的样子,只能仰望
回复 点赞 拍砖

使用道具 举报

发表于 2014-7-21 12:18:03 | 显示全部楼层
太高深了,楼主应该过了OCM
回复 点赞 拍砖

使用道具 举报

发表于 2018-9-27 10:03:13 | 显示全部楼层
谢谢分享,学习中
回复 点赞 拍砖

使用道具 举报

发表于 2019-3-3 23:09:40 | 显示全部楼层
没学过oracle
回复 点赞 拍砖

使用道具 举报

发表于 2006-12-29 10:18:35 | 显示全部楼层
这个没有搞好,好好学习一下,不过有没有SQL方面的呢
发表于 2007-1-26 21:32:22 | 显示全部楼层
一般操作人员不要轻易学
发表于 2007-8-30 10:28:24 | 显示全部楼层
这么复杂不会用啊....
发表于 2007-8-30 20:31:06 | 显示全部楼层
我晕,下载了一个又不能下下一个了
发表于 2007-9-3 14:52:50 | 显示全部楼层
学习中
发表于 2007-9-11 14:55:38 | 显示全部楼层
  谢谢分享,正在学习中
发表于 2007-9-11 15:14:07 | 显示全部楼层
一般操作人员也不会操作啊
发表于 2007-9-30 13:13:21 | 显示全部楼层
一般操作人员不要轻易学,太复杂了
发表于 2007-10-2 09:07:55 | 显示全部楼层
搞不来,太深奥        
发表于 2009-9-7 17:48:05 | 显示全部楼层
太高深了,楼主应该过了OCP
发表于 2012-9-10 12:58:41 | 显示全部楼层
很深奥。
回复 点赞 拍砖

使用道具 举报

发表于 2012-9-26 10:53:38 | 显示全部楼层
太深了.....
回复 点赞 拍砖

使用道具 举报

发表于 2012-10-12 17:47:04 | 显示全部楼层
这个太过高深,还不敢玩。
回复 点赞 拍砖

使用道具 举报

发表于 2013-4-27 09:58:38 | 显示全部楼层
一般操作人员也不会操作啊
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-5-3 08:39 , Processed in 0.056736 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表