ORA-12537:TNS:连接关闭   -------数据库最大连接数问题

时间:2016-06-10 15:06:09   收藏:0   阅读:21624

端午节来加班,本来以为系统会运行正常,没想到数据库出现问题。

技术分享

问题:

我自己用PLSQL登录实验,我也登陆不了,可是让同事实验,他一会能够登录,一会不能够登录。应用还是能够正常访问,只是PLSQL登录异常。

分析:

基于这种情况去百度,有的说是配置文件有问题,有的说是连接数,因为我的配置文件没有修改过,以前也是能够正常使用的,所以应该是链接数的问题。我们公司一个主要业务系统,业务很多,但是之前使用都是好好的,想到昨天我们组新搭建了一套环境,也是连接的同一个数据库,那就确定了,就是链接数的问题。

解决方法:


参考:

http://blog.sina.com.cn/s/blog_4df2251d0100hkzv.html --感谢这位网友,写得很详细

第一步,在cmd命令行,输入sqlplus / as sysdba

第二步,

1. 查看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     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,内存的使用率,如果主机负载过高,就得考虑硬件扩容,如果主机资源仍然较闲,则表明所设置的数据库连接数在此主机资源是可以匹配的。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!