如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
没有RMAN备份执行块恢复
仅使用基于OS的热备份,没有RMAN备份执行块多媒体恢复是可能的,为此,我们需要编目热备份文件到RMAN 储存库,作为文件的镜像副本使用,并使用BLOCKRECOVER命令从映像副本只恢复损坏的块,为了测试它,创建一个表,并插入一个行。
SQL> create table tbl_corrupt_test (id number); Table created. SQL> insert into tbl_corrupt_test values(1); 1 row created. SQL> commit; Commit complete.
获取tbl_corrupt_test表存在的文件名,并制成它的热备份,如下:
SQL> select segment_name, a.tablespace_name, b.name from dba_segments a, v$datafile b where a.header_file=b.file# and a.segment_name='tbl_corrupt_test'; SEGMENT_NAME TABLESPACE_NAME NAME --------------- --------------- ----------------------------------- tbl_corrupt_test users /u01/oracle/product/10.2.0/db_1/oradata/newdb/users01.dbf SQL> alter tablespace users begin backup; Tablespace altered. SQL> host cp /u01/oracle/product/10.2.0/db_1/oradata/newdb/users01.dbf /u01/oracle/product/10.2.0/db_1/oradata/newdb/users01_backup.dbf SQL> alter tablespace users end backup; Tablespace altered.
现在使用上节中提到的技术损坏表(数据文件) ,如下:
SQL> select header_block from dba_segments where segment_name='tbl_corrupt_test'; HEADER_BLOCK ------------ 59 [oracle@localhost admin]$ dd of=/u01/oracle/product/10.2.0/ db_1/oradata/newdb/users01.dbf bs=8192 conv=notrunc seek=60 <<EOF > corruption > EOF 0+1 records in 0+1 records out
测试损坏如下:
SQL> alter system flush buffer_cache; System altered.
SQL> select * from tbl_corrupt_test; select * from tbl_corrupt_test * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 4, block # 60) ORA-01110: data file 4: '/u01/oracle/product/10.2.0/db_1/oradata/newdb/users01.dbf' SQL>
连接到RMAN,尝试恢复数据库块,如下:
RMAN> blockrecover datafile 4 block 60; RMAN-00571: =========================================================== RMAN-00569: =============== error message stack follows =============== RMAN-00571: =========================================================== RMAN-03002: failure of blockrecover command at 03/09/2010 03:36:13 RMAN-06026: some targets not found - aborting restore RMAN-06023: no backup or copy of datafile 4 found to restore
接下来, 使用catalog 命令存储在线备份文件到RMAN存储库,使其作为一个映像副本:
RMAN> catalog datafilecopy '/u01/oracle/product/10.2.0/db_1/oradata/newdb/users01_backup.dbf'; cataloged datafile copy datafile copy filename=/u01/oracle/product/10.2.0/db_1/oradata/newdb/users01_backup.dbf recid=1 stamp=713158624
尝试恢复数据块:
RMAN> blockrecover datafile 4 block 60; <......output trimmed ......> <......output trimmed ......> starting media recovery media recovery complete, elapsed time: 00:00:03 Finished blockrecover at 09-MAR-10 RMAN> exit
块已恢复,现在,查询表:
SQL> select * from tbl_corrupt_test; ID ---------- 1 SQL>
这就对了!使用os命令采用的热备份文件恢复了损坏的数据块。