免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3574 | 回复: 13
打印 上一主题 下一主题

如何查找损坏块,急!谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-10 10:49 |只看该作者 |倒序浏览
查找数据文件中已经损坏的block的utility是哪个?就是可以直接在c:>;下运行的exe

论坛徽章:
0
2 [报告]
发表于 2003-09-10 11:09 |只看该作者

如何查找损坏块,急!谢谢

各位帮帮忙,谢谢

论坛徽章:
0
3 [报告]
发表于 2003-09-10 11:18 |只看该作者

如何查找损坏块,急!谢谢

dbv

论坛徽章:
0
4 [报告]
发表于 2003-09-10 11:26 |只看该作者

如何查找损坏块,急!谢谢

谢谢!

论坛徽章:
0
5 [报告]
发表于 2003-09-10 11:32 |只看该作者

如何查找损坏块,急!谢谢

现在情况是SYSTEM01.DBF中有损坏的BLOCK,现在库打不开,OPEN时报1578错,该怎么办!

论坛徽章:
0
6 [报告]
发表于 2003-09-10 12:36 |只看该作者

如何查找损坏块,急!谢谢

这是从别的地方看到的一个方法,由于没有接触到这种情况,无法验证,你试试看

当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:
ORA-01578: ORACLE data block corrupted (file # 7, block # <BLOCK>
ORA-01110: data file <AFN>;: '/oracle1/oradata/V920/oradata/V816/users01.dbf'

其中,<AFN>代表坏块所在数据文件的绝对文件号,<BLOCK>;代表坏块是数据文件上的第几个数据块
出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。
1.确定发生坏块的数据库对象
SELECT tablespace_name,
segment_type,
owner,
segment_name
FROM  dba_extents
WHERE  file_id = <AFN>;
AND <BLOCK>; between block_id AND block_id+blocks-1;
2.决定修复方法
如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;
如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;
如果有数据库的备份,则恢复数据库的方法来进行修复;
如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据坏上的记录取出来,然后对这个表进行重建。
3.用Oracle提供的DBMS_REPAIR包标记出坏块
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>;','<tablename>;');
4.使用Create table as select命令将表中其它块上的记录保存到另一张表上
create table corrupt_table_bak
as
select * from corrupt_table;
5.用DROP TABLE命令删除有坏块的表
drop table corrupt_table;
6.用alter table rename命令恢复原来的表
alter table corrupt_table_bak
rename to corrupt_table;
7.如果表上存在索引,则要重建表上的索引

论坛徽章:
0
7 [报告]
发表于 2003-09-10 12:50 |只看该作者

如何查找损坏块,急!谢谢

system表空间坏,数据库都无法启动了,还是从备份中恢复吧。

论坛徽章:
0
8 [报告]
发表于 2003-09-10 13:20 |只看该作者

如何查找损坏块,急!谢谢

现在是数据库OPEN时都不允许,数据又没有备份,所以说除了重建,还能有什么办法吗?

论坛徽章:
0
9 [报告]
发表于 2003-09-10 14:17 |只看该作者

如何查找损坏块,急!谢谢

把alert<SID>;贴出来

论坛徽章:
0
10 [报告]
发表于 2003-09-10 14:41 |只看该作者

如何查找损坏块,急!谢谢

其中一部分
Errors in file C:\oracle\admin\gdls2003\bdump\gdls2003SMON.TRC:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 1, block # 12051)
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\GDLS2003\SYSTEM01.DBF'

***
Corrupt block relative dba: 0x00403b32 (file 1, block 15154)
Bad header found during buffer read
Data in bad block -
type: 48 format: 49 rdba: 0x31303700
last change scn: 0x076c.61730003 seq: 0x0 flg: 0x64
consistency value in tail: 0x31303000
check value in block header: 0x7165, computed block checksum: 0x27cd
spare1: 0x33, spare2: 0x3, spare3: 0x6575
***
Reread of rdba: 0x00403b32 (file 1, block 15154) found same corrupted data
Wed Sep 10 08:53:44 2003
SMON: disabling cache recovery
Wed Sep 10 08:53:45 2003
ORA-604 signalled during: alter database open...
Wed Sep 10 08:53:45 2003
Errors in file C:\oracle\admin\gdls2003\bdump\gdls2003SMON.TRC:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 1 cannot be read at this time
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\GDLS2003\SYSTEM01.DBF'

Wed Sep 10 08:53:46 2003
Errors in file C:\oracle\admin\gdls2003\bdump\gdls2003SMON.TRC:
ORA-00376: file 1 cannot be read at this time
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\GDLS2003\SYSTEM01.DBF'

Wed Sep 10 08:53:47 2003
Errors in file C:\oracle\admin\gdls2003\bdump\gdls2003SMON.TRC:
ORA-00376: file 1 cannot be read at this time
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\GDLS2003\SYSTEM01.DBF'

Wed Sep 10 08:53:48 2003
Errors in file C:\oracle\admin\gdls2003\bdump\gdls2003SMON.TRC:
ORA-00376: file 1 cannot be read at this time
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\GDLS2003\SYSTEM01.DBF'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP