ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在open状态下恢复丢失的数据文件

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

原创 Linux操作系统 作者:杨奇龙 时间:2010-05-11 18:38:52 0 删除 编辑

    在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博客 ” ,链接:https://blog.itpub.net/22664653/viewspace-662458/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    8206012