ORA-12516錯誤分析與解決
在使用swingbench對Oracle資料庫進行壓力測試時,出現ORA-12516錯誤。這個報錯一般是因為oracle的會話數超出了限制,一般都是由於多次connect建立多個串連會話引起的,最後導致oracle無法響應新的請求,從而出現ora-12516錯誤。
解決該問題的思路和方法:
首先查看一下資料庫現有的進程數,是否已經達到參數processes的大小。
select count(*) from v$process;
獲得資料庫當前的進程數。
select value from v$parameter where name = 'processes';
獲得進程數的上限。
查看當前sessions值,發現session數和processes參數的值已經非常接近
SQL> conn / as sysdba
已串連。
SQL> select count(*) from v$session;
170
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0l
icense_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 175
shared_server_sessions integer
然後修改processes和sessions值
SQL> alter system set processes=500 scope=spfile;
系統已更改。
SQL> alter system set sessions=555 scope=spfile;
系統已更改。
註:只要會話串連數超過上面的process數150或者sessions數170,再來一個的會話進程,就會產生12516錯誤。因此可以修改一下該值:
sessions=1.1*processes+5;//這個是sessions值和processes值的關係,最好按照這樣做,
因此如果要將processes數設定為500,則sessions數必須為1.1*500+5=555
查看processes和sessions參數,但更改並未生效
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
SQL> show parameter sessions
NAME TYPE VALUE
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 170
shared_server_sessions integer
重啟資料庫,使更改生效
SQL> shutdown immediate
SQL> startup
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 500
SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 555
shared_server_sessions integer
Oracle 11g 在RedHat Linux 5.8_x64平台的安裝手冊
Linux-6-64下安裝Oracle 12C筆記
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2