Oracle恢复实验一:使用添加数据文件之前的控制文件

发表于:2007-07-02来源:作者:点击数: 标签:
--------------------------------------------- 实验平台: windows + Oracle 10.1.0.2.0 Author:NinGoo 2005-03-26 -------------------------------------------- 在备份控制文件之后,在数据库中又添加了数据文件,然后当前控制文件损坏,需要使用之前

---------------------------------------------



实验平台:windows + Oracle 10.1.0.2.0



Author:NinGoo  2005-03-26



--------------------------------------------




 


在备份控制文件之后,在数据库中又添加了数据文件,然后当前控制文件损坏,需要使用之前的备份控制文件来做恢复。




 


1.备份控制文件




 


SQL> alter database backup controlfile to @#e:\control.ctl@#;




 


数据库已更改。




 


2.使用create tablespace或者alter tablespace add datafile给数据库添加数据文件




 


SQL> create tablespace test



  2  datafile @#E:\ORACLE\ORADATA\NING\TEST01.DBF@# size 10M,



  3  @#E:\ORACLE\ORADATA\NING\TEST02.DBF@# size 10M;




 


表空间已创建。




 


3.shutdown后将现在的控制文件删除




 


4.startup数据库




 


报错:ORA-00205: error in identifying controlfile, check alert log for more info




 


5.将备份的控制文件restore




 


6.使用备份控制文件做恢复




 


SQL> recover database using backup controlfile;




 


ORA-00283: 恢复会话因错误而取消



ORA-01244: 未命名的数据文件由介质恢复添加至控制文件



ORA-01110: 数据文件 5: @#E:\ORACLE\ORADATA\NING\TEST01.DBF@#



ORA-01110: 数据文件 6: @#E:\ORACLE\ORADATA\NING\TEST02.DBF@#




 


此时,查看v$datafile可以看到有两个unname文件



SQL> select name from v$datafile;




 


NAME



-------------------------------------------




 


E:\ORACLE\ORADATA\NING YSTEM01.DBF



E:\ORACLE\ORADATA\NING\UNDOTBS01.DBF



E:\ORACLE\ORADATA\NING YSAUX01.DBF



E:\ORACLE\ORADATA\NING\USERS01.DBF



C:\WINDOWS YSTEM32\UNNAMED00005



C:\WINDOWS YSTEM32\UNNAMED00006




 


查看alert_sid.log,可以看到如下内容




 


File #5 added to control file as @#UNNAMED00005@#. Originally created as:



@#E:\ORACLE\ORADATA\NING\TEST01.DBF@#



File #6 added to control file as @#UNNAMED00006@#. Originally created as:



@#E:\ORACLE\ORADATA\NING\TEST02.DBF@#




 


可知UNNAMED00005对应@#E:\ORACLE\ORADATA\NING\TEST01.DBF@#



UNNAMED00006对应@#E:\ORACLE\ORADATA\NING\TEST02.DBF@#




 


7.重命名数据文件




 


SQL> alter database rename file @#C:\WINDOWS YSTEM32\UNNAMED00005@# to



  2  @#E:\ORACLE\ORADATA\NING\TEST01.DBF@#;




 


数据库已更改。




 


SQL> alter database rename file @#C:\WINDOWS YSTEM32\UNNAMED00006@# to



  2  @#E:\ORACLE\ORADATA\NING\TEST02.DBF@#;




 


数据库已更改。




 


8.再使用备份控制文件恢复




 


SQL> recover database using backup controlfile;




 


完成介质恢复。




 


9.使用resetlogs选项打开数据库




 


SQL> alter database open;



alter database open



*



第 1 行出现错误:



ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项




 


SQL> alter database open noresetlogs;



alter database open noresetlogs



*



第 1 行出现错误:



ORA-01588: 要打开数据库则必须使用 RESETLOGS 选项




 


SQL> alter database open resetlogs;




 


数据库已更改。




 


10.添加temp文件




 


此时查看alert_sid.log,可以看到以下警告



***************************************************************



WARNING: The following temporary tablespaces contain no files.



         This condition can oclearcase/" target="_blank" >ccur when a backup controlfile has



         been restored.  It may be necessary to add files to these



         tablespaces.  That can be done using the SQL statement:



 



         ALTER TABLESPACE <tablespace_name> ADD TEMPFILE



 



         Alternatively, if these temporary tablespaces are no longer



         needed, then they can be dropped.



           Empty temporary tablespace: TEMP



***************************************************************




 


使用备份控制文件恢复后,Temp表空间被置空



SQL> select name from v$tempfile;




 


未选定行




 


SQL>alter tablespace temp add tempfile



2 @#E:\ORACLE\ORADATA\NING\TEMP01.DBF@#;




 


表空间已更改。




 

原文转自:http://www.ltesting.net