2018年6月6日 星期三

ORACLE RAC ASM 出現 壞BLOCK


線上業務系統的DB,,, 突然被告知無法寫資料進去某張table

本以為是 table block 壞掉,,  
但被RD人員無法執行的SQL是 insert into .... select * from 

噴出來的錯誤訊息是 
### Cause: java.sql.SQLException: ORA-01578: ORACLE data block corrupted (file # 39, block # 288386)

查了一下 此 block 的 object  是什麼
select * from dba_extents where file_id = 39  and block_id >= 288381   and  block_id  <= 288386 +10

還好此 object 是 index ....  重新 rebuild  就可以正常運作


之後使用dbv 檢測一下此datafile
* 這邊的userid 必須可以登入 asm 且需要 sysasm 權限


[grid@db-15 ~]$ dbv file='+***_***01/**/datafile/l****.285.9909' userid=sysasm/******

DBVERIFY: Release 11.2.0.4.0 - Production on Wed Jun 6 15:25:28 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = +***_***01/**/datafile/l****.285.976987909


DBVERIFY - Verification complete

Total Pages Examined         : 1310720
Total Pages Processed (Data) : 431638
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 345145
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 4632
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 529305
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 0 (0.0)


沒有看到 Total Pages Marked Corrupt  筆數
...............

select * from v$database_block_corruption; 
也沒有資料了


比較可惜的是 此案例是線上生產DB, 比較急著要處理 ,就沒有完整紀錄處理前後DB的狀態





案例二:
出現了也是 相關錯誤, 但不是index ,

而是 partition table 的extent出現錯誤

這不過是已經沒資料的 partition table , 剛好可以直接砍掉, 
在重新執行一次 就沒問題


看來搜尋到空的partition table 的壞掉區段 他也會爆錯








4 則留言:

  1. rman 檢查 指令
    https://oracle-base.com/articles/misc/detect-and-correct-corruption

    回覆刪除
  2. 11g 之後 可用 檢查datafile
    VALIDATE CHECK LOGICAL DATAFILE 1;

    回覆刪除
  3. http://www.cnblogs.com/lhrbest/p/8783087.html

    回覆刪除
  4. https://cloud.tencent.com/developer/article/1123299

    回覆刪除