oracle 坏块问题

五.如何查找坏块所含的数据表名称和数据的rowid


5.1. 首先肯定知道那个数据文件坏了,查出该文件的file_id,relative_fno,tablespace_name
 
  利用dba_data_files可以查询file_id(整个数据库唯一序号),RELATIVE_FNO(相对一个表空间内的序号)
 
5.2. 找到坏块的ID(可以运行dbverify实现),假设找到的坏块ID为1234。
5.3.运行下面的查询,根据,坏块的file_id,block id查找该块对应的owner,segment_type,
segment_name等信息
 
    select owner,file_id,segment_name, segment_type, block_id, blocks
  from dba_extents
  where  file_id=13 and block_id<=1234 and (block_id + blocks- 1) >= 1234;
 
 
5.4. 根据坏块的file_id,owner,segment_name,block_id,如果是数据表的话,用下面的查询来得到对应坏块的rowid
 
  假设owner  :  DAVE
 
      segment_name:  BL
 
      file_id     :  13
 
      block_id    :  162
 
  运行下面的查询来获得该块所含的rowid(如果没有索引,可能就不能用下面的方式了):
 
select /*+ index(DAVE, i_test)?*/ rowid
 from DAVE.BL
  where  dbms_rowid.rowid_to_absolute_fno(rowid,'DAVE','BL')=13

  and  dbms_rowid.rowid_block_number(rowid)=162;


http://biancheng.dnbcw.info/oracle/254270.html

http://blog.itpub.net/25472150/viewspace-688629

http://www.askoracle.org/oracle/ORA-errors/444.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值