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\SYSTEM01.DBF

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

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

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

C:\WINDOWS\SYSTEM32\UNNAMED00005

C:\WINDOWS\SYSTEM32\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\SYSTEM32\UNNAMED00005' to

2 'E:\ORACLE\ORADATA\NING\TEST01.DBF';

数据库已更改。

SQL> alter database rename file 'C:\WINDOWS\SYSTEM32\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
 3Alternatively, if these temporary tablespaces are no longer 
 4
 5needed, then they can be dropped. 
 6
 7Empty temporary tablespace: TEMP 
 8
 9*************************************************************** 
10
11使用备份控制文件恢复后,  Temp  表空间被置空 
12
13SQL&gt; select name from v$tempfile; 
14
15未选定行 
16
17SQL&gt;alter tablespace temp add tempfile 
18
192 'E:\ORACLE\ORADATA\NING\TEMP01.DBF'; 
20
21表空间已更改。</tablespace_name>
Published At
Categories with 数据库类
comments powered by Disqus