ORA-19566 exceeded limit of 0 corrupt blocks資料壞塊處理
問題描述
RMAN備份失敗,報錯如下:
channel ch1: starting piece 1 at 02-NOV-12
released channel: ch1
RMAN-00571:
RMAN-00569: ==== ERROR MESSAGE STACK FOLLOWS ============
RMAN-00571: =========
RMAN-03009: failure of backup command on ch1 channel at 11/02/2012 04:03:19
ORA-: exceeded limit of 0 corrupt blocks for file
RMAN>
Recovery Manager complete.
一般壞塊處理過程
1、首先確定是什麼段、哪個段壞了,是索引還是表?
執行以下語句看哪個段壞了
SQL>
where a.file_id=<F> and <B>
between a.block_id and a.block_id+a.blocks-1
and a.segment_name=b.segment_name and
a.owner=b.owner;
這裡的 F 指的是 file#,B 指的是 block#
2. 如果是物理壞塊,需要更換磁碟,分幾種情況:
1)如果是檔案系統且做了raid的,在messages裡會顯示具體哪個磁碟出問題了,更換磁碟,系統會自動恢復磁碟。
2)如果是檔案系統且沒做raid,但有備份和歸檔,在messages裡會顯示具體哪個磁碟出問題了,更換磁碟,然後用資料檔案備份和歸檔、線上日誌恢復到最後的時間點。
3)如果是檔案系統且沒做raid,沒有備份,那麼就要按下面的步驟3裡的操作恢復好壞塊後,再更換磁碟。
4)如果是asm管理磁碟陣列,將亮紅燈的磁碟拔掉,換個新的,系統會自動恢復磁碟。
3. 如果是邏輯壞塊,就看是索引壞塊還是表壞塊。
如果是索引壞塊,那麼直接刪除索引,重建索引就好。
如果是表壞塊,分三種情況:
1)有rman備份,利用rman備份恢復壞塊。命令:blockrecover
datafile file# block block# from backupset;
2)沒有rman備份,只有exp備份,且備份可用,那麼刪除這個表,重新匯入。
3)如果沒有備份,以表tab03為例,按下面的步驟處理:
A、 以 tab03的 owner 連入 oracle
B、 使用診斷事件 10231
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
C 、建立一個臨時表 tab_tmp 的表中除壞塊的資料都檢索出來
SQL>CREATE
TABLE tab_tmp as select * from tab03;
D、 更名原表,並把 tab_tmp 更名為 tab03
SQL>alter table tab03 rename to tab03_bak;
SQL>alter table tab_tmp to tab03;
E、 在 tab03 上重新建立索引、約束、授權、
trigger 等物件
F、 利用表之間的業務關係,把壞塊中的資料補足。
本次處理過程
1. 使用dbv檢查一下是否有資料壞塊
[oracle@svr1-219 backup_script]$ dbv file=/oradata3/o219g2/income_gs_main_tst_tbs12.dbf
DBVERIFY: Release 10.2.0.4.0 - Production on Fri Nov 2 11:52:58 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oradata3/o219g2/income_gs_main_tst_tbs12.dbf
Page 386924 is marked corrupt
Corrupt block relative dba: 0x0d85e76c (file 54, block )
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x0d85e76c
last change scn: 0x02d1.805a7552 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x75520601
check value in block header: 0x584e
computed block checksum: 0xfbab
Page 404230 is marked corrupt
Corrupt block relative dba: 0x0d862b06 (file 54, block )
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x0d862b06
last change scn: 0x02d1.805a7552 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x75520601
check value in block header: 0x339
computed block checksum: 0x7b41
DBVERIFY - Verification complete
Total Pages Examined : 512000
Total Pages Processed (Data) : 304782
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 115775
Total Pages Failing (Index): 0
Total Pages Processed (Other): 9000
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 82441
Total Pages Marked Corrupt : 2
Total Pages Influx : 0
Highest block SCN : 2163414262 (721.2163414262)
[oracle@svr1-219 backup_script]$
2. 檢視是什麼物件存在壞塊
SQL> SELECT segment_type, owner, segment_name
2 FROM dba_extents
3 WHERE file_id = 54
4 and 386924 between block_id AND block_id + blocks - 1;
SEGMENT_TYPE OWNER SEGMENT_NAME
------------------ ------------------- ------------------------------------------------
INDEX INCOME_GS_MAIN_TST PK_T_RPT_SOA_RECON_DETAIL
SQL> SELECT segment_type, owner, segment_name
2 FROM dba_extents
3 WHERE file_id = 54
4 and 404230 between block_id AND block_id + blocks - 1;
SEGMENT_TYPE OWNER SEGMENT_NAME
------------------ ------------------ -----------------------------------
INDEX INCOME_GS_MAIN_TST PK_T_RPT_SOA_RECON_DETAIL
3. 處理壞塊
上面顯示是索引,這樣處理起來比較簡單,刪除重建就可以了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2145033/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-19566: exceeded limit of 0 corrupt blocks for fileMITBloC
- RMAN出現檔案損壞ORA-19566: exceeded limit of 0 corrupt blocks 處理MITBloC
- 資料庫壞塊Corrupt block的處理方法資料庫BloC
- oracle corrupt block壞塊處理OracleBloC
- Oracle資料庫出現ORA-19566 LOB壞塊的處理記錄Oracle資料庫
- 資料庫壞塊處理資料庫
- Oracle RMAN備份中對壞塊(corrupt block)的處理OracleBloC
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- Oracle壞塊處理Oracle
- rootvg壞塊處理
- ORACLE 壞塊處理Oracle
- 處理塊損壞
- ORA-01578(資料塊損壞)跳過壞塊處理辦法
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- 教你如何處理Oracle資料庫中的壞塊Oracle資料庫
- DBA實踐---壞塊處理
- Oracle壞塊處理相關Oracle
- Oracle壞塊問題處理Oracle
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- [zt] 如何處理Oracle資料庫中的壞塊[final]Oracle資料庫
- 一個簡單易用的資料庫壞塊處理方案資料庫
- 第7章 處理塊損壞
- BAD Block 壞塊的處理BloC
- Oracle 11.2.0.4.4 ADG 備庫資料檔案壞塊處理Oracle
- 壞塊處理10231(不過會丟失資料)
- ORACLE資料庫壞塊的處理 (通過re-create table方法)Oracle資料庫
- 【BLOCK】Oracle壞塊處理命令參考BloCOracle
- oracle壞塊模擬處理(筆記)Oracle筆記
- Oracle 壞塊處理三板斧Oracle
- Oracle壞塊修復處理實驗Oracle
- 一次使用BBED處理壞塊
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- 使用SKIP_CORRUPT_BLOCKS或Event 10231來提取資料BloC
- Oracle 9i資料壞塊的處理(ORA-01578) ztOracle
- [20121016]壞塊處理以及資料恢復.txt資料恢復
- 壞塊的處理思維(用程式製作壞塊不如用系統)
- bad block表上壞塊的處理BloC