Oracle10g只有数据文件的恢复(Windows)

10/24/2009来源:Oracle教程人气:5995

1、首先安装一个全新的Oracle,包括服务名、SID,安装目录应最好与原来的ORACLE目录一致。

2、删除安装目录下所有的datafile、logfile.(oradata目录下的文件)

3、Copy原来的数据文件到oradata目录下,包括系统数据文件等。

4、alter database backup controlfile to trace; 备份当前数据库控制文件,控制文件一般备份到D:\oracle\PRoduct\10.2.0\admin\bstest\udump下,请注意最新一个就是了。

删除原控制文件,重新创建一个控制文件,请注意修改各个路径的位置,如下:

CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS  NOARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO01.LOG'  SIZE 50M,

  GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO02.LOG'  SIZE 50M,

  GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO03.LOG'  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSTEM01.DBF',

  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\UNDOTBS01.DBF',

  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSAUX01.DBF',

  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\USERS01.DBF',

  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\TEST.DAT'

CHARACTER SET ZHS16GBK

;

注意修改数据文件的路径,如果是原数据文件,加上你原来所有的数据文件路径,如红色则是我原来的数据文件。

 


11、重启,启动到startup mount;然后 

执行recover database;成功,

再执行alter database open;打开成功了。

12、现在已基本成功了,但是经过这样处理,为了安全起见,

最好用EXP先将数据全部导出,然后再重新安装ORACLE,然后再用IMP重新导入。

而当我导出时却出现错误:提示临时表空间为空。

 

用select name from v$tempfile;查看,确实为空,则:

如temp01.dbf已存在,则如下:

alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf'

否则:

alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf' size 10M;

 

再用EXP导出,成功!


还是打不开。出现以下错误:
 alter database open RESETLOGS
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程终止。强行断开连接

10、 将UNDO日志改为手动模式:

alter system set undo_management='manual' scope=spfile;


5、startup nomount;启动到nomount状态,然后执行以上控制文件重建语句。

6、执行recover database using backup controlfile until cancel;

输入cancel回车,后出现错误。

7、alter database open resetlogs;执行后出现以下错误。

ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ZQKH\SYSTEM01.DBF'

8、#系统文件出错,看到“一致性”自然想到 _allow_resetlogs_corruption的隐含命令
 alter system set "_allow_resetlogs_corruption"=true scope=spfile;
9、alter database open RESETLOGS;