您的位置:首页 > 数据库 > Oracle

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

2005-03-26 12:27 633 查看
---------------------------------------------

实验平台:windows + Oracle 10.1.0.2.0

Author:NinGoo 2005-03-26

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

在备份控制文件之后,在数据库中又添加了数据文件,然后当前控制文件损坏,需要使用之前的备份控制文件来做恢复。

[/b]

1.[/b]备份控制文件[/b]
[/b]

SQL> alter database backup controlfile to 'e:/control.ctl';

数据库已更改。

2.[/b]使用[/b]create tablespace[/b]或者[/b]alter tablespace add datafile[/b]给数据库添加数据文件[/b]
[/b]

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[/b]后将现在的控制文件删除[/b]
[/b]

[/b]

c:/>del E:/ORACLE/ORADATA/NING/control01.ctl
c:/>del E:/ORACLE/ORADATA/NING/control02.ctl
c:/>del E:/ORACLE/ORADATA/NING/control03.ctl
[/b]

4.startup[/b]数据库[/b]
[/b]

报错:ORA-00205: error in identifying controlfile, check alert log for more info

5.[/b]将备份的控制文件[/b]restore
[/b]

c:/>copy e:/control.ctl e:/ORACLE/ORADATA/NING/control01.ctl
c:/>copy e:/control.ctl e:/ORACLE/ORADATA/NING/control02.ctl
c:/>copy e:/control.ctl e:/ORACLE/ORADATA/NING/control03.ctl

6.[/b]使用备份控制文件做恢复[/b]
[/b]

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[/i].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'

[/b]

7[/b].重命名数据文件[/b]
[/b]

[/b]

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[/b].再使用备份控制文件恢复[/b]
[/b]

[/b]

SQL> recover database using backup controlfile;

完成介质恢复。

9[/b].使用[/b]resetlogs[/b]选项打开数据库[/b]
[/b]

[/b]

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[/b].添加[/b]temp[/b]文件[/b]
[/b]

此时查看alert_sid[/i].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';

表空间已更改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: