一次壞塊的處理過程(二)
上面的步驟解決了壞塊對資料庫的潛在影響,但是此時v$database_block_corruption的資訊是還沒有清除的,需要清除,需要再執行RMAN,如果沒有壞塊已經修復,才會從v$database_block_corruption刪除對應記錄。
但是在大部分情況下,即使刪除了原來的物件,資料塊的狀態讓人是標識損壞的,但是不影響一般的資料庫操作,可以忽略。如果你看不順眼或者擔心它影響RMAN的備份,可以用以下方法格式化這個資料塊,只有被正常格式化後,資料塊狀態才會恢復正常。
[@more@]
1. 首先建立一個新表
create table s (n number,c varchar2(4000)) nologging tablespace dwdata_1m;
注意表空間要指定在壞塊所在的表空間上(v$database_block_corruption可查詢到)
2. 確保目標資料塊在free list上,並查詢其大小
SQL> Select BYTES from dba_free_space where file_id=2 and 502554 between block_id and block_id + blocks -1;
BYTES
----------
1048576
3. 手工擴充套件
BEGIN
FOR I IN 1 .. 100000000
LOOP
EXECUTE IMMEDIATE 'alter table s allocate extent(size 1048576 datafile ''+DATA/dwrac/datafile/dwdata_1m01.dbf'')';
END LOOP;
END;
在這一步執行的同時,不斷地查新dba_free_space,直至確認該資料塊已經不在dba_free_space中了,之後就可以把上一步操作的迴圈中斷。
SQL> Select * from dba_free_space where file_id= 2 and 502554 between block_id and block_id + blocks -1;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
-------------------------------- ---------- ---------- ---------- ---------- ------------
4. 下一步就是要寫裡寫入資料了
BEGIN
FOR i IN 1..1000000000 LOOP
INSERT /*+ APPEND */ INTO s select i, lpad('REFORMAT',3092, 'R') from dual connect by rownum<=10000;
commit ;
END LOOP;
END;
/
注意:必須要寫入資料,資料塊才能被重新格式化,才能修復塊的狀態。
5. 在寫入資料的同時,不斷用dbv檢測壞塊情況
--指定start和end引數,提高效率
[oracle@dwdb02 admin]$ dbv file="+DATA/dwrac/datafile/dwdata_1m01.dbf" start=502554 end=502554 userid=admin/sdoadmin123 blocksize=16384
DBVERIFY: Release 10.2.0.5.0 - Production on Thu Feb 17 15:56:53 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = +DATA/dwrac/datafile/dwdata_1m01.dbf
DBVERIFY - Verification complete
Total Pages Examined : 714581
Total Pages Processed (Data) : 610675
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 100202
Total Pages Failing (Index): 0
Total Pages Processed (Other): 3704
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 0
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 0 (0.0)
如果Total Pages Marked Corrupt=0,則表示資料塊已經修復了。此時就可以取消上一步的資料insert操作。
6. 用rman重新validate一次
RMAN> backup check logical validate datafile 2;
Starting backup at 17-FEB-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00508 name=+DATA/dwrac/datafile/dwdata_1m01.dbf
channel ORA_DISK_1: backup set complete, elapsed time: 00:20:45
Finished backup at 17-FEB-11
正常的話,這一步完了以後,v$database_block_corruption裡對應的壞塊記錄就應該被刪除了。
SQL> select * from v$database_block_corruption t where file#=2 and block#=502554;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE
---------- ---------- ---------- ------------------ ---------------
重複上面的步驟直至v$database_block_corruption不包括任何資料。
以上只是壞塊的處理過程,但是壞塊產生的原因仍然不明朗,需進一步挖掘,但是從這些例子也可以看出備份的重要性!
參考文件:
Master Note for Handling Oracle Database Corruption Issues [ID 1088018.1]
How to Format Corrupted Block Not Part of Any Segment [ID 336133.1]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-1046126/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次壞塊的處理過程(一)
- Oracle壞塊處理Oracle
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- 記一次PMML檔案的處理過程
- 記一次ceph pg unfound處理過程
- 一次併發處理過程, 基於 RedisRedis
- 記一次Nodejs安全工單的處理過程_20171226NodeJS
- 【BLOCK】Oracle壞塊處理命令參考BloCOracle
- 記一次linux主機中病毒處理過程Linux
- 一次線上問題處理過程記錄
- 記一次線上服務CPU 100%的處理過程
- MySQL資料庫INNODB表損壞修復處理過程分享MySql資料庫
- oracle壞塊(二)Oracle
- python中PCA的處理過程PythonPCA
- 一個簡單易用的資料庫壞塊處理方案資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- [20190718]12c壞塊處理一例.txt
- DOM在Ahooks中的處理過程Hook
- Flink流處理過程的部分原理分析
- 【原始碼】Redis命令處理過程原始碼Redis
- 記一次12c pdb打補丁失敗處理過程
- Oracle資料庫處理壞塊問題常用命令Oracle資料庫
- GC析構物件和列表的處理過程GC物件
- 【Tomcat】Tomat 處理請求的過程(圖解)Tomcat圖解
- MySQL儲存過程的異常處理方法MySql儲存過程
- fastHttp服務端處理請求的過程ASTHTTP服務端
- Ceph pg unfound處理過程詳解
- 大資料的處理是怎樣的過程大資料
- Android輸入系統(二)IMS的啟動過程和輸入事件的處理Android事件
- 完整的一次 HTTP 請求響應過程(二)HTTP
- Oracle資料庫出現ORA-19566 LOB壞塊的處理記錄Oracle資料庫
- 一次Oracle監聽無法動態註冊處理過程排查分析Oracle
- nacos2.3 密碼驗證的處理過程密碼
- Linux伺服器被入侵後的處理過程Linux伺服器
- npm install過程失敗的幾種處理方法NPM
- nginx 處理客戶端請求的完整過程Nginx客戶端
- (四)SpringBoot啟動過程的分析-預處理ApplicationContextSpring BootAPPContext
- 大資料處理過程是怎樣大資料