1. 程式人生 > >Oracle not available ORA-27101

Oracle not available ORA-27101

oracle資料庫由於伺服器異常重啟而宕機,重啟資料庫後,發現遠端連線無法連線

報錯如下:

ORA-01034 - Oracle not available

ORA-27101 - shared memory realm does not exist

以前遇到過類似的情況,多是由於之前oracle使用的共享記憶體沒有正常釋放,重啟過資料庫後即可。

這一次處理起來便是直接重啟資料庫,然後悲劇的發現還是報錯如上。

檢視監聽,發現也能捕獲到例項資訊,覺得很奇怪。

後來到$ORACLE_HOME/dbs下面檢視spfile檔案,發現竟然有兩個spfile,分別是例項名大寫和小寫,

當前預設是大寫的,於是export為小寫,發現數據庫依然能夠啟動起來,但是不是舊庫(該資料庫做過遷移)

於是有了頭緒,再次觀察lsnrctl status輸出資訊,發現確實有問題了,例項資訊捕獲到的是小寫的例項名。。。

我將listener.ora中的sid改成大寫後。。。應用重啟正常,遠端可以連線。

問題分析推理:

首先由於存在一個小寫的例項名,並且該例項是靜態註冊的方式,導致監聽啟動起來便能看到該小寫例項的資訊,從而誤導了我,以為監聽是正常的,捕獲到了資料庫的資訊。其實不然,另一方面,由於大寫的例項採用的是動態註冊的方式,oracle異常停掉後沒有找到該例項的註冊資訊。。