2014-06-30 41 views
0

我正在獲取Oracle最大進程超出的錯誤。要增加允許的最大進程我的身份登錄SYSDBA:爲什麼重新啓動數據庫時Oracle不會重置進程

$ sqlplus/as sysdba 

我試試,看工藝參數:

sql> show parameter processes 
ERROR: 
ORA-01012: not logged on 

我假定SQLPLUS無法登錄由於被超過流程。

我嘗試關閉實例,這樣的過程將被關閉:

SQL> shutdown immediate 
ORA-24324: service handle not initialized 
ORA-24323: value not allowed 
ORA-00020: maximum number of processes (%s) exceeded 

我試圖殺死Oracle服務,即應終止這些進程:

$ sudo service oracle-xe restart 
[sudo] password for kshitiz: 
Shutting down Oracle Database 10g Express Edition Instance. 
Stopping Oracle Net Listener. 

Starting Oracle Database 10g Express Edition Instance. 

我再次登錄以SYSDBA但它給出了同樣的錯誤。

如何終止進程以便數據庫可以再次管理?我該如何診斷出現這種錯誤的原因(哪個應用程序負責佔用數據庫)?我是Oracle 10g expressUbuntu 13.10

+1

如果連接太多,應關閉這些連接,而不是重新啓動Oracle。 –

+0

不應該重新啓動Oracle終止連接? –

+1

是的,但你應該修復問題的*原因*,而不是症狀 –

回答

0

解決方法是增加允許的最大進程數。但問題是,在這種狀態下沒有辦法做到這一點,因爲數據庫不會採取任何命令。即使增加過程參數的命令也會導致最大過程超出錯誤。

殺屬於oracle用戶所有進程:

$ sudo su 
$ su oracle 
$ kill -9 -1 

檢查所有過程被殺害:

$ ps -ef | grep oracle 

如果使用kill -9 PID沒有殺死他們。現在,連接到數據庫sysdba

$ su oracle 
$ sqlplus/as sysdba 

關閉數據庫(1.關閉即時或許根本無法工作,並給予同樣的錯誤ORA-01012 2.由於進程被終止,是不是該數據庫已經關機?這就是我想,但它似乎保持最後狀態或某事的記錄這是不明確的,直到你運行下面的命令):

SQL> shutdown abort 

現在重提這個話題:

SQL> startup 

修改過程參數,以防止此問題重複出現:

SQL> select count(*) from v$process; 
SQL> alter system set processes=300 scope=spfile; 

重新啓動數據庫:

SQL> shutdown immediate 
SQL> startup 

檢查最大進程增加了:

SQL> show parameter processes 

編輯: 這一切對我的申請沒有連接到DB一些奇怪的原因後,儘管SQL加上正在就好了。所以作爲最後一步,我重新啓動了oracle服務:

$ sudo service oracle-xe restart 

這讓所有的東西都爲我工作。

+0

我怎麼能在Windows上做到這一點?特別是Windows 8 ... – Benas

+0

@Benas你必須將這些命令翻譯成Windows等價物或谷歌它。另一位用戶可能正在使用Solaris或HP-UX。我無法爲每個平臺提供指南。 –

相關問題