天天看點

ORA-12516錯誤的處理

解決過程:

1、檢視目前會話數、processes和sessions值,發現session數和2個參數的值已經非常逼近

ORA-12516錯誤的處理
ORA-12516錯誤的處理

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 9 15:50:21 2006Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ORA-12516錯誤的處理
ORA-12516錯誤的處理

SQL> conn / as sysdba

ORA-12516錯誤的處理

已連接配接。SQL> select count(*) from v$session;

ORA-12516錯誤的處理

COUNT(*)----------     

ORA-12516錯誤的處理

  45

ORA-12516錯誤的處理
ORA-12516錯誤的處理

SQL> show parameter processes

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

db_writer_processes                  integer     1

ORA-12516錯誤的處理

gcs_server_processes                 integer     0

ORA-12516錯誤的處理

job_queue_processes                  integer     10

ORA-12516錯誤的處理

log_archive_max_processes            integer     2

ORA-12516錯誤的處理

processes                            integer     50

ORA-12516錯誤的處理
ORA-12516錯誤的處理

SQL> show parameter sessions

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

java_soft_sessionspace_limit         integer     0l

ORA-12516錯誤的處理

icense_max_sessions                 integer     0

ORA-12516錯誤的處理

license_sessions_warning             integer     0

ORA-12516錯誤的處理

logmnr_max_persistent_sessions       integer     1

ORA-12516錯誤的處理

sessions                             integer     60

ORA-12516錯誤的處理

shared_server_sessions               integer

ORA-12516錯誤的處理

2、修改processes和sessions值

ORA-12516錯誤的處理

SQL> alter system set processes=300 scope=spfile;

ORA-12516錯誤的處理

系統已更改。

ORA-12516錯誤的處理

SQL> alter system set sessions=335 scope=spfile;

ORA-12516錯誤的處理

系統已更改。  

3、檢視processes和sessions參數,但更改并未生效

ORA-12516錯誤的處理

SQL> show parameter processes

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

db_writer_processes                  integer     1

ORA-12516錯誤的處理

gcs_server_processes                 integer     0

ORA-12516錯誤的處理

job_queue_processes                  integer     10

ORA-12516錯誤的處理

log_archive_max_processes            integer     2

ORA-12516錯誤的處理

processes                            integer     50

ORA-12516錯誤的處理

SQL> show parameter sessions

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

license_max_sessions                 integer     0

ORA-12516錯誤的處理

license_sessions_warning             integer     0

ORA-12516錯誤的處理

logmnr_max_persistent_sessions       integer     1

ORA-12516錯誤的處理

sessions                             integer     60

ORA-12516錯誤的處理

shared_server_sessions               integer

 4、重新開機資料庫,使更改生效

ORA-12516錯誤的處理

SQL> shutdown

ORA-12516錯誤的處理

SQL> startup

ORA-12516錯誤的處理

SQL> show parameter processes

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

db_writer_processes                  integer     1

ORA-12516錯誤的處理

gcs_server_processes                 integer     0

ORA-12516錯誤的處理

job_queue_processes                  integer     10

ORA-12516錯誤的處理

log_archive_max_processes            integer     2

ORA-12516錯誤的處理

processes                            integer     300

ORA-12516錯誤的處理

SQL> show parameter sessions

ORA-12516錯誤的處理

NAME                                 TYPE        VALUE

ORA-12516錯誤的處理

java_soft_sessionspace_limit         integer     0

ORA-12516錯誤的處理

license_max_sessions                 integer     0

ORA-12516錯誤的處理

license_sessions_warning             integer     0

ORA-12516錯誤的處理

logmnr_max_persistent_sessions       integer     1

ORA-12516錯誤的處理

sessions                             integer     335

ORA-12516錯誤的處理

shared_server_sessions               integer

其它:

    ORACLE的連接配接數(sessions)與其參數檔案中的程序數(process)有關,它們的關系如下:

    sessions=(1.1*process+5)

     但是我們增加process數時,往往資料庫不能啟動了。這因為我們還漏調了一個unix系統參數:它是/etc/proc/kernel 中semmns,這是unix系統的信号量參數。每個process會占用一個信号量。semmns調整後,需要重新啟動unix作業系統,參數才能生效。不過它的大小會受制于硬體的記憶體或ORACLE SGA。範圍可從200——2000不等。

   semmns的計算公式為:   SEMMNS>processes+instance_processes+system

   processes=資料庫參數processes的值   instance_processes=5(smon,pmon,dbwr,lgwr,arch)

   system=系統所占用信号量。系統所占用信号量可用下列指令查出:

    #ipcs -s 

   其中列NSEMS顯示系統已占用信号量。

   其它一些跟連接配接有關的參數,如 licence_max_sessions, licence_sessions_warning 等預設設定都為零,也就是沒有限制。我們可以放心大膽地使用資料庫了。