一次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資料庫出現ORA-19566 LOB壞塊的處理記錄Oracle資料庫
- Oracle資料庫壞塊典型案例分析Oracle資料庫
- 【BLOCK】Oracle壞塊處理命令參考BloCOracle
- 一個簡單易用的資料庫壞塊處理方案資料庫
- Oracle資料庫壞塊典型案例擴充Oracle資料庫
- Oracle 無備份情況下undo檔案損壞處理Oracle
- 一次壞塊的處理過程(一)
- 一次壞塊的處理過程(二)
- MySQL資料庫InnoDB壞頁處理修復MySql資料庫
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- oracle中undo表空間丟失處理方法Oracle
- oracle 普通表空間資料檔案壞塊Oracle
- oracle壞塊(二)Oracle
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- MySQL資料庫INNODB表損壞修復處理過程分享MySql資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- 伺服器Oracle資料庫損壞修復伺服器Oracle資料庫
- oracle遊標批次處理資料Oracle
- 【LINUX】Oracle資料庫 linux磁碟頭資料損壞修復LinuxOracle資料庫
- 記一次 MySQL 資料庫單表恢復事故處理MySql資料庫
- 18_深入解析Oracle undo原理(2)_undo表空間使用率100%問題處理Oracle
- 學習這篇Oracle資料庫檔案壞塊損壞的恢復方法,擴充你的知識面Oracle資料庫
- [20190718]12c壞塊處理一例.txt
- 銀河麒麟系統安裝ORACLE資料庫問題處理Oracle資料庫
- 資料庫故障處理優質文章彙總(含Oracle、MySQL、MogDB等)資料庫OracleMySql
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- Oracle資料塊格式Oracle
- Oracle日常問題-壞塊修復Oracle
- truncate操作消除ORACLE SEG壞塊解析Oracle
- Oracle 記一次ORA-00001問題處理Oracle
- Python資料處理(二):處理 Excel 資料PythonExcel
- Oracle Redo and UndoOracle Redo
- OracleDG資料庫gap處理一列Oracle資料庫
- [python] 基於Tablib庫處理表格資料Python
- 生信公共資料庫下載處理資料庫