7 x 24 在线支持!
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关键字。