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

Oracle 坏块修复

Oracle数据库出现坏块现象是指:在Oracle数据库的一个或多个数据块(一个数据块的容量在创建数据库时由db_block_size参数指定,缺省为8K)内出现内容混乱的现象。由于正常的数据块都有固定的合法内容格式,坏块的出现,导致数据库进程无法正常解析数据块的内容,进而使数据库进程报错乃至挂起,并级联导致整个数据库实例出现异常。

 

 

 

一.坏块的产生原因

 

 

 

坏块产生的原因大致有以下几种:

 

1.1 硬件问题

 

Oracle进程在处理一个数据块时,首先将其读入物理内存空间,在处理完成后,再由特定进程将其写回磁盘;如果在这个过程中,出现内存故障,CPU计算失误,都会导致内存数据块的内容混乱,最后反映到写回磁盘的数据块内容有误。同样,如果存储子系统出现异常,数据块损坏也就随之出现了。

 

 

 

1.2 操作系统BUG

 

由于Oracle进程对数据块的读写,都是以操作系统内核调用(system call)的方式完成的,如果操作系统在内核调用存在问题,必然导致Oracle进程写入非法的内容。

 

 

 

1.3 操作系统的I/O错误或缓冲问题

 

 

 

1.4 内存或paging问题

 

 

 

Oracle软件BUG

 

Oracle软件特定版本上,可能出现导致数据块的内容出现异常BUG

 

 

 

1.5 Oracle进程扰乱Oracle共享内存区域