oracle ora1578,数据块损坏ORA-1578(发现损坏块)

数据块损坏一多都发生在硬件故障上,例如内存,换页区,IO子系统,以及磁盘驱动器等发生问题时,引发数据在写和读的时候破坏了数据块的结构.如何可以发现自己的数据块是否发生损坏呢?

1.查看ALERT LOG 如果发生损坏一般都会在ALERT LOG里有记录.

如:

Corrupt block relative dba: 0x0180024c (file 6, block 588)

Bad check value found during buffer read

Data in bad block:

type: 6 format: 2 rdba: 0x0180024c

last change scn: 0x0000.000d4ded seq: 0x9a flg: 0x04

spare1: 0x0 spare2: 0x0 spare3: 0x0

consistency value in tail: 0x4ded069a

check value in block header: 0xaab

computed block checksum: 0x303d

2.使用DBV工具来检查(可以在数据文件使用的时候使用此工具,但是建议不这样用).

页 588 标记为损坏

Corrupt block relative dba: 0x0180024c (file 6, block 588)

Bad check value found during dbv:

Data in bad block:

type: 6 format: 2 rdba: 0x0180024c

last change scn: 0x0000.000d4ded seq: 0x9a flg: 0x04

spare1: 0x0 spare2: 0x0 spare3: 0x0

consistency value in tail: 0x4ded069a

check value in block header: 0xaab

computed block checksum: 0x303d

3.使用ANALYZE 命令.

scott@ORA10> analyze table test validate structure;

analyze table test validate structure

*

第 1 行出现错误:

ORA-01578: ORACLE 数据块损坏 (文件号 6, 块号 588)

ORA-01110: 数据文件 6: 'C:ORACLEPRODUCT10.2.0ORADATAORA10TEST01.DBF'

4.使用ALTER SYSTEM DUMP DATAFILE 6 BLOCK 588;(来查看SCN 的SEQ 如果为0XFF 块被标记为损坏)

如:sys@ORA10> oradebug setmypid

已处理的语句

sys@ORA10> oradebug tracefile_name

c:oracleproduct10.2.0adminora10udumpora10_ora_5768.trc

scn: 0x0000.00000000 seq: 0xff flg: 0x00 tail: 0x000006ff(SCN 为0 说明是MEDIA 损坏,SEQ 0XFF 说明是SOFT 损坏)

5.使用EVENT 10232 在PFILE里指定EVENT='10232 TRACE NAME CONTEXT FOREVER,LEVEL 10'

这样会在发现BLOCK CORRUPTION 的时候DUMP 出TRACE 信息

如:

Corrupt block relative dba: 0x01800086 (file 6, block 134)

Bad check value found during buffer read

Data in bad block:

type: 6 format: 2 rdba: 0x01800086

last change scn: 0x0000.000bd90f seq: 0x1e flg: 0x04

spare1: 0x0 spare2: 0x0 spare3: 0x0

consistency value in tail: 0xd90f061e

check value in block header: 0x395f

computed block checksum: 0x2d30

Reread of rdba: 0x01800086 (file 6, block 134) found same corrupted data

table scan: segment: file# 6 block# 11

skipping corrupt block file# 6 block# 134

*** 2008-08-28 16:39:11.453

*** 2008-08-28 16:39:11.453 60680 kcrr.c

ARCH: Archival disabled due to shutdown: 1089

*** 2008-08-28 16:39:12.468 60680 kcrr.c

ARCH: Archival disabled due to shutdown: 1089

6.使用EXP工具(此方法SYSTEM表空间的CORRUPTION 可能不能发现)

如: EXP SYSTEM/ADMIN FULL=Y FILE=/dev/null

. . 正在导出表 TEST

EXP-00056: 遇到 ORACLE 错误 1578

ORA-01578: ORACLE 数据块损坏 (文件号 6, 块号 588)

ORA-01110: 数据文件 6: 'C:ORACLEPRODUCT10.2.0ORADATAORA10TEST01.DBF'

7.使用RMAN 工具(只有此方法能发现HWM 以上的数据块损坏)

如:

通道 ORA_DISK_1: 正在启动段 1 于 28-8月 -08

ORA-19566:超出块损坏限制:0

............................

8.使用SELECT * FROM TABLENAME;做FULL TABLE SCAN 同样也会标记出损坏的块。[@more@]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值