非归档模式下恢复利用offline drop命令误删除的数据文件

非归档模式下恢复利用offline drop命令误删除的数据文件

标签: offline  drop  非归档  恢复  zhaolinjnu  分类: Oracle 2008-02-16 10:16

      众所周知,非归档模式下,联机日志并不归档。可能大多数的网友一直以来都会有这样的模糊认识。数据库作recover时,只能利用归档日志和current redo log联机日志。实际上所有的联机日志都是可以用的。此文介绍在非档模式下,恢复利用offline drop命令误删除的数据文件。offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复或再也不使用此数据文件了。所在,在OS级别并不是删除数据文件的意思。但是要在非档模式下恢复此数据文件的前提是,联机日志中自数据文件创建以来的所有联机日志都没有被覆盖。下面是整个实验过程,并且注意,在整个恢复的过程中注意从视图中获得的数据文件状态的变化:

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            c:\arc
Oldest online log sequence     7
Current log sequence           9

SQL> set linesize 200
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1          8   52428800          1 YES INACTIVE                730667 2008:01:15 08:57:55
         2          1          9   52428800          1 NO  CURRENT                 755863 2008:01:15 11:49:53
         3          1          7   52428800          1 YES INACTIVE                696036 2008:01:14 12:30:46

SQL>
SQL> alter tablespace users add datafile 'C:\ORADATA\TEST\TEST\users03.dbf' size 5M;

Tablespace altered.

SQL> alter system switch logfile;

System altered.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1          8   52428800          1 YES INACTIVE                730667 2008:01:15 08:57:55
         2          1          9   52428800          1 NO  ACTIVE                  755863 2008:01:15 11:49:53
         3          1         10   52428800          1 NO  CURRENT                 768362 2008:01:18 15:19:46 

在操作系统层删除6号数据文件后,对6号数据文件作offline drop操作 

SQL> alter database datafile 'C:\ORADATA\TEST\TEST\users03.dbf' offline drop;

Database altered.

SQL>

查看数据文件状态,当对数据文件执行offline drop 命令后,数据文件状态变为recover

SQL> select file#,status,name from v$datafile order by 3;

     FILE# STATUS  NAME
---------- ------- ------------------------------------------------------------------------
         3 ONLINE  C:\ORADATA\TEST\TEST\SYSAUX01.DBF
         1 SYSTEM  C:\ORADATA\TEST\TEST\SYSTEM01.DBF
         5 ONLINE  C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
         4 ONLINE  C:\ORADATA\TEST\TEST\USERS01.DBF
         2 ONLINE  C:\ORADATA\TEST\TEST\USERS02.DBF
         6 RECOVER C:\ORADATA\TEST\TEST\USERS03.DBF
SQL>

根据控制文件中的信息,重新创建6号数据文件
SQL> alter database create datafile 6;

Database altered.

在执行完创建命令后,数据文件状态仍然为recover,此时数据文件中只有非常简单的信息

SQL> select file#,status,name from v$datafile order by 3;

     FILE# STATUS  NAME
---------- ------- ------------------------------------------------------------------------
         3 ONLINE  C:\ORADATA\TEST\TEST\SYSAUX01.DBF
         1 SYSTEM  C:\ORADATA\TEST\TEST\SYSTEM01.DBF
         5 ONLINE  C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
         4 ONLINE  C:\ORADATA\TEST\TEST\USERS01.DBF
         2 ONLINE  C:\ORADATA\TEST\TEST\USERS02.DBF
         6 RECOVER C:\ORADATA\TEST\TEST\USERS03.DBF

因为联机日志还未被覆盖,尽管处于非归档模式,仍然可以对6号数据文件作恢复

SQL> recover datafile 6;
Media recovery complete.
SQL>

数据文件状态变为offline
SQL> select file#,status,name from v$datafile order by 3;

     FILE# STATUS  NAME
---------- ------- -------------------------------------------------------
         3 ONLINE  C:\ORADATA\TEST\TEST\SYSAUX01.DBF
         1 SYSTEM  C:\ORADATA\TEST\TEST\SYSTEM01.DBF
         5 ONLINE  C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
         4 ONLINE  C:\ORADATA\TEST\TEST\USERS01.DBF
         2 ONLINE  C:\ORADATA\TEST\TEST\USERS02.DBF
         6 OFFLINE C:\ORADATA\TEST\TEST\USERS03.DBF

在对数据文件作online操作后,数据文件恢复正常
SQL> alter database datafile 6 online;

Database altered.

SQL> select file#,status,name from v$datafile order by 3;

     FILE# STATUS  NAME
---------- ------- ----------------------------------------------
         3 ONLINE  C:\ORADATA\TEST\TEST\SYSAUX01.DBF
         1 SYSTEM  C:\ORADATA\TEST\TEST\SYSTEM01.DBF
         5 ONLINE  C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
         4 ONLINE  C:\ORADATA\TEST\TEST\USERS01.DBF
         2 ONLINE  C:\ORADATA\TEST\TEST\USERS02.DBF
         6 ONLINE  C:\ORADATA\TEST\TEST\USERS03.DBF

  从上面恢复的整个过程可以看出,尽管数据库处于非归档模式,只要数据文件创建以来的联机日志还没有被覆盖,数据文件就可以恢复出来。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-742229/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27042095/viewspace-742229/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值