本文主要是介绍oracle 坏块问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
五.如何查找坏块所含的数据表名称和数据的rowid5.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
这篇关于oracle 坏块问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!