a10g/zlm_test01.dbf'
可以看到,同样是需要media recovery的,从以下视图可以获得同样地结果:
SQL> select file#,online_status from v$recover_file;
FILE# ONLINE_
---------- -------
8 OFFLINE
SQL> recover datafile 8
ORA-00279: change 552554 generated at 09/05/2014 12:16:56 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_05/o1_mf_1_8_%u_.arc
ORA-00280: change 552554 for thread 1 is in sequence #8
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_05/o1_mf_1_8_%u_.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_05/o1_mf_1_8_%u_.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
SQL>
自动recover失败,原因是在线日志已经被覆盖了,而且目前是非归档模式,也没有可用的归档日志进行recover,
这个时候,数据库自身无法重新让该文件再online了,必须借助一个特殊工具——BBED(Block Browse Editor)
BBED是Oracle仅供内部使用的一个数据块浏览编辑工具,通过命令行方式,对数据块所在磁盘文件的十六进制物理地址进行修改,主要用来处理一些特殊恢复的场景(无备份恢复方式)。 BBED在10g数据库软件中是自带的,但是需要对其进行编译安装,需要用到3个包,分别是sbbdpt.o、ssbbded.o、bbedus.msb,其中sbbdpt.o、ssbbded.o位于?/rdbms/lib下,而bbedus.msb位于?/rdbms/mesg下。据说由于在DBLINK场景中使用BBED修改数据块的SCN,会引起SCN headroom,因此在11g中,默认没有放入这几个文件(Oracle也许并不愿意让客户使用BBED ),因此如果11g中要使用BBED,需要去10g数据库中手工拷贝这3个文件到相应位置,然后再编译安装,要注意的是,BBED的32bit和64bit文件不能互用。似乎只能用于Unix/Linux系统中。
--检查BBED所需的3个文件sbbdpt.o、ssbbded.o、bbedus.msb是否存在
SQL> !
[oracle@ora10g ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@ora10g lib]$ ll
...
-rwxr-xr-x 1 oracle oinstall 3043 Jun 28 2005 sbbdpt.o
-rwxr-xr-x 1 oracle oinstall 2721 Jun 28 2005 ssbbded.o
...
[oracle@ora10g lib]$ cd $ORACLE_HOME/rdbms/mesg/
[oracle@ora10g mesg]$ ll
-rwxr-xr-x 1 oracle oinstall 8704 Jun 28 2005 bbedus.msb
...
--编译安装BBED
[oracle@ora10g mesg]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/10.2.0/db_1/bin/bbed
gcc -o /u01/app/oracle/product/10.2.0/db_1/bin/bbed -L/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/10.2.0/db_1/lib/ -L/u01/app/oracle/product/10.2.0/db_1/lib/stubs/ -L/usr/lib -lirc /u01/app/oracle/product/10.2.0/db_1/lib/s0main.o /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o -ldbtools10 -lclntsh `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/ |