---------------------------------------------
实验平台: 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> select name from v$tempfile;
14
15未选定行
16
17SQL>alter tablespace temp add tempfile
18
192 'E:\ORACLE\ORADATA\NING\TEMP01.DBF';
20
21表空间已更改。</tablespace_name>