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,内存的使用率,若是主机负载太高,就得考虑硬件扩容,若是主机资源仍然较闲,则代表所设置的数据库链接数在此主机资源是能够匹配的。

相关文章
相关标签/搜索