ORA-01578: ORACLE 数据块损坏的解决方案
错误描述:Errors in file d:\app\administrator\diag\rdbms\ticket\ticket\trace\ticket_ora_46572.trc (incident=170565):ORA-01578: ORACLE 数据块损坏 (文件号 6, 块号 4621)ORA-01110: 数据文件 6: 'D:\APP\ADMINISTRATOR\ORADATA\TICKET\TBS_DATA.DBF'ORA-26040: 数据块是使用 NOLOGGING 选项加载的Incident details in: d:\app\administrator\diag\rdbms\ticket\ticket\incident\incdir_170565\ticket_ora_46572_i170565.trcThu Sep 01 18:51:40 2011错误原因:Oracle数据块受损,数据块使用NOLOGGING选项加载不能恢复.解决方法:1.dba登录oracle sqlplus /nolog conn /as sysdba2.查看数据库受损的数据块,得到受损的对象Select * from dba_extentswhere file_id = '6' and '4621' between block_id and block_id + blocks - 1;备注:6为受损数据库文件号 4621为受损数据块块号 查看知道customers表受损 3.设置时间禁止跳过对应受损的数据块.ALTER session SET EVENTS='10231 trace name context off';ALTER session SET EVENTS='10231 trace name context forever,level 10';4.将受损数据块对应表对象创建备份切换至一般用户conn tbs/ticket创建表create table t_customers as select * from customers;5.删除旧表drop table t_customers;6.重新命名表的名称. rename t_customers to customers;备注:A.在Oracle 11g中不能执行alter table t_customers rename customers,否则报错提示如下:ORA-14155 缺失PARTITION 或者SUBPARTITION,t_customers本身也有分区;B.在执行CREATE TABLE语句和RENAME T_NEW TO T语句直接的修改可能会丢失,如果要保证一致性,需要在执行完语句后对数据进行检查,而这个代价是比较大的。
?