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';
表空間已更改。