操作系统:WindowsXP2
数据库:oracle 10g
由于数据库服务器崩溃,造成了无法进入系统进行数据库备份,只能从光盘的PE系统把oracle相关文件拷贝出来。对于拷贝出来的文件在测试机上进行一次不完全恢复,具体流程如下所示:
1、安装oracle 10g服务端(由于测试机上已安装,所以省略这一步)
2、以sysdba身份进行备份控件文件到udmp目录的trace文件(语句:alter database backup controlfile to trace)
3、Shutdown immediate停止数据库,备份当前~\oracle\product\10.2.0\oradata目录中的文件,接着删除这些文件并把需恢复的源文件拷贝到此目录下。如EXAMPLE01.DBF、SYSAUX01.DBF等等(只要DBF就可以了,日志和控制文件不要)。
4、以sysdba进入并执行startup nomount。把数据库启动到nomount状态。
5、从第2步备份出来trace文件中拷贝CREATE CONTROLFILE部分语句来重建控制文件。此处应根据实际情况增删表空间文件记录,如以下黑体部分则为新增记录。
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGSNOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'SIZE 50M,
GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'SIZE 50M,
GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\JSDC.DBF'
CHARACTER SET ZHS16GBK
;
6、Shutdown immediate
7、在admin\pfile目录下的init.ora里加入隐含参数:
_allow_resetlogs_corruption=true
_allow_terminal_recovery_corruption=true
8、执行startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora(文件名和目录按照实际情况而定)' mount force;
9、Recover database\ recover database until cancel进行介质恢复。
10、Alter database open resetlogs打开数据库可能不成功:此处出现了ORA-03113 "ORA-03113:通信通道的文件结尾"的错误提示。
11、重新启动数据库(startup),结果出现以下错误提示:
ora-01113:文件1需要介质恢复
ora-01110:数据文件1:'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
12、从新恢复表空间文件recover datafile D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF(其它表空间文件可能也需要恢复)
13、alter database open;数据库已更新
14、full export备份数据库。
15、alter system set "_allow_resetlogs_corruption"=false scope=spfile; --把隐含参数改回