日期:2014-05-16  浏览次数:20470 次

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.trc
Thu Sep 01 18:51:40 2011
错误原因:Oracle数据块受损,数据块使用NOLOGGING选项加载不能恢复.
解决方法:
1.dba登录oracle 
 sqlplus /nolog
 conn /as sysdba
2.查看数据库受损的数据块,得到受损的对象
Select * from dba_extents
where 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语句直接的修改可能会丢失,如果要保证一致性,
需要在执行完语句后对数据进行检查,而这个代价是比较大的。 




?