设为首页 收藏本站
查看: 768|回复: 0

[经验分享] Oracle数据块损坏恢复总结(转帖)

[复制链接]

尚未签到

发表于 2016-8-2 09:07:47 | 显示全部楼层 |阅读模式
  查看数据坏块所在数据文件号及块号可以对表进行一次全表扫描,如:
  select count(*) from tablename;
  1、没有备份的情况下:
  1.1、使用exp/imp恢复
  在这种情况下肯定会造成数据的丢失,在这种情况下应采取将数据导出然后重建表再进行导入的方法,来尽量恢复损坏数据块中的数据,但是在有坏块的情况下是不允许导出的,如下命令:
  Exp test/test file=t.dmp tables=t;
  导出命令在执行中会报ORA-01578错误,在这错误提示中会提示那个文件号的文件以及这个文件中的哪个块被损坏,如:ORA—01578:ORACLE 数据块损坏(文件号 4,块号 35)
  针对以上的提示首先查询那些对象被损坏:
  Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;
  如果被损坏的块是索引,通常可以通过索引重建来解决,如果损坏的是数据╯egment_type为table),那么通过设置如下内部事件使得Exp操作跳过坏块。
  Alter session set events=’10231 trace name context forever,level 10’;
  然后重新执行导出命令,导出相关的表,然后执行Drop Table命令删除相关表,之后重建表最后导入数据。
  1.2、使用DBMS_REPAIR恢复
  用DBMS_REPAIR当然也会丢失数据。这里不做详细的介绍,有兴趣的可以查看oracle的在线文档
  2、使用Rman进行恢复:
  首先要存在Rman的最新备份集,然后执行如下命令:
  RMAN>backup validate datafile 4;检查4号数据文件是否存在坏块
  执行查询:select * from v$database_block_corruption where file#=4;
  如果4号文件存在坏块的话,那么将在结果集中有所显示,会显示损坏的块号,根据显示结果执行如下命令进行恢复:
  RMAN>blockrecover datafile 4 block 35 from backupset;
  该命令执行后即可恢复坏块,并且不会造成数据丢失,但是要求数据库必须要运行在归档模式下,否则RMAN无法发挥作用,而且通过RMAN做过最新的数据库备份
  3、使用bbed恢复
  使用bbed恢复时必须有数据文件的拷贝。
  bbed就是英文block browse edit的缩写,用来直接查看和修改数据文件数据的一个工具。
  在windows和linux上面都有
  但在linux下需要编译:
  然后把$ORACLE_HOME/rdbms/lib加到环境变量的PATH里面,就可以直接在命令中bbed了。
  BBED的缺省口令为blockedit,For Oracle Internal Use only 请谨慎使用Oracle不做技术支持。
  [oracle@test oracle]$ cd $ORACLE_HOME/rdbms/lib
  [oracle@test lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
  进入bbed后,可以使用help查看帮助
  BBED> help
  bbed的详细用法这里不做具体介绍。
  如果是由于ORA-00600: internal error code, arguments: [kddummy_blkchk], [47], [935468], [18038], [], [], [], []
解决办法是将db_block_checksum这个参数改为FALSE
  DB_BLOCK_CHECKING参数主要是用于数据块的逻辑(一致)检查(但只是块内,不包括块间的逻辑检查,比如索引项目的ROWID指向的是不存在的行等)。主要用于防止在内存中损坏或数据损坏。由于是逻辑检查,因此引起的额外负荷比较高,甚至可以达到10%,因此对于一个繁忙的系统,特别是插入或更新操作很多的系统,性能影响是比较明显的

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251968-1-1.html 上篇帖子: ORA-03206:oracle 11g表空间之最大大小[转] 下篇帖子: windows系统下常见的oracle服务介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表