在open状态下恢复丢失的数据文件,这个实验比较简单,要注意数据库必须1)数据库必须是归档状态2)数据库在数据文件丢失前做过全备份 。次实验模拟test.dbf 意外丢失。
一 实验前的准备。建立一个名为yang的表,插入数据,并提交。归档日志。
SQL> conn system/yang as sysdba
已连接。
SQL> create table yang (num number) tablespace test;
表已创建。
SQL> insert into yang values(1);
已创建 1 行。
SQL> insert into yang values(2);
已创建 1 行。
SQL> insert into yang values(3);
已创建 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
二 用os 命令删除 test.dbf
--删除test.dbf
三 重新启动,发现启动失败,恢复数据库。
SQL> startup
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 138412948 bytes
Database Buffers 390070272 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'F:\LIB\TEST.DBF'
1)确定数据库的状态,确认损坏的数据文件,此步可省略。因为从错误提示可以看出哪个数据文件坏了。
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> select file#,error from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
6 FILE NOT FOUND
2)使文件脱机。为了恢复出现介质失败的数据文件,必须确保该文件为脱机。通过v$DATAFILE ,可以取得文件的状态。如果出于online的状态时,务必将其脱机。
SQL> alter database datafile 6 offline;
数据库已更改。
3)复制数据文件备份。
SQL> host copy f:\backup\test.dbf f:\lib
4)恢复表空间或数据文件。
SQL> recover datafile 6;
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 2282417 (在 05/08/2010 22:53:52 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\52_1_715961434.LOG
ORA-00280: 更改 2282417 (用于线程 1) 在序列 #52 中
5)诗文件联机。
SQL> alter database datafile 6 online;
数据库已更改。
SQL> alter database open;
数据库已更改。
6)检查数据恢复情况。
SQL> select * from scott.yang;
NUM
----------
1
2
3
从查询可得 数据恢复成功。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-662458/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22664653/viewspace-662458/