Oracle杀手--可怕的Windows优化大师
--oracle的日志和控制文件恢复
昨天下午一直到今天下午,一整天的时间经历了一场Windows优化大师的带来的“恶梦”,本不该怪罪这位“大师”的,原因在于自己用了这位“大师”,希望使用oracle的朋友在使用它时要注意一些问题。不然让它删除log和dmp文件。有可能大家都知道了,不过我还是第一次遇到,下面把这期间发生的事情讲给大家听:
昨天下午觉得系统比较慢,想起了Windows优化大师,于是乎下了个最新版安装、运行、“优化”,果然系统里删除了好多“垃圾”(在不知情之下,这些所谓的垃圾包括有用的注册表、珍贵的Oracle备份文件.dmp)。
“优化”之后,我的Oracle起不来了。怎么办?于是:
1)遂google了一下,发现优化大师会优化imagePath注册表,于是到注册表里去改。改完后重启,Oracle 仍然不能连接,没办法
2)系统还原吧,还原后仍然不能用,难道不是注册表的问题?没办法
3)新建了一个实例,准备找来刚刚备的Dmp文件恢复。晕!.dmp文件哪里去了?难道隐藏了?解开隐藏属性。汗!仍然没有?
我一拍脑袋,想起了“优化”大师干掉的吧,系统又还原了,怎么办?电脑里上百个.dmp文件都没了,十几年的备份。由于前天备份的硬盘坏了,格式化后还没有来得及把.dmp文件备到新硬盘里去。也就是说“大师”可能杀了我们十几年的资料。于是:
1)要么恢复.dmp文件
2)要么修复oracle。但是:
找来easy-recover和R-studio两个硬盘恢复软件,把.dmp文件恢复出来,但是导入数据时总是出现"未知的字符集",google后发现并非字符集出问题,而是文件恢复有问题,打电话给硬盘恢复公司,说要重组dmp文件,需要十几万或几万。只有选择第2)套方案修复oracle了。我对oracle也是一知半解,没有做过恢复工作,所以绕了好多弯。
先看alter.log日志文件吧,发现找不到重做日志文件red01.log和red02.log。再次崩溃!“优化”大师把我的log日志文件也给删除了!怎么办?QQ群里的朋友提示:重建日志文件了,网上找来了很多办法,做了一晚,怎么也不成功,毕竟我是二把刀!在痛不欲生的情况下,第二天一大早,找到了一位oracle数据库管理员,请教了一番,他告诉我只要表空间文件还在控制文件和日志文件坏了都是可以恢复的,终于在他的指导下我完成了数据库修复工作,下面这个方面比网上一些方法要简单一些,我把它记下来供自己查阅也供遇到此类事件的朋友使用。
背景描述:oracle实例A的日志文件被误删除,同时因为后期修复过程中的误操作把控制文件也给破坏了。解决思路是:新建一个干净的实例,把坏掉实例的表空间数据文件倒进干净的实例中,并重新建立日志与控制文件的关联。具体做法如下:
1)新建一个实例B(D:\ORACLE\ORADATA\B\),到“服务”里停止实例B;
2)把实例A所有的.dbf文件拷贝到实例A里
3)“服务”启动实例B;
4)进入DOS,
c:/>sqlplus /nolog
sql>connect /@instancename as sysdba;
sql>startup ummount;
--下面是关键的一步,建立控制文件的关联
sql>CREATE CONTROLFILE REUSE DATABASE "B" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\B\REDO01.LOG' SIZE 100M,
GROUP 2 'D:\ORACLE\ORADATA\B\REDO02.LOG' SIZE 100M,
GROUP 3 'D:\ORACLE\ORADATA\B\REDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\B\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\B\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\B\CWMLITE01.DBF',
'D:\ORACLE\ORADATA\B\DRSYS01.DBF',
'D:\ORACLE\ORADATA\B\EXAMPLE01.DBF',
'D:\ORACLE\ORADATA\B\INDX01.DBF',
'D:\ORACLE\ORADATA\B\ODM01.DBF',
'D:\ORACLE\ORADATA\B\TOOLS01.DBF',
'D:\ORACLE\ORADATA\B\USERS01.DBF',
'D:\ORACLE\ORADATA\B\XDB01.DBF';
--关于DATAFILE里的内容,需要大家自己根据情况修改。
sql>shutdown
sql>startup mount
sq;>alter database open resetlogs;
5)这样应该就可以了,如果不行,关闭,重新连接应该就可以了。
经历这次事件,体会以下几点:
1)做开发和数据库管理的人不可以随便去使用一些软件,使用时更要仔细检查它的功能,阅读文档。
2)以前学的oracle知识大多一知半解,也很少去应用,这次的折腾以成功结束,所以对oracle有了更多的体会,也更喜欢这个数据库。
3)备份工作一定要持之以恒,不能只备在硬盘和活动硬盘里,还要备在光驱里,建立归档制度。
4)遇到困难时,热心的朋友真是多啊。网上的朋友和朋友介绍的朋友都很热心,对我的无知给给予了很多理解、同情和帮助。
昨天下午一直到今天下午,一整天的时间经历了一场Windows优化大师的带来的“恶梦”,本不该怪罪这位“大师”的,原因在于自己用了这位“大师”,希望使用oracle的朋友在使用它时要注意一些问题。不然让它删除log和dmp文件。有可能大家都知道了,不过我还是第一次遇到,下面把这期间发生的事情讲给大家听:
昨天下午觉得系统比较慢,想起了Windows优化大师,于是乎下了个最新版安装、运行、“优化”,果然系统里删除了好多“垃圾”(在不知情之下,这些所谓的垃圾包括有用的注册表、珍贵的Oracle备份文件.dmp)。
“优化”之后,我的Oracle起不来了。怎么办?于是:
1)遂google了一下,发现优化大师会优化imagePath注册表,于是到注册表里去改。改完后重启,Oracle 仍然不能连接,没办法
2)系统还原吧,还原后仍然不能用,难道不是注册表的问题?没办法
3)新建了一个实例,准备找来刚刚备的Dmp文件恢复。晕!.dmp文件哪里去了?难道隐藏了?解开隐藏属性。汗!仍然没有?
我一拍脑袋,想起了“优化”大师干掉的吧,系统又还原了,怎么办?电脑里上百个.dmp文件都没了,十几年的备份。由于前天备份的硬盘坏了,格式化后还没有来得及把.dmp文件备到新硬盘里去。也就是说“大师”可能杀了我们十几年的资料。于是:
1)要么恢复.dmp文件
2)要么修复oracle。但是:
找来easy-recover和R-studio两个硬盘恢复软件,把.dmp文件恢复出来,但是导入数据时总是出现"未知的字符集",google后发现并非字符集出问题,而是文件恢复有问题,打电话给硬盘恢复公司,说要重组dmp文件,需要十几万或几万。只有选择第2)套方案修复oracle了。我对oracle也是一知半解,没有做过恢复工作,所以绕了好多弯。
先看alter.log日志文件吧,发现找不到重做日志文件red01.log和red02.log。再次崩溃!“优化”大师把我的log日志文件也给删除了!怎么办?QQ群里的朋友提示:重建日志文件了,网上找来了很多办法,做了一晚,怎么也不成功,毕竟我是二把刀!在痛不欲生的情况下,第二天一大早,找到了一位oracle数据库管理员,请教了一番,他告诉我只要表空间文件还在控制文件和日志文件坏了都是可以恢复的,终于在他的指导下我完成了数据库修复工作,下面这个方面比网上一些方法要简单一些,我把它记下来供自己查阅也供遇到此类事件的朋友使用。
背景描述:oracle实例A的日志文件被误删除,同时因为后期修复过程中的误操作把控制文件也给破坏了。解决思路是:新建一个干净的实例,把坏掉实例的表空间数据文件倒进干净的实例中,并重新建立日志与控制文件的关联。具体做法如下:
1)新建一个实例B(D:\ORACLE\ORADATA\B\),到“服务”里停止实例B;
2)把实例A所有的.dbf文件拷贝到实例A里
3)“服务”启动实例B;
4)进入DOS,
c:/>sqlplus /nolog
sql>connect /@instancename as sysdba;
sql>startup ummount;
--下面是关键的一步,建立控制文件的关联
sql>CREATE CONTROLFILE REUSE DATABASE "B" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\B\REDO01.LOG' SIZE 100M,
GROUP 2 'D:\ORACLE\ORADATA\B\REDO02.LOG' SIZE 100M,
GROUP 3 'D:\ORACLE\ORADATA\B\REDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\B\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\B\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\B\CWMLITE01.DBF',
'D:\ORACLE\ORADATA\B\DRSYS01.DBF',
'D:\ORACLE\ORADATA\B\EXAMPLE01.DBF',
'D:\ORACLE\ORADATA\B\INDX01.DBF',
'D:\ORACLE\ORADATA\B\ODM01.DBF',
'D:\ORACLE\ORADATA\B\TOOLS01.DBF',
'D:\ORACLE\ORADATA\B\USERS01.DBF',
'D:\ORACLE\ORADATA\B\XDB01.DBF';
--关于DATAFILE里的内容,需要大家自己根据情况修改。
sql>shutdown
sql>startup mount
sq;>alter database open resetlogs;
5)这样应该就可以了,如果不行,关闭,重新连接应该就可以了。
经历这次事件,体会以下几点:
1)做开发和数据库管理的人不可以随便去使用一些软件,使用时更要仔细检查它的功能,阅读文档。
2)以前学的oracle知识大多一知半解,也很少去应用,这次的折腾以成功结束,所以对oracle有了更多的体会,也更喜欢这个数据库。
3)备份工作一定要持之以恒,不能只备在硬盘和活动硬盘里,还要备在光驱里,建立归档制度。
4)遇到困难时,热心的朋友真是多啊。网上的朋友和朋友介绍的朋友都很热心,对我的无知给给予了很多理解、同情和帮助。