一次ORACLE資料庫undo壞塊處理
接到客戶電話,資料庫delete 資料一直卡住。
2021-02-10 10:00
客戶提供堡壘機遠端方式,登入作業系統,發現資料庫異常卡頓,後臺有大量等待事件,磁碟io 已經達到峰值
2021-02-11 23:00
資料庫重新起停時間需要2 小時以上,且磁碟io 一直處於寫滿狀態,且再最後一次啟動資料庫後,undo 出現壞塊,需要客戶進行排查磁碟是否損壞
2021-02-19 09:00
接到客戶通知,磁碟修復成功。重新連入資料庫,修復壞塊,重新開啟資料庫
undo 段壞塊處理
在磁碟修復成功後,美創工程師重新啟動資料庫,但是smon 程式監控到#116 資料檔案存在壞塊,也就是undo 段仍然存在壞塊,無法進行回滾,為了保持資料庫的一致性讀,smon 程式直接關閉資料庫了
需要新建undotbs2 表空間替換掉已經壞掉的undotbs1 表空間。但是資料庫只有在open 的狀態下才能建立新的undo 表空間。為了防止SMON 程式再次檢測到壞塊關閉資料庫,美創工程師將有壞塊的#116 資料檔案進行offline drop 處理。
startup mount
alter database datafile 116 offline drop;
也可以透過設定10531event ,禁止smon 程式進行回滾
startup mount
alter system set events '10513 trace name context forever,level 2';
以上兩種方法皆可以使資料庫處於open 狀態,不被smon 程式強制關閉
開啟資料庫,建立新的undo 表空間,並設定為預設表空間
create undo tablespace undotbs2 datafile '/oradata/ETL/UNDOTBS2.dbf' size 1G autoextend on;
alter system set undo_tablespace=undotbs2 scope=both;
刪除舊的表空間,但是原undo 表空間仍然存在活躍的undo 段
drop tablespace undotbs1 including contents and datafiles;
查詢相關檢視,獲取所有原undo 表空間仍活躍的undo 段
select status,segment_name from dba_rollback_segs where status not in ('OFFLINE') and tablespace_name='UNDOTBS1';
新增隱含引數至pfile 引數檔案中,跳過以上查出的所有undo 段
*._allow_resetlogs_corruption=true
*._allow_terminal_recovery_corruption=true
*._corrupted_rollback_segments=(_SYSSMU10_1197734989$,_SYSSMU20_1050586925$,_SYSSMU26_3131552754$,_SYSSMU28_1349284785$,_SYSSMU32_980979620$,_SYSSMU34_3070439537$,_SYSSMU47_2705532003$,_SYSSMU50_602588002$,_SYSSMU51_201410034$,_SYSSMU58_3524391680$,_SYSSMU59_773718799$,_SYSSMU60_1941620517$,_SYSSMU61_1757677461$,_SYSSMU64_3091325918$,_SYSSMU65_2877150887$,_SYSSMU66_2848890605$)
關閉資料庫,以修改後的pfile 檔案進行啟動資料庫
startup pfile=/oracle/product/11.2.0/db_1/dbs/initETL.ora;
刪除舊的表空間及其的所有資料,成功!
drop tablespace undotbs1 including contents and datafiles;
至此,新的undo 表空間替換成功!資料庫正常執行!
注意 : 將引數檔案中新增的隱含引數註釋掉,重新啟動資料庫
1 、確認資料庫儲存存在故障後,最好不要再對資料庫進行讀寫或者啟停操作,避免發生資料檔案損壞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2887282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- 資料庫壞塊處理資料庫
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件
- 教你如何處理Oracle資料庫中的壞塊Oracle資料庫
- Oracle壞塊處理Oracle
- ORACLE 壞塊處理Oracle
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- [zt] 如何處理Oracle資料庫中的壞塊[final]Oracle資料庫
- 資料庫壞塊Corrupt block的處理方法資料庫BloC
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- Oracle 11.2.0.4.4 ADG 備庫資料檔案壞塊處理Oracle
- undo壞塊引起資料庫無法啟動資料庫
- ORACLE資料庫壞塊的處理 (通過re-create table方法)Oracle資料庫
- 一次使用BBED處理壞塊
- Oracle壞塊處理相關Oracle
- Oracle壞塊問題處理Oracle
- oracle corrupt block壞塊處理OracleBloC
- Oracle資料庫壞塊修復Oracle資料庫
- Oracle資料庫UNDO損壞後的恢復Oracle資料庫
- 一個簡單易用的資料庫壞塊處理方案資料庫
- Oracle資料庫出現ORA-19566 LOB壞塊的處理記錄Oracle資料庫
- 一次壞塊的處理過程(一)
- 一次壞塊的處理過程(二)
- 一次壞塊的處理過程 [轉]
- Oracle資料庫壞塊典型案例分析Oracle資料庫
- 跳過Oracle資料庫壞塊方法Oracle資料庫
- 【BLOCK】Oracle壞塊處理命令參考BloCOracle
- oracle壞塊模擬處理(筆記)Oracle筆記
- Oracle 壞塊處理三板斧Oracle
- Oracle壞塊修復處理實驗Oracle
- rootvg壞塊處理
- 處理塊損壞
- Oracle資料庫壞塊典型案例擴充Oracle資料庫
- Oracle___專題研究__資料庫壞塊Oracle資料庫
- oracle資料庫改壞spfile引數重啟處理方法Oracle資料庫
- ORA-01578(資料塊損壞)跳過壞塊處理辦法
- UNDO表空間損壞的處理
- 一次資料庫HANG處理資料庫