熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle連接數太多報錯-ORA-12516錯誤

2013-11-13 16:02:49  來源: Oracle 

  系統上線一下子有幾百人用數據庫出現異常

  ORA: TNS: 監聽程序找不到符合協議堆棧要求的可用處理程

  一開始以為數據庫出了問題呢

  使用sqlplus連接以後查看當前會話數processes和sessions值發現session數和個參數的值已經非常逼近

  Sql代碼

  SQL> select count(*) from v$session;

  COUNT(*)

   

  

  SQL> show parameter processes

  NAME                                 TYPE        VALUE

  db_writer_processes                  integer    

  gcs_server_processes                 integer    

  job_queue_processes                  integer    

  log_archive_max_processes            integer    

  processes                            integer    

  

  SQL> show parameter sessions

  NAME                                 TYPE        VALUE

  java_soft_sessionspace_limit         integer     l

  icense_max_sessions                 integer    

  license_sessions_warning             integer    

  logmnr_max_persistent_sessions       integer    

  sessions                             integer    

  shared_server_sessions               integer

  修改processes和sessions值

  Sql代碼

  SQL> alter system set processes= scope=spfile;

  系統已更改

  SQL> alter system set sessions= scope=spfile;

  系統已更改

  查看processes和sessions參數但更改並未生效

  Sql代碼

  SQL> show parameter processes

  NAME                                 TYPE        VALUE

  db_writer_processes                  integer    

  gcs_server_processes                 integer    

  job_queue_processes                  integer    

  log_archive_max_processes            integer    

  processes                            integer    

  SQL> show parameter sessions

  NAME                                 TYPE        VALUE

  license_max_sessions                 integer    

  license_sessions_warning             integer    

  logmnr_max_persistent_sessions       integer    

  sessions                             integer    

  shared_server_sessions               integer

  重啟數據庫使更改生效

  Sql代碼

  SQL> shutdown

  SQL> startup

  SQL> show parameter processes

  NAME                                 TYPE        VALUE

  db_writer_processes                  integer    

  gcs_server_processes                 integer    

  job_queue_processes                  integer    

  log_archive_max_processes            integer    

  processes                            integer    

  SQL> show parameter sessions

  NAME                                 TYPE        VALUE

  java_soft_sessionspace_limit         integer    

  license_max_sessions                 integer    

  license_sessions_warning             integer    

  logmnr_max_persistent_sessions       integer    

  sessions                             integer    

  shared_server_sessions               integer

  其他

  ORACLE的連接數(sessions)與其參數文件中的進程數(process)有關它們的關系如下

  sessions=(*process+)

  但是我們增加process數時往往數據庫不能啟動了這因為我們還漏調了一個unix系統參數它是/etc/proc/kernel 中semmns這是unix系統的信號量參數每個process會占用一個信號量semmns調整後需要重新啟動unix操作系統參數才能生效不過它的大小會受制於硬件的內存或ORACLE SGA范圍可從——不等

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

  processes=數據庫參數processes的值  instance_processes=(smonpmondbwrlgwrarch)

  system=系統所占用信號量系統所占用信號量可用下列命令查出

  #ipcs s

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

  其它一些跟連接有關的參數如 licence_max_sessions licence_sessions_warning 等默認設置都為零也就是沒有限制我們可以放心大膽地使用數據庫了


From:http://tw.wingwit.com/Article/program/Oracle/201311/17721.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.