關於ORA-01012這個錯誤,惜分飛的博客ORA-01012: not logged on裡面已經做了一些介紹,原因就不多說了,看看他的描述說明:
現象說明:
1)終於發現了ORA-01012錯誤,期待了很久。發現只有當sys登錄系統,對數據庫進行查詢或者操作之時才會出現ORA-01012,其他用戶只要一登錄數據庫就會提示ORA-00020錯誤。
2)當process達到數據庫最大限時,sysdba登錄系統是也顯示不正常
2.1)當使用sqlplus “/ as sysdba”登錄時,缺少:
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 – Production
2.2)當使用conn / as sysdba登錄時,提示為:
Connected to an idle instance.
解決方法:
1:重啟監聽服務
1.1: 停止監聽服務,等數據庫訪問連接數下降用戶再登錄。
lsnrctl stop
1.2: sqlplus “/ as sysdba”登陸後,修改processes值。(這一步可用也可以不用)
方法雖好,但是在生產環境卻不方便使用,一來停止監聽服務會導致應用程序問題,用戶投訴,這個適合在晚上或維護時間處理。是治標治本的方法。
2: sqlplus “/ as sysdba”登陸後
shutdonwn abort
3: ps -ef|grep ora_dbw0_$Oracle_SID
kill -9 pid ;
startup --重啟數據庫
這個方法慎用,誰要是提倡使用,我保證不打死他……。我用過一次,提心吊膽的。不怕死的可以試試。
另外我在這篇文章ORA-12516:TNS:listener could not find available handler with matching protocol stack裡面也介紹過這種情況。
參考資料:
http://www.xifenfei.com/1351.html