使用linux文件句柄恢复误删除的Oracle数据文件(二)

2014-11-24 16:43:43 · 作者: · 浏览: 2
g/oraus.msb l-wx------ 1 oracle oinstall 64 Sep 4 09:41 3 -> /u/oracle/product/11.2/rdbms/log/orcl2_ora_3056.trc lr-x------ 1 oracle oinstall 64 Sep 4 09:41 4 -> /dev/null lr-x------ 1 oracle oinstall 64 Sep 4 09:41 5 -> /dev/null lr-x------ 1 oracle oinstall 64 Sep 4 09:41 6 -> /dev/null lrwx------ 1 oracle oinstall 64 Sep 4 09:41 7 -> /u/oracle/product/11.2/dbs/hc_orcl2.dat lrwx------ 1 oracle oinstall 64 Sep 4 09:41 8 -> /u/oracle/product/11.2/dbs/lkinstorcl2 (deleted) lr-x------ 1 oracle oinstall 64 Sep 4 09:41 9 -> /proc/3140/fd

将此文件cp到一个新的位置:
[oracle@DBA2 fd]$ cp 24 /oradata/SG.dbf

恢复数据文件
SQL> select file#,status,name from v$datafile;

     FILE# STATUS  NAME
---------- ------- --------------------------------------
         1 SYSTEM  /oradata/orcl2/system01.dbf
         2 ONLINE  /oradata/orcl2/sysaux01.dbf
         3 ONLINE  /oradata/orcl2/undotbs01.dbf
         4 ONLINE  /oradata/orcl2/users01.dbf
         5 ONLINE  /oradata/orcl2/SG01.dbf
         6 ONLINE  /oradata/orcl2/book.dbf

offline数据文件:
SQL> alter database datafile 5 offline;
Database altered.
SQL> select file#,status,name from v$datafile;

     FILE# STATUS  NAME
---------- ------- --------------------------------------
         1 SYSTEM  /oradata/orcl2/system01.dbf
         2 ONLINE  /oradata/orcl2/sysaux01.dbf
         3 ONLINE  /oradata/orcl2/undotbs01.dbf
         4 ONLINE  /oradata/orcl2/users01.dbf
         5 RECOVER /oradata/orcl2/SG01.dbf
         6 ONLINE  /oradata/orcl2/book.dbf

rename数据文件到新的位置:
SQL> alter database rename file '/oradata/orcl2/SG01.dbf' to '/oradata/SG.dbf';
Database altered.

此时数据文件状态依然为RECOVER状态,需要恢复一下:
SQL> recover datafile 5;
Media recovery complete.
SQL> select file#,status,name from v$datafile;

     FILE# STATUS  NAME
---------- ------- --------------------------------------
         1 SYSTEM  /oradata/orcl2/system01.dbf
         2 ONLINE  /oradata/orcl2/sysaux01.dbf
         3 ONLINE  /oradata/orcl2/undotbs01.dbf
         4 ONLINE  /oradata/orcl2/users01.dbf
         5 OFFLINE /oradata/SG.dbf
         6 ONLINE  /oradata/orcl2/book.dbf

好了,恢复过来了,变成OFFLINE了,现在将数据文件online:
SQL> alter database datafile 5 online;
Database altered.
SQL> select file#,status,name from v$datafile;

     FILE# STATUS  NAME
---------- ------- --------------------------------------
         1 SYSTEM  /oradata/orcl2/system01.dbf
         2 ONLINE  /oradata/orcl2/sysaux01.dbf
         3 ONLINE  /oradata/orcl2/undotbs01.dbf
         4 ONLINE  /oradata/orcl2/users01.dbf
         5 ONLINE  /oradata/SG.dbf
         6 ONLINE  /oradata/orcl2/book.dbf

OK,成功了,利用Linux句柄将误删除的数据文件恢复过来了,并从新online可使用!