一:情境描述
資料庫版本:11.2.0.1 64bit active dataguard
作業系統版本:centos 5.8 64bit
早上資料庫例行檢查,發現undo資料表空間資料檔案太大,查詢了最大的block後,發現實際只使用到幾百兆。於是想當然alter database datafile 'xxxx' resize 3G;萬事ok!在這之前,遇到這種情況,也都是這樣處理,均未出現過問題!個人不太喜歡建立undo資料表空間然後改預設undo資料表空間的做法。
二:問題出現
沒過多久,手機收到監控警示資訊,從庫從read only with apply狀態直接變成read only狀態,mrp進程死掉了!alert日誌警示如下:
Errors in file /u01/app/oracle/diag/rdbms/db2/xxxx/trace/xxxx_mrp0_7844.trc:ORA-00600: internal error code, arguments: [3020], [3], [10232], [12593144], [], [], [], [], [], [], [], []ORA-10567: Redo is inconsistent with data block (file# 3, block# 10232, file offset is 83820544 bytes)ORA-10564: tablespace UNDOTBS1ORA-01110: data file 3: '/u01/app/oracle/oradata/xxxx/undotbs01.dbf'ORA-10560: block type 'KTU SMU HEADER BLOCK'MRP0: Background Media Recovery process shutdown (xxxx)
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/22411Q301-0.jpg" title="1.jpg" />
三:問題分析
主從庫的db_lost_write_protect參數均設定為typical
SQL> show parameter protec;
NAME TYPE VALUE
------------------------------------ ----------- ----------
db_lost_write_protect string typical
猜想因為undo資料表空間資料檔案的收縮操作導致從庫的undo資料檔案丟失寫,不知道這算不算oracle bug!
四:問題處理
1:關閉從庫資料庫執行個體
2: 主庫上讓undo資料表空間進入熱備份狀態
alter tablespace undotbs01 begin backup;
3:利用操作scp命令複製資料檔案至從庫指定位置,原有檔案重新命名下
4:啟動從庫資料庫執行個體到read only狀態,開啟mrp進程,發現alert日誌無報錯資訊
5:主庫關閉undo資料表空間熱備份狀態
alter tablespace undotbs01 end backup;
6:刪除從庫原有的undo資料表空間資料檔案備份
本文出自 “斬月” 部落格,謝絕轉載!