ORA-12537:TNS:鏈接關閉 -------數據庫最大鏈接數問題

技術分享

問題:html

我本身用PLSQL登陸實驗,我也登錄不了,但是讓同事實驗,他一會可以登陸,一會不可以登陸。應用仍是可以正常訪問,只是PLSQL登陸異常。linux

分析:sql

基於這種狀況去百度,有的說是配置文件有問題,有的說是鏈接數,由於個人配置文件沒有修改過,之前也是可以正常使用的,因此應該是連接數的問題。咱們公司一個主要業務系統,業務不少,可是以前使用都是好好的,想到昨天咱們組新搭建了一套環境,也是鏈接的同一個數據庫,那就肯定了,就是鏈接數的問題。數據庫

解決方法:服務器

 

參考:session

http://blog.sina.com.cn/s/blog_4df2251d0100hkzv.html --感謝這位網友,寫得很詳細併發

第一步,在cmd命令行,輸入sqlplus / as sysdbaoracle

第二步,性能

1. 查看processes和sessions參數spa

  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     50

  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     60

  shared_server_sessions               integer

  2. 修改processes和sessions值

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

  系統已更改。

  SQL> 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"

  shutdown immediate;

  startup mount;

  alter database open;

增長最大鏈接數有什麼影響:

通常來講實際鏈接數的增加纔會對增長系統資源的消耗,修改最大鏈接數只是容許數據庫的鏈接數限制增長了,須要密切關注鏈接數上升主機方面的性能cpu,內存的使用率,若是主機負載太高,就得考慮硬件擴容,若是主機資源仍然較閒,則代表所設置的數據庫鏈接數在此主機資源是能夠匹配的。

相關文章
相關標籤/搜索