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


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

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

 1<tablespace_name> ADD TEMPFILE   
 2  
 3  
 4  
 5  
 6  
 7  
 8  
 9Alternatively, if these temporary tablespaces are no longer   
10  
11  
12  
13needed, then they can be dropped.   
14  
15  
16  
17Empty temporary tablespace: TEMP   
18  
19  
20  
21***************************************************************   
22  
23  
24  
25  
26  
27  
28  
29使用备份控制文件恢复后,Temp表空间被置空   
30  
31  
32  
33SQL&gt; select name from v$tempfile;   
34  
35  
36  
37  
38  
39  
40  
41未选定行   
42  
43  
44  
45  
46  
47  
48  
49SQL&gt;alter tablespace temp add tempfile   
50  
51  
52  
532 'E:\ORACLE\ORADATA\NING\TEMP01.DBF';   
54  
55  
56  
57  
58  
59  
60  
61表空间已更改。</tablespace_name>
Published At
Categories with 数据库类
comments powered by Disqus