Welcome 微信登录

首页 / 数据库 / MySQL / Oracle block corrupt 坏块

总体上来讲,Oracle的坏块可以分为两种情景:物理损坏和逻辑损坏。物理损坏是由于存储等原因造成的,致使Oracle在处理数据块时发现块的checksum不一致。逻辑损坏多是由于Oracle的bug或者内存错误引起,通过检测数据块的checksum并不会发现什么问题,但是在逻辑上这些块已经发生了损坏。Oracle通过两个参数来控制对物理损坏和逻辑损坏的检测:SQL> show parameter db_block_checkNAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_block_checking      string  FALSE
db_block_checksum      string  TRUE db_block_checking 是当block发生任何变化的时候进行逻辑上的完整性和正确性检查。该参数能够避免内存中数据块的损坏。块的检查将对系统会有1%到10%的性能影响。取决于对db_block_checking参数的设置。频繁的DML将使得块检查带来更多的开销。在系统负荷允许的情形下建议设置为full。该参数对SYSTEM表空间始终是处于“打开”状态,而不管该参数是否设置为OFF。下面是该参数的设置参考。FALSE和TRUE是为了老版本的兼容。        Property            Description        ---------------    ------------        Parameter type        String        Syntax                        DB_BLOCK_CHECKING = { FALSE| OFF| LOW | MEDIUM | TRUE| FULL}  -->OFF(=FALSE),FULL(=TRUE)        Defaultvalue              FALSE        Modifiable                  ALTER SYSTEM        Basic                          No      这里有一点需要注意,即只有在对数据块发生修改时,db_block_checking才会发生作用。如SQL> show parameter db_block_checkNAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_block_checking      string  FALSE
db_block_checksum      string  TRUE
SQL> alter system flush buffer_cache;System altered.SQL> select * from scott.s2;//查询时没有问题T1    T2
---------- --------------------
51809    lllll
51888    SC
51574    PK_DEPT
51573    DEPT
1575EMP,  5
51576    PK_EMP
51578    SALGRADE7 rows selected.SQL> update scott.s2 set t2="aaaa" where t1="51809";//修改也没有问题1 row updated.SQL> commit;Commit complete.SQL> alter system flush buffer_cache;System altered.SQL> alter system set db_block_checking=true;System altered.SQL> select * from scott.s2;//查询是没有问题的T1    T2
---------- --------------------
51809    aaaa
51888    SC
51574    PK_DEPT
51573    DEPT
1575EMP,  5
51576    PK_EMP
51578    SALGRADE7 rows selected.SQL> update scott.s2 set t2="bbbb" where t1 = "51809";//修改时触发了逻辑检测
update scott.s2 set t2="bbbb" where t1 = "51809"
            *
ERROR at line 1:
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [kddummy_blkchk], [5], [20], [6113],
[], [], [], []
SQL> select * from scott.s2;//发现逻辑错误后,oracle将块标记为坏块,此时数据块无法访问了
select * from scott.s2
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 20)
ORA-01110: data file 5: "/home/app/oraten/oradata/oraten/tbs201.dbf"db_block_checksum 用于DBWn和direct loader数据块写入到磁盘时,基于块内的所有字节计算得出一个校验值并将其写入块头。在该参数设置为typical和full时,当读入时候重新计算校验和写出时候的校验对比,如果不同则认为是块损坏。如果设置为FULL模式,则基于update/delete应用程序语句级别的改变发生后,校验值会被重新计算并写入。同时对于日志块,在写入之前,同样会生产校验值并写入到块头。该参数主要是防止IO硬件和IO子系统的错误。如果设置为OFF则只对系统表空间有效。下面是该参数的设置参考。FALSE和TRUE是为了老版本的兼容。        Property            Description        ---------------    ------------        Parameter type        String        Syntax                        DB_BLOCK_CHECKSUM = { OFF| FALSE| TYPICAL | TRUE| FULL}  -->OFF(=FALSE),FULL(=TRUE)        Defaultvalue              TYPICAL      Modifiable                  ALTER SESSION,ALTER SYSTEM        Basic                          No对于性能上的差异而言,当设置两个block参数设置为true时,将需要更多的CPU资源来生成校验值以及进行内存块的验证。同时,该操作容易引起redo copy latch的持有时间增加和引起这个latch的竞争。不管db_block_checking和db_block_checksum这两个参数的值为何值,SYSTEM表空间都会进行做checking和checksum,可以通过隐含参数_db_always_check_system_ts设置为FALSE,但为了SYSTEM表空间数据安全,不建议将这个隐含参数值设置为FALSE。Oracle 11g 在RedHat Linux 5.8_x64平台的安装手册 http://www.linuxidc.com/Linux/2014-07/104745.htmLinux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-11/109372p2.htm
  • 1
  • 2
  • 下一页
DBMS_REPAIR包使用详解检测Oracle数据块损坏的方法汇总相关资讯      Oracle坏块 
  • 检测Oracle数据库坏块的方法  (05月26日)
  • 检测Oracle数据块损坏的方法汇总  (11/13/2014 19:26:05)
  • 记一次Oracle坏块修复过程  (05/02/2015 19:44:44)
本文评论 查看全部评论 (0)
表情: 姓名: 字数