ITPub博客

首页 > 数据库 > Oracle > 一次Oracle数据库恢复过程

一次Oracle数据库恢复过程

原创 Oracle 作者:lilong 时间:2005-02-24 14:45:37 0 删除 编辑
单位的Oracle数据库又出问题了,经过努力终于恢复..... [@more@]

2月24日下午3点,一个同事一不小心误删除了一个重要的业务数据表。该表大概有140万记录,存储着近三年的销售数据。幸好有前一天的备份,而且当天没有业务发生,也就是说恢复前一天的数据就可以了。不过平时的备份是通过冷备份,copy所有的数据文件、控制文件和重做日志文件,这样就决定了无法单独恢复一个表,只能全数据库的恢复。无奈,为了不影响业务系统的运行,只好在另外一台PC机上安装了一个与服务器完全相同的环境,Win2000+Oracle8.1.7。然后copy所有的备份文件,按道理这样就可以在PC机上恢复出前一天的数据了。可是无法打开数据库,提示ora-01991错误,幸好以前遇到过这个现象,这是密码文件的问题。先把位于d:/oracle/ora81/database/PWDora8.ORA的文件删除,然后在命令行模式中输入
ORAPWD FILE=d:/oracle/ora81/DATABASE/PWDora8.ORA PASSWORD=ORACLE ENTRIES=10,重新建立密码文件。以前出现这种问题,作以上处理后再recover就好了,可这次不行了,recover后提示:
ora-00283: recovery session canceled due to errors
ora-01190: controlfile or data file 1 is from before the last RESETLOGS
ora-01110: data file 1: 'd:/oracle/oradata/ora8/users01.dbf'
第一感觉是users01.dbf出问题了,试着将它offline了,又提示其他的文件,一个一个都offline了,再试着alter database open成功了。这下我感觉有戏了,说明数据库的系统文件没坏,但这样的数据库还是不行操作呀!怎么办呢?难道备份真的文件有问题?思考了一会,眼前一亮,我发觉可能是控制文件的问题。马上重建控制文件,alter database backup controlfile to trace备份当前控制文件到数据库跟踪文件中到d:/oracle/admin/ora8/udump中。把文件中的内容
CREATE CONTROLFILE REUSE DATABASE "ORA8" NORESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 27372
LOGFILE
GROUP 1 'D:/ORACLE/ORADATA/ORA8/REDO01.LOG' SIZE 1M,
GROUP 2 'D:/ORACLE/ORADATA/ORA8/REDO02.LOG' SIZE 1M,
GROUP 3 'D:/ORACLE/ORADATA/ORA8/REDO03.LOG' SIZE 1M
DATAFILE
'D:/ORACLE/ORADATA/ORA8/SYSTEM01.DBF',
'D:/ORACLE/ORADATA/ORA8/RBS01.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS01.DBF',
'D:/ORACLE/ORADATA/ORA8/TEMP01.DBF',
'D:/ORACLE/ORADATA/ORA8/TOOLS01.DBF',
'D:/ORACLE/ORADATA/ORA8/INDX01.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS02.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS03.ORA',
'D:/ORACLE/ORADATA/ORA8/USERS04.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS05.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS06.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS07.DBF',
'D:/ORACLE/ORADATA/ORA8/USERS08.ORA',
'D:/ORACLE/ORADATA/ORA8/USERS09.ORA',
'D:/ORACLE/ORADATA/ORA8/USERS10.ORA'
CHARACTER SET ZHS16GBK
copy出来,存为c.sql,运行svrmgrl,
>connect internal
>shutdown
>startup mount
>@c.sql
显示成功,recover,提示需要归档日志文件,幸好数据库运行在归档模式下,按照提示提供相应的归档日志,经过7、8次的提示,终于显示恢复成功。Alter database open成功!屋子里一片欢呼,经过近两个小时,数据库终于恢复了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18966/viewspace-790934/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 重拾文字MUD
请登录后发表评论 登录
全部评论
  • 博文量
    50
  • 访问量
    903005