資料塊損壞ORA-1578(發現損壞塊)

lemonlili發表於2009-10-04
資料塊損壞一多都發生在硬體故障上,例如記憶體,換頁區,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@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8188536/viewspace-1027582/,如需轉載,請註明出處,否則將追究法律責任。

相關文章