首页 > 数据库 > Oracle > 正文

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

2024-08-29 13:44:31
字体:
来源:转载
供稿:网友

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



实验平台: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 occur 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';




 


表空间已更改。





 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表