Email: service@parnassusdata.com 7 x 24 online support!

Oracle 在Awr表上的ORA-1578 ORA-26040

Oracle 在Awr表上的ORA-1578 ORA-26040

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

适用于:

Oracle Database – Enterprise Edition –版本10.2.0.1 10.2.0.5 [Release 10.2]
本文信息适用于任何平台。
适用于10gR2

*** 05-AUG-2014检查相关性***

症状

在报告的trace文件中:
遇到的错误:(ORA-01578: ORACLE data block corrupted (file# xx, block# xxxx)
ORA-01110: data file x: ‘…..’
ORA-26040: Data block was loaded using the NOLOGGING option

Db Verify 报告:
DBV-00200: Block, dba xxxxxx, already marked corrupted

原因

如果一个NOLOGGING(或不可恢复)操作在对象上执行,且包含该对象的数据文件随后被恢复,则受NOLOGGING操作影响的数据块被标记为损坏,并将发出ORA-1578ORA-26040

注意,从块中无法抢救出数据。
这在重建该对象时是需要的。

然而,损坏仍可能遗留在SYSAUX表空间中,直到块被再使用且因此重新格式化时。

解决方案

重建AWRAutomatic Workload Repository)表的步骤是:

 1. 通过设置统计级别为basic,禁用AWR统计收集 ,例如:

sqlplus /nolog
connect / as sysdba
show parameter statistics_level
alter system set statistics_level = basic scope=both;

2. restricted模式下停止并重启实例,例如:

sqlplus /nolog
connect / as sysdba
shutdown immediate
startup restrict

3. Drop 并重建AWR 对象,例如:

sqlplus /nolog
connect / as sysdba
@?/rdbms/admin/catnoawr
alter system flush shared_pool;
@?/rdbms/admin/catawr.sql
@?/rdbms/admin/utlrp

4. 然后重新启用所需的AWR 统计收集,通过将STATISTICS_LEVEL 设回初始值并正常重启实例,例如:

sqlplus /nolog
connect / as sysdba
alter system set statistics_level = <Previous Value from above> scope=both;
shutdown immediate
startup

5. 10GR2 (实际上是10.2.0.3 )应用最新的补丁集,它解决一些AWR相关的损坏问题。

参考

NOTE:293515.1 – ORA-1578 ORA-26040 in a LOB segment – Script to solve the errors