Email: service@parnassusdata.com 7 x 24 online support!

    You are here

Oracle 如何在归档日志模式下恢复脱机DROPPED数据文件

Oracle 如何在归档日志模式下恢复脱机DROPPED数据文件

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

本文信息适用于:

 

症状

 

你在归档日志模式下脱机drop了一个数据文件

你知道一旦drop了一个数据文件,你需要重建包含该数据文件的表空间

因为这是一个大型表空间,你无法这么做

你想要该数据文件再次成为数据库的一部分

即使你不想要该数据文件包含任何对象

 

更改

 

你能恢复脱机数据文件然后使其联机

因为你不想要任何对象被分配到该数据文件

你可以将其重新调整为非常小(记得仅当数据文件为空时它才能完成 .........

你无法重新调整数据文件大小在它的高水位之下)

 

 

例如

==========

 

 

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /h01/app/oracle/product/9.2.0/dbs/arch

Oldest online log sequence     207

Next log sequence to archive   209

Current log sequence           209

 

=======================

显示数据库在归档日志模式下

=======================

 

SQL> alter database datafile 44 offline drop;

 

Database altered.

 

 

SQL> select file#,status from v$datafile where file#=44;

 

     FILE# STATUS

---------- -------

        44 RECOVER  ======> status in controlfile is recover

 

SQL> c/datafile/datafile_header

  1* select file#,status from v$datafile_header where file#=44

SQL> /

 

     FILE# STATUS

---------- -------

        44 OFFLINE  ========>  status in file_header is offline

 

 

切换一些日志文件

sql> alter system switch logfile ;

system altered

 

.

.

.

应用日志(它仅会请求在那时联机的日志/相应的归档日志 

它不会请求你应用任何其他归档日志

 

SQL> recover datafile 44;

ORA-00279: change 8252199007514 generated at 10/18/2004 14:21:47 needed for thread 1

ORA-00289: suggestion : /h01/app/oracle/product/9.2.0/dbs/arch1_216.dbf

ORA-00280: change 8252199007514 for thread 1 is in sequence #216

 

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

 

Log applied.

Media recovery complete.

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS      FIRST_CHANGE# FIRST_TIM

---------- ---------- ---------- ---------- ---------- --- ----------- ------------- ---------

         1          1        248  104857600          1 YES INACTIVE       8.2522E+12 18-OCT-04

         2          1        250  104857600          1 NO  CURRENT        8.2522E+12 18-OCT-04

         3          1        249  104857600          1 YES ACTIVE         8.2522E+12 18-OCT-04

 

 

 

SQL> select file#,status from v$datafile where file#=44;

 

     FILE# STATUS

---------- -------

        44 OFFLINE

 

SQL> select file#,status from v$datafile_header where file#=44;

 

     FILE# STATUS

---------- -------

        44 OFFLINE

 

SQL> alter database datafile 44 online;

 

Database altered.

 

SQL> select file#,status from v$datafile_header where file#=44;

 

     FILE# STATUS

---------- -------

        44 ONLINE

 

SQL> select file#,status from v$datafile where file#=44;

 

     FILE# STATUS

---------- -------

        44 ONLINE

 

 

所以数据文件是联机的

 

脱机dropped数据文件无法联机的唯一情况是

当你在脱机drop后在数据库中添加了过多数据文件when you have added to many datafiles in the database after offline drop

 

 

原因

 

来自文档

====================

 

如果数据库在NOARCHIVELOG 模式,你必须指定DROP子句使一个数据文件脱机。但DROP子句不会从数据库中删除数据文件。

要这么做,你必须drop数据文件所在的表空间。直到你这么做,数据文件仍以RECOVER或OFFLINE的状态保留在数据字典中。

   

 如果数据库在ARCHIVELOG模式下,Oracle忽略DROP关键字。