dsi401_block structure之(二)

dsi401_block structure之(二)

什么是坏损坏
1,oracle读写块(buffer or disk),肯定会进行一致性检查
2,一致性检查内容:
     1,block version --refer to block dump
     2,cache中的dba和block buffer中的dba比较
     3,是否开启db_block_checking and db_block_checksum
3,如何检查上述内容呢
     1,基于块头的scnbase + seq    
     2,基于块尾的scnbase + seq
     3,block type
     小结:所在block dump有个block header,block tail(想想tail的构成)
4,块损坏的一些示例:
   ora-600(4519):cache layer block type is correct
  
5,block corrupation类型:
    1,介质损坏:
       表现:scn=0
    2,逻辑或软件损坏;
          表现:scn=xxx
                seq=ub1maxval
                注:xxx即最高或最大scn作的变化
                    这样会导致重构整个数据块
    3,两种损坏类型类型的后果:
        1,media corruption:
           从磁盘读取后此块完全无用
        2,soft corrupt :
           发现块不一致性了标记下此块
          
6,ora-1578
      1,表明是硬件问题
      2,如果多时出现且参数相同,可能这个数据块物理损坏了
      3,如多次出现但参数不同,可能硬件出故障了
         检查下:1,memory
                  2,io子系统的控制器是否正常
                如果可以得到出故障数据块的编号
                  1,dd dump
                  2,如果运行多次dd报错,就要检查下io子系统或者控制器是否出故障了
                 
                 

7,ora-600
      1,表现:ora-[600] [kcbzpb-1],[d],[kind],[chk],[],[]
      2,各参数含义:
            1,d --block number
              kind --损坏类型
              chk ---checksum flag
              kcbzpb-1 --内部错误,要参考source code
      3,此报错发生于数据块在内存中损坏
         即存储在内存时破坏了块头和块尾,这是它产生的唯一方法
        
8,处理坏块途径
   1,检查alert或trace file
   2,使用诊断工具确定损坏类型
   3,dump确认到底出了什么问题
   4,运行多次与损坏块相关的业务,是否一直出现
   5,如必要恢复坏块
  
   如发现一个坏块,可能出现了多外坏块,用dbverify检查出错的数据文件
  
   用dd和od -x分析坏块的产生原因
  
   对坏块相关的redo log进行dump,确认何时数据块的损坏开始时间
  
   如出现坏块,修复硬件后,必须进行介质恢复
  
与坏块相关的硬件故障类型:
  1,io硬件或固件
    2,os io或缓冲
    3,memory or paging
    4,disk
   
dbverify工具
  1,只能验证data file,而非redo file
  2,检查数据块一致性
  3,dbv会对出问题的连续重2次,第2次才会标记为坏块;如2次匹配,则标记为influx block
  4,influx block为split block;
  5,split block即:dbv首次读取一个块,尔后dbwr又写入了一个此块的新版本;导致
   数据块部分为老,部人为新;因此块头和尾不匹配
  6,所以可能还是会出现坏块在hwm之上
  7,logical corruption:即验证block header and block tail is match
 
analyze command
  1,logical block check
  2,不会标记它为soft corrupt,仅报告他们
  3,验证表和索引
  4,analyze table x validate structure cascade;--cascade option
    analyze index x validte structure;
    analyze cluster xx validate structure;
    多次运行analyze
    analyze table x partition (p1) validate structure into invalid_rows;
  5,对于assm方式,hwm之下的unformatted block不会包括(refer to dsi 402 for detail)
 
诊断事件
  1,event='10231 trace name context forever,level 10';--based full table span,skip corrupt block
  2,event='10233 trace name context forever,level 10';--base index range scan ,skip corrupt block
  3,event 10232:dump corrupted block in a trace file
  4,event 10210 :force logical block checking,只要块变化
  5,event 10211: 基于index block的10210
  6,event 10212:基于cluster block的10210
 
  7,10210,10211,10212的工作内容如下:
     1,free slot list结构
     2,数据块内的row位置
     3,重叠的row position
     4,itl的lock count
     5,这些事件很费资源,不用马上关闭
    
flash freeze
    1,oracle9i新特性,可以配置产生某个错误时触发一个动作
    2,可以进一步分析问题的原因
    3,event='600 flashfreeze after 1 times on error ksuwaitsysevent_1'
      --发生上述错误一次触发flash freeze
     
    4,--如果pmon产生1301 error
      event='600 flashfreeze on error 1301,proc=pmon'
    5,--如果发生事件10295,冻结所有的后台进程oracle
      event='10295 flashfreeze,proc=bgs,instance=single'
      --不支持rac    
                        
                        
db_block_checking
   1,with it replace above    event from 10210 to   10212

dbms_repair package

bbed                                                 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-757732/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-757732/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值