您的位置:首页 > 其它

归档模式下恢复被删除的数据文件

2011-06-16 11:22 513 查看
--数据库处于归档模式

--要恢复的数据文件从创建到现在的归档日志都要在
--查询数据文件的创建时间
SQL> select file#,creation_time from v$datafile;

FILE# CREATION_TIME
---------- -----------------
1 20071015 10:09:07
2 20071015 10:09:13
3 20071015 12:01:05
4 20071015 10:09:27
5 20110613 17:45:10

--查看数据文件
SQL> col file_name format a40;
SQL> col tablespace_name format a10;
SQL> select file_name,tablespace_name,status from dba_data_files;

FILE_NAME TABLESPACE STATUS
---------------------------------------- ---------- ---------
D:/ORADATA/PRIMARY/USERS01.DBF USERS AVAILABLE
D:/ORADATA/PRIMARY/UNDOTBS01.DBF UNDOTBS1 AVAILABLE
D:/ORADATA/PRIMARY/SYSAUX01.DBF SYSAUX AVAILABLE
D:/ORADATA/PRIMARY/SYSTEM01.DBF SYSTEM AVAILABLE
D:/ORADATA/PRIMARY/ASPEN.DBF ASPEN AVAILABLE

--创建测试表 所属表空间为aspen
SQL> create table scott.aspen(i_date date) tablespace aspen;

表已创建。

SQL> insert into scott.aspen values(sysdate);

已创建 1 行。

SQL> commit;

提交完成。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
--在数据库shutdown时删除表空间aspen所对应的数据文件
SQL> host del D:/ORADATA/PRIMARY/ASPEN.DBF

SQL> startup mount;
--启动到mount状态不需要数据文件,所以到现在还没有报错
ORACLE 例程已经启动。

Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 209716116 bytes
Database Buffers 318767104 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。

--打开数据库报错
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:/ORADATA/PRIMARY/ASPEN.DBF'

--创建一个新的文件 路径和文件名与被删除的数据文件一致
SQL> alter database create datafile 5 as 'D:/ORADATA/PRIMARY/ASPEN.DBF'
2 /

数据库已更改。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 5 需要介质恢复
ORA-01110: 数据文件 5: 'D:/ORADATA/PRIMARY/ASPEN.DBF'

SQL> recover datafile 5
ORA-00279: 更改 1136938 (在 06/13/2011 17:45:10 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:/APP/263370/FLASH_RECOVERY_AREA/PRIMARY/ARCHIVELOG/ARC00030_0753443662.001
ORA-00280: 更改 1136938 (用于线程 1) 在序列 #30 中

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

--输入auto 会自动恢复介质
auto
ORA-00279: 更改 1137025 (在 06/13/2011 17:45:34 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:/APP/263370/FLASH_RECOVERY_AREA/PRIMARY/ARCHIVELOG/ARC00031_0753443662.001
ORA-00280: 更改 1137025 (用于线程 1) 在序列 #31 中

...... 中间会有很多这样的提示

ORA-00279: 更改 1700804 (在 06/16/2011 08:20:44 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:/APP/263370/FLASH_RECOVERY_AREA/PRIMARY/ARCHIVELOG/ARC00063_0753443662.001
ORA-00280: 更改 1700804 (用于线程 1) 在序列 #63 中

已应用的日志。
完成介质恢复。
SQL> alter database open;

数据库已更改。

SQL> select * from scott.aspen;

I_DATE
--------------
16-6月 -11

SQL> alter session set nls_date_format='yyyymmdd hh24:mi:ss';

会话已更改。

SQL> select * from scott.aspen;

I_DATE
-----------------
20110616 10:43:39

SQL> select file_name,tablespace_name,status
2 from dba_data_files
3 /

FILE_NAME TABLESPACE STATUS
---------------------------------------- ---------- ---------
D:/ORADATA/PRIMARY/USERS01.DBF USERS AVAILABLE
D:/ORADATA/PRIMARY/UNDOTBS01.DBF UNDOTBS1 AVAILABLE
D:/ORADATA/PRIMARY/SYSAUX01.DBF SYSAUX AVAILABLE
D:/ORADATA/PRIMARY/SYSTEM01.DBF SYSTEM AVAILABLE
D:/ORADATA/PRIMARY/ASPEN.DBF ASPEN AVAILABLE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: