ORA-19566 exceeded limit of 0 corrupt blocks資料壞塊處理

lhrbest發表於2017-09-15

 

 

問題描述

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章