【CONNECT】ORA-00020錯誤模擬及處理方法
當資料庫的連線數達到上限後,後續的登陸操作都會報ORA-00020錯誤,這裡給出ORA-00020錯誤的模擬及處理方法。
1.調整資料庫的processes引數到25
1)由於processes引數是靜態引數,調整時需要使用“scope=spfile”選項進行調整。
sys@ora11g> alter system set processes=25 scope=spfile;
System altered.
2)重啟資料庫使引數調整生效
sys@ora11g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora11g> startup;
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1337720 bytes
Variable Size 398460552 bytes
Database Buffers 130023424 bytes
Redo Buffers 5840896 bytes
Database mounted.
Database opened.
3)確認調整結果
sys@ora11g> show parameter processes
NAMETYPE VALUE
--------------------------------- -------------
aq_tm_processesinteger 0
db_writer_processesinteger 1
gcs_server_processesinteger 0
global_txn_processesinteger 1
job_queue_processesinteger 1000
log_archive_max_processesinteger 4
processesinteger 25
此時資料庫的processes引數已經成功調整為25。
2.檢視當前資料庫程式數
sys@ora11g> select count(*) from v$process;
COUNT(*)
----------
23
此時程式數是23。25是程式數的上限,因此次資料庫例項還可以支援一個程式連線。
3.開啟新視窗連線資料庫例項
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:25:30 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@ora11g> select count(*) from v$process;
COUNT(*)
----------
24
此時顯示成功連線到資料庫例項,程式數顯示為24。
4.再次開啟新視窗建立資料庫連線
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:26:37 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-00020: maximum number of processes (25) exceeded
Enter user-name:
ORA-00020錯誤已經成功模擬出來,原因是此時已經達到資料庫程式數的上限25。注意25表示最大的程式數,即當程式數為25時即會報錯,資料庫例項最多支援24個有效的程式。
5.處理ORA-00020錯誤
既然是由於程式數過多到時的報錯,因此我們最直接的處理方法便是手工殺掉無用的使用者連線。
1)檢視資料庫後臺程式資訊
ora10g@secdb /home/oracle$ ps -ef | grep ora11g
oracle 22882 1 0 21:24 ? 00:00:00 ora_pmon_ora11g
oracle 22884 1 0 21:24 ? 00:00:00 ora_vktm_ora11g
oracle 22888 1 0 21:24 ? 00:00:00 ora_gen0_ora11g
oracle 22890 1 0 21:24 ? 00:00:00 ora_diag_ora11g
oracle 22892 1 0 21:24 ? 00:00:00 ora_dbrm_ora11g
oracle 22894 1 0 21:24 ? 00:00:00 ora_psp0_ora11g
oracle 22896 1 0 21:24 ? 00:00:00 ora_dia0_ora11g
oracle 22898 1 0 21:24 ? 00:00:00 ora_mman_ora11g
oracle 22900 1 0 21:24 ? 00:00:00 ora_dbw0_ora11g
oracle 22902 1 0 21:24 ? 00:00:00 ora_lgwr_ora11g
oracle 22904 1 0 21:24 ? 00:00:00 ora_ckpt_ora11g
oracle 22906 1 0 21:24 ? 00:00:00 ora_smon_ora11g
oracle 22908 1 0 21:24 ? 00:00:00 ora_reco_ora11g
oracle 22910 1 0 21:24 ? 00:00:00 ora_mmon_ora11g
oracle 22912 1 0 21:24 ? 00:00:00 ora_mmnl_ora11g
oracle 22914 1 0 21:24 ? 00:00:00 ora_d000_ora11g
oracle 22916 1 0 21:24 ? 00:00:00 ora_s000_ora11g
oracle 22945 22103 0 21:24 ? 00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 22947 1 0 21:24 ? 00:00:00 ora_qmnc_ora11g
oracle 22961 1 0 21:24 ? 00:00:00 ora_cjq0_ora11g
oracle 22972 1 0 21:25 ? 00:00:00 ora_q000_ora11g
oracle 22974 1 0 21:25 ? 00:00:00 ora_q001_ora11g
oracle 22993 22992 0 21:25 ? 00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 23106 23066 0 21:27 pts/6 00:00:00 grep --color ora11g
這裡顯示出兩類程式,一類是Oracle資料庫的後臺程式,另外一類是使用者連線程式。
我們可以考慮講使用者連線程式殺掉,注意Oracle資料庫後臺程式不可輕易手工殺掉。
2)殺掉使用者連線程式22945
ora10g@secdb /home/oracle$ kill -9 22945
3)嘗試重新連線資料庫
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:28:56 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@ora11g>
連線成功。到此ORA-00020錯誤便處理完畢。
6.小結
本文給出了ORA-00020錯誤的模擬以及簡單的處理方法。對於生產環境最有效的避免發生ORA-00020錯誤的方法便是,上線前充分評估系統需要的最大程式數,一次性設定充分。這樣便可以從根本上防止ORA-00020錯誤的發生。
Good luck.
secooler
11.12.12
-- The End --
1.調整資料庫的processes引數到25
1)由於processes引數是靜態引數,調整時需要使用“scope=spfile”選項進行調整。
sys@ora11g> alter system set processes=25 scope=spfile;
System altered.
2)重啟資料庫使引數調整生效
sys@ora11g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora11g> startup;
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1337720 bytes
Variable Size 398460552 bytes
Database Buffers 130023424 bytes
Redo Buffers 5840896 bytes
Database mounted.
Database opened.
3)確認調整結果
sys@ora11g> show parameter processes
NAMETYPE VALUE
--------------------------------- -------------
aq_tm_processesinteger 0
db_writer_processesinteger 1
gcs_server_processesinteger 0
global_txn_processesinteger 1
job_queue_processesinteger 1000
log_archive_max_processesinteger 4
processesinteger 25
此時資料庫的processes引數已經成功調整為25。
2.檢視當前資料庫程式數
sys@ora11g> select count(*) from v$process;
COUNT(*)
----------
23
此時程式數是23。25是程式數的上限,因此次資料庫例項還可以支援一個程式連線。
3.開啟新視窗連線資料庫例項
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:25:30 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@ora11g> select count(*) from v$process;
COUNT(*)
----------
24
此時顯示成功連線到資料庫例項,程式數顯示為24。
4.再次開啟新視窗建立資料庫連線
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:26:37 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-00020: maximum number of processes (25) exceeded
Enter user-name:
ORA-00020錯誤已經成功模擬出來,原因是此時已經達到資料庫程式數的上限25。注意25表示最大的程式數,即當程式數為25時即會報錯,資料庫例項最多支援24個有效的程式。
5.處理ORA-00020錯誤
既然是由於程式數過多到時的報錯,因此我們最直接的處理方法便是手工殺掉無用的使用者連線。
1)檢視資料庫後臺程式資訊
ora10g@secdb /home/oracle$ ps -ef | grep ora11g
oracle 22882 1 0 21:24 ? 00:00:00 ora_pmon_ora11g
oracle 22884 1 0 21:24 ? 00:00:00 ora_vktm_ora11g
oracle 22888 1 0 21:24 ? 00:00:00 ora_gen0_ora11g
oracle 22890 1 0 21:24 ? 00:00:00 ora_diag_ora11g
oracle 22892 1 0 21:24 ? 00:00:00 ora_dbrm_ora11g
oracle 22894 1 0 21:24 ? 00:00:00 ora_psp0_ora11g
oracle 22896 1 0 21:24 ? 00:00:00 ora_dia0_ora11g
oracle 22898 1 0 21:24 ? 00:00:00 ora_mman_ora11g
oracle 22900 1 0 21:24 ? 00:00:00 ora_dbw0_ora11g
oracle 22902 1 0 21:24 ? 00:00:00 ora_lgwr_ora11g
oracle 22904 1 0 21:24 ? 00:00:00 ora_ckpt_ora11g
oracle 22906 1 0 21:24 ? 00:00:00 ora_smon_ora11g
oracle 22908 1 0 21:24 ? 00:00:00 ora_reco_ora11g
oracle 22910 1 0 21:24 ? 00:00:00 ora_mmon_ora11g
oracle 22912 1 0 21:24 ? 00:00:00 ora_mmnl_ora11g
oracle 22914 1 0 21:24 ? 00:00:00 ora_d000_ora11g
oracle 22916 1 0 21:24 ? 00:00:00 ora_s000_ora11g
oracle 22945 22103 0 21:24 ? 00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 22947 1 0 21:24 ? 00:00:00 ora_qmnc_ora11g
oracle 22961 1 0 21:24 ? 00:00:00 ora_cjq0_ora11g
oracle 22972 1 0 21:25 ? 00:00:00 ora_q000_ora11g
oracle 22974 1 0 21:25 ? 00:00:00 ora_q001_ora11g
oracle 22993 22992 0 21:25 ? 00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 23106 23066 0 21:27 pts/6 00:00:00 grep --color ora11g
這裡顯示出兩類程式,一類是Oracle資料庫的後臺程式,另外一類是使用者連線程式。
我們可以考慮講使用者連線程式殺掉,注意Oracle資料庫後臺程式不可輕易手工殺掉。
2)殺掉使用者連線程式22945
ora10g@secdb /home/oracle$ kill -9 22945
3)嘗試重新連線資料庫
ora11g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 12 21:28:56 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@ora11g>
連線成功。到此ORA-00020錯誤便處理完畢。
6.小結
本文給出了ORA-00020錯誤的模擬以及簡單的處理方法。對於生產環境最有效的避免發生ORA-00020錯誤的方法便是,上線前充分評估系統需要的最大程式數,一次性設定充分。這樣便可以從根本上防止ORA-00020錯誤的發生。
Good luck.
secooler
11.12.12
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-713198/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【CONNECT】ORA-00020錯誤模擬及處理方法實驗
- Ora-01555錯誤的模擬及處理
- Host is not allowed to connect to this MySQL server 錯誤的處理方法MySqlServer
- npm 安裝錯誤及處理方法NPM
- hadoop常見錯誤及處理方法Hadoop
- 【實驗】【LOCK】“鎖等待”模擬、診斷及處理方法
- ORA-32701錯誤原因分析及處理方法
- namespace mismatch require錯誤處理方法namespaceUI
- [轉]ORA-00020處理思路及防範
- 錯誤處理
- php錯誤與異常處理方法PHP
- ORA-00257: archiver error. Connect internal only, until freed 錯誤的處理方法HiveError
- Oracle RAC 錯誤記錄以及處理方法Oracle
- PHP 錯誤處理PHP
- php錯誤處理PHP
- Go 錯誤處理Go
- Swift錯誤處理Swift
- Zabbix錯誤處理
- mysqldump錯誤處理MySql
- 遠端連線錯誤程式碼及處理
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- async/await 優雅的錯誤處理方法AI
- Windows ORA-12560錯誤處理方法Windows
- ORA-00020:maximum number of processes (500) exceeded 錯誤解決方法
- 【UNION】ORA-01790錯誤模擬及分析一例
- PHP錯誤處理和異常處理PHP
- go的錯誤處理Go
- Python錯誤處理Python
- ORA-600[kqlnrc_1]錯誤分析及處理
- cursor: pin S模擬與處理
- mysql多源複製跳過錯誤處理方法MySql
- SQL Server 連線常見錯誤及其處理方法SQLServer
- Android - Unparsed aapt error(s)錯誤的處理方法AndroidAPTError
- 收縮臨時表空間收縮方法及ORA-03297錯誤處理
- thinkphp原始碼分析(四)—錯誤及異常處理篇PHP原始碼
- Oracle_CDC整理3-參考及錯誤處理Oracle
- 異常錯誤資訊處理
- PHP 核心特性 - 錯誤處理PHP