天天看點

ORA-12537:TNS:連接配接關閉 -------資料庫最大連接配接數問題

端午節來加班,本來以為系統會運作正常,沒想到資料庫出現問題。

<a href="http://s3.51cto.com/wyfs02/M00/82/8D/wKioL1daKZ3hg8__AAA2pZ_FyVY973.jpg-wh_500x0-wm_3-wmp_4-s_1492029469.jpg" target="_blank"></a>

問題:

我自己用PLSQL登入實驗,我也登陸不了,可是讓同僚實驗,他一會能夠登入,一會不能夠登入。應用還是能夠正常通路,隻是PLSQL登入異常。

分析:

基于這種情況去百度,有的說是配置檔案有問題,有的說是連接配接數,因為我的配置檔案沒有修改過,以前也是能夠正常使用的,是以應該是連結數的問題。我們公司一個主要業務系統,業務很多,但是之前使用都是好好的,想到昨天我們組新搭建了一套環境,也是連接配接的同一個資料庫,那就确定了,就是連結數的問題。

解決方法:

參考:

第一步,在cmd指令行,輸入sqlplus / as sysdba

第二步,

1. 檢視processes和sessions參數

  SQL&gt; 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     50

  SQL&gt; show parameter sessions

  license_max_sessions                 integer     0

  license_sessions_warning             integer     0

  logmnr_max_persistent_sessions       integer     1

  sessions                             integer     60

  shared_server_sessions               integer

  2. 修改processes和sessions值

  SQL&gt; alter system set processes=300 scope=spfile;

  系統已更改。

  SQL&gt; alter system set sessions=335 scope=spfile;

  3. 修改processes和sessions值必須重新開機oracle伺服器才能生效

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

  sessions=(1.1*process+5)

  摘(二)

  查詢資料庫目前程序的連接配接數:

  select count(*) from v$process; --資料庫中執行

    linux指令行執行

    ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|wc -l

    臨時取消一部分連接配接,不能做到徹底解決問題。

    ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

  檢視資料庫目前會話的連接配接數:

  elect count(*) from v$session;

  檢視資料庫的并發連接配接數:

  select count(*) from v$session where status='ACTIVE';

  檢視目前資料庫建立的會話情況:

  select sid,serial#,username,program,machine,status from v$session;

 查詢資料庫允許的最大連接配接數:

  select value from v$parameter where name = 'processes';

  或者:show parameter processes;

  修改資料庫允許的最大連接配接數:

  alter system set processes = 300 scope = spfile;

  (需要重新開機資料庫才能實作連接配接數的修改)

  重新開機資料庫:

  shutdown immediate;

  startup;

  檢視目前有哪些使用者正在使用資料:

  select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

  from v$session a,v$sqlarea b

  where a.sql_address = b.address

  order by cpu_time/executions desc;

  備注:UNIX 1個使用者session對應一個作業系統process,而Windows展現線上程。

  啟動oracle

  su - oracle

  sqlplus system/ as sysdba   //進入sql

  startup                                      //啟動資料庫

  lsnrctl start                               //啟動監聽

  sqlplus "/as sysdba"

  startup mount;

  alter database open;

增加最大連接配接數有什麼影響:

一般來說實際連接配接數的增長才會對增加系統資源的消耗,修改最大連接配接數隻是允許資料庫的連接配接數限制增加了,需要密切關注連接配接數上升主機方面的性能cpu,記憶體的使用率,如果主機負載過高,就得考慮硬體擴容,如果主機資源仍然較閑,則表明所設定的資料庫連接配接數在此主機資源是可以比對的。

本文轉自aaa超超aaa 51CTO部落格,原文連結:http://blog.51cto.com/10983441/1787740