li
  当前位置:主页 > 配置管理 > 文章内容
li
如果发现表中有坏块,如何检索其它未坏的数据
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-06-03   阅读:11  

如果发现表中有坏块,如何检索其它未坏的数据


首先需要找到坏块的ID(可以运行dbverify实现),假设为<BID>,假定文件编码为<FID>。运行下面的查询查找段名:
SELECT segment_name,segment_type,extent_id,block_id, blocks
from dba_extents t
where
file_id = <FID>
AND <BID> between block_id and (block_id + blocks - 1)
一旦找到坏段名称,若段是一个表,则最好建立一个临时表,存放好的数据。若段是索引,则删除它,再重建。
create table good_table
as
select from bad_table where rowid not in
(select rowid
from bad_table where substr(rowid,10,6) = <BID> )
在这里要注意8以前的受限ROWID与现在ROWID的差别。
还可以使用诊断事件10231
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
创建一个临时表good_table的表中除坏块的数据都检索出来
SQL>CREATE TABLE good_table as select * from bad_table;
最后关闭诊断事件
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context off ';
关于ROWID的结构,还可以参考dbms_rowid.rowid_create函数。




  上一篇: 怎么知道那些表没有建立主键   下一篇: 控制文件包含哪些基本内容
li
 §相关评论  
 热点文章

·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 编辑推荐
·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 相关篇章
·怎么知道那些表没有建立主键
·我创建了数据库的所有用户,我可...
·ORACLE的有那些数据类型
·installing Oracle10g-x86_64 on...
·Debian下安装Oracle10g数据库
·RHEL5下安装oracle 10g数据库
·FTP怎么在脚本中自动上传/下载
·sqlplus怎么与shell结合使用
·怎么样生成日期格式的文件
·oracle常见基本问题总结
·控制文件包含哪些基本内容
·怎么样计算REDO BLOCK的大小
·oracle如何查看已经打过的补丁
·oracle9i 的flashback 一些问题
·oracle SMON_SCN_TIME
·Oracle9i中flashback闪回数据
·逻辑standby数据库的创建过程
·ORA-03113:end-of-file on comm...
·ORA-01688:unable to extend tab...
·如何查询一个表中某字段重复记录...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接