今天,發現SAP系統的oracle數據庫宕掉了。報錯ORA-10873,經過查證解決該問題。記錄一下,備忘。
一、問題
Oracle版本爲12.1.0.2.0,在啓動服務器後啓動數據庫startup,報錯ORA-10873。
二、查證
到SAP Support Portal上搜索 ORA 10873,收到一個note2501445 - error ORA-10873, ORA-01110 during starting up oracle
上面的描述與該問題症狀一致,建議轉到note4162 - Missing "end backup"中的Problem 2.
原因是
Reason and Prerequisites
- Forgotten or missing "end backup" after manual ONLINE DB backup or after a backup tool (for example, BRBACKUP) has crashed or
- DB crash or "shutdown abort" during an ONLINE backup after "alter tablespace <tspname> begin backup"
造成這一問題有2種可能:
- 手動在線備份數據庫時忘記或缺失了"end backup";
- 在數據庫在線備份的時候,數據庫崩潰或被強行關閉了;
顯然我們沒有手動操作,應該是在備份腳本運行的時候數據庫崩潰了。那麼按照解決方案搞一下。
三、解決問題
關閉數據庫,忽略報錯。打開數據庫到mount狀態,並檢查一下。
shutdown immediate;
startup mount;
select instance_name, status from v$instance;
select name, open_mode from v$database;
檢查一下是哪幾個數據文件還在backup mode狀態。雖然報錯是數據文件1,但是很可能有幾個數據文件在這個狀態而報錯只報第一個數據文件。果然,v$backup視圖裏面有3個數據文件是ACTIVE的。那麼,我們也就沒有必要一個一個來處理了,直接改一下數據庫的狀態吧。
select * from v$backup;
解決問題的關鍵步驟就是這行命令,把數據庫從backup的mode裏解救出來。
alter database end backup;
再檢查一下沒有數據文件在備份的狀態了,打開數據庫,問題解決