數據文件壞塊處理

如果數據庫的底層文件出現了壞塊的情況,通過alert日誌觀察是否有大規模的壞塊,以下討論只有個別壞塊的情況,處理思路是:首先定位壞塊的文件,其次定位壞塊的對象,將改文件上沒有壞塊的對象挪走,避免大規模故障,最後根據壞塊的對象來補償數據,可以業務側補償,或者通過備份和歸檔來恢復這個對象。

第一步:定位查看該文件上的對象:

SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME FROM dba_extents WHERE file_id = 2344;   
SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME FROM dba_extents WHERE file_id = 2171;  

第二步:定位文件上對應壞塊上的對象,最大程度挽救數據:

SELECT tablespace_name, segment_type, owner, segment_name, partition_name 
FROM dba_extents  WHERE file_id = 2344 and 19 between block_id AND block_id + blocks - 1;--文件號,塊號

第三步:將文件上的對象移走MOVE,REBUILD等
alter index UCR_USER.IND_TI_TABLE rebuild tablespace TBS_CRM_HDTRA3;

第四步:將文件OFFLINE
alter database datafile ‘/dev/rcrm1vg13_4_028’ offline
ALTER DATABASE RECOVER datafile ‘/dev/rcrm1vg13_4_028’

如果碰到大規模的壞塊,可能磁盤出現故障,此時儘量從備份來恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章