Oracle数据块损坏与恢复详解(二)

2014-11-24 11:32:24 · 作者: · 浏览: 1
le data files

DATAFILE 2 BLOCK 79

DATAFILE 6 BLOCK 183;

RECOVER CORRUPTION LIST; Recover all blocks logged in V$DATABASE_BLOCK_CORRUPTION

恢复单个块:

在进行块恢复之前,必须确定损坏的块。一般情况下,会在以下位置中报告块损坏:

--LIST FAILURE、VALIDATE 或 BACKUP ...VALIDATE 命令的结果
--V$DATABASE_BLOCK_CORRUPTION 视图

--标准输出中的错误消息

--预警日志文件和用户跟踪文件(在 V$DIAG_INFO 视图中标识)
--SQL ANALYZE TABLE 和 ANALYZE INDEX 命令的结果
--DBVERIFY 实用程序的结果

例如,可能会在用户跟踪文件中发现以下消息:

ORA-01578: ORACLE data block corrupted (file # 7, block # 3)

ORA-01110: data file 7: '/oracle/oradata/orcl/tools01.dbf'

ORA-01578: ORACLE data block corrupted (file # 2, block # 235)

ORA-01110: data file 2: '/oracle/oradata/orcl/undotbs01.dbf'

--确定了块以后,在 RMAN 提示符下运行 RECOVER ...BLOCK 命令,指定损坏块的文件号和块编号。

RECOVER

DATAFILE 7 BLOCK 3

DATAFILE 2 BLOCK 235;

8.使用10231事件进行处理:
(块损坏但没有备份,没办法回复的情况下)

在sqlplus中执行如下命令:
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
然后导出该表:
exp test/test file=t.dmp tables=t;
数据库中删除该表
drop table t;
然后导入
imp test/test file=t.dmp tables=t;
最后关闭10231事件:
ALTER SYSTEM SET EVENTS='10231 trace name context off';