关于 数据坏块 的整理和总结

数据库中表,出现了坏块。对于这个问题,在网上早就有了各种各样的讨论和解决办法,现在总结如下,以希望在关键时刻能用得上:
一、 数据表出现坏块,设置10231事件来进行EXP,然后在IMP的方法
对于这种情况来说,如果没有热备份,或者时间匆忙,来不及从备份中恢复,那么我们只能丢失一部分数据,先尽可能的修复在说了。 一般情况下,出现数据坏块,并不影响数据库的启动(非system 数据库文件损坏),但是一旦我们使用到了相关数据,就会报出类似如下信息的错误:ORA-01578: ORACLE 数据块损坏(文件号4,块号35),我们需要用以下的sql来进行查询,以确保损坏的仅仅是我们数据库中的表的数据:
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 (注意:如果是TEMP坏,则没有返回值)
这个时候,用dbv来检查文件号为4的数据文件,将会报错误信息;
由于出现坏块,EXP 在这个时候是不能进行的,我们必须设置如下事件,以让数据库在进行FTS的时候绕过数据坏块:
ALTER SYTEM set EVENTS = '100231 trace name context forever, level 10';
再次进行EXP,就可以导出数据了。
二、 用dbms_repair包 exec DBMS_REPAIR.ADMIN_TABLES('REPAIR_TABLE',1,1,'USERS');
exec DBMS_REPAIR.ADMIN_TABLES('ORPHAN_TABLE',2,1,'USERS');
exec dbms_repair.check_object(schema_name => 'SYSTEM',object_name => 'TEST',corrupt_count => cc);
select *from repair_table;
exec dbms_repair.fix_corrupt_blocks(schema_name => 'SYSTEM',object_name => 'TEST',fix_count => cc);
exec dbms_repair.skip_corrupt_blocks(schema_name => 'SYSTEM',object_name => 'TEST',flags => 1);
exec dbms_repair.dump_orphan_keys(schema_name => 'SYSTEM',object_name => 'I_TEST',object_type => 2,
repair_table_name => 'REPAIR_TABLE',orphan_table_name => 'ORPHAN_TABLE',key_count => CC);
exec dbms_repair.rebuild_freelists(schema_name => 'SYSTEM',object_name => 'TEST');

三、 用 9i 的特性:blockrecover 来修复坏块 RMAN > RUN {
BLOCKRECOVER DATAFILE 2 BLOCK 12, 13 DATAFILE 7 BLOCK 5, 98, 99 DATAFILE 9 BLOCK 19;
}
RMAN > RUN {
BLOCKRECOVER DATAFILE 3 BLOCK 2,3,4,5
TABLESPACE sales DBA 4194405, 4194409, 4194412
FROM DATAFILECOPY
}

Rman > RUN {
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME 'SYSDATE-2';
}
Rman>run{blockrecover datafile 5 block 11,16 restore until sequence 8505;}
RMAN> blockrecover datafile 2 block 14 from backupset;
四、 用BBED 来修复坏块
五、 数据块损坏后,如何创建索引?
对于一般的索引,我们可以删除掉该索引,然后重建;如果该索引为主键,我们只能先disable该主键,disable后,相关索引也自然没有了,然后我们再重建索引
六、 模拟数据坏块 我们一般用UE、winhex等软件可以来模拟坏块的情况。这些都是windows的情况,在unix的情况下,我们可以通过以下方法来处理: a. dd命令 b. orapatch 命令:
$orapatch open tools001.dbf write
patch>set hex --要用十六进制
patch>display 177 --orapatch以512字节为工作模式,假定想破坏第11个block即为:8k/512*11+1(file header)
patch>find 00400003 --选一个要编辑的点
patch>modify 00400002 --破坏
patch>exit

http://www.itpub.net/showthread.php?s=&threadid=201766&perpage=15&pagenumber=1

[@more@]

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

转载于:http://blog.itpub.net/7916042/viewspace-915080/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: ORA-01578是Oracle数据库的错误代码,表示数据块损坏。这种情况通常是由于硬件故障、操作系统错误或数据库软件错误等原因引起的。如果出现这种错误,需要尽快采取措施,以避免数据丢失或数据库无法正常运行。可以尝试使用Oracle提供的工具来修复损坏的数据块,或者恢复备份数据。同时,也需要对数据库进行定期备份和维护,以确保数据的安全性和可靠性。 ### 回答2: ORA-01578是一种Oracle数据库错误,它表示一个数据块已经损坏或者没有在磁盘上找到相应的数据块。这个问题在Oracle数据库中比较常见,有很多因素可以导致它的出现,包括硬件故障、操作系统故障、存储介质故障等等。当出现ORA-01578错误时,数据库就不能够访问被损坏的数据块,导致相关数据未能正确载入或者读取,这会对系统的正常运行产生很大的影响。 针对ORA-01578错误,我们可以采取如下的解决方法: 1. 执行数据库块校验:可以通过使用DBVERIFY命令对数据块进行校验,确认数据块是否损坏。如果发现块损坏,则可以手动修复或者采用数据恢复工具来修复。 2. 执行恢复操作:如果块不能够修复,则需要对数据库进行恢复操作。可以使用回滚段或者闪回数据库来将数据库恢复到正常状态。 3. 重新分配数据块:如果块已经损坏,则可以将块所在数据文件从文件系统中删除,并重新分配一个数据块给该文件。需要注意的是,这个操作可能会导致数据的丢失。 4. 根据错误日志进行修复:可以通过查看Oracle数据库的错误日志,了解ORA-01578错误的发生原因,从而采取相应的修复措施。 总之,ORA-01578错误是一个比较严重的数据库问题,需要及时解决。我们需要采取适当的措施来解决这个问题,以确保数据库的正常运行。同时,还需要加强数据备份和恢复的管理,以防止数据丢失和恢复不及时的问题。 ### 回答3: ORA-01578是Oracle数据库的一个常见错误,通常会提示数据块损坏。这个错误可能源于多种原因,可能是硬件故障、恶意软件、自然灾害等等。当遇到ORA-01578错误时,需要及时采取措施来解决问题,以避免数据丢失和系统崩溃的风险。 首先,需要定位数据块损坏的具体位置和原因。可以通过Oracle数据库提供的诊断工具来查找数据块损坏的位置和原因。一旦确定了具体的损坏原因,需要对数据库进行相应的维护和修复工作。 其次,可以使用Oracle的数据还原工具来恢复已经损坏的数据块。这个过程可能需要一些时间,取决于数据块的大小和损坏的程度。在进行数据恢复之前,需要备份好数据库以防止数据丢失。 最后,需要对数据库进行优化和维护工作,以确保数据库的稳定性和可靠性。可以定期对数据库进行备份和清理工作,避免过度使用数据库容量和过度操纵数据库。 总之,ORA-01578错误是一种常见的Oracle数据库错误,需要及时定位和解决。在处理数据块损坏时,需要使用Oracle提供的诊断工具和数据恢复工具,并对数据库进行定期的维护和优化工作。这样才能确保数据库的稳定性和可靠性,并避免数据丢失和系统崩溃的风险。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值