日期:2014-05-16 浏览次数:20470 次
错误描述: 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语句直接的修改可能会丢失,如果要保证一致性, 需要在执行完语句后对数据进行检查,而这个代价是比较大的。
?