在open状态下恢复丢失的数据文件

简介:     在open状态下恢复丢失的数据文件,这个实验比较简单,要注意数据库必须1)数据库必须是归档状态2)数据库在数据文件丢失前做过全备份 。次实验模拟test.dbf 意外丢失。

    在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    

从查询可得 数据恢复成功。

目录
相关文章
|
SQL 关系型数据库 MySQL
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库
|
SQL 监控 Oracle
【恢复】Redo日志文件丢失的恢复
第一章 Redo日志文件丢失的恢复 1.1  online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢失据的风险,强烈建议在条件允许的情况下,对Redo日志进行多路镜像。
2176 0

相关实验场景

更多