線上業務系統的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;
也沒有資料了
select * from v$database_block_corruption;
也沒有資料了
比較可惜的是 此案例是線上生產DB, 比較急著要處理 ,就沒有完整紀錄處理前後DB的狀態
案例二:
出現了也是 相關錯誤, 但不是index ,
而是 partition table 的extent出現錯誤
這不過是已經沒資料的 partition table , 剛好可以直接砍掉,
在重新執行一次 就沒問題
看來搜尋到空的partition table 的壞掉區段 他也會爆錯
出現了也是 相關錯誤, 但不是index ,
而是 partition table 的extent出現錯誤
這不過是已經沒資料的 partition table , 剛好可以直接砍掉,
在重新執行一次 就沒問題
看來搜尋到空的partition table 的壞掉區段 他也會爆錯
rman 檢查 指令
回覆刪除https://oracle-base.com/articles/misc/detect-and-correct-corruption
11g 之後 可用 檢查datafile
回覆刪除VALIDATE CHECK LOGICAL DATAFILE 1;
http://www.cnblogs.com/lhrbest/p/8783087.html
回覆刪除https://cloud.tencent.com/developer/article/1123299
回覆刪除