zoukankan      html  css  js  c++  java
  • ORA-12537:TNS:连接关闭 -------数据库最大连接数问题

    技术分享

    问题:

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

  • 相关阅读:
    .net 平台 统计图表展示控件fusioncharts
    sql 查分数段人数
    小程序开发之填坑之路
    提高网站性能
    javascript History对象详解
    vue的双向数据绑定
    静态文件对加快文件加载速度的影响
    JavaScript代码异常监控
    BEM命名规则
    浏览器缓存
  • 原文地址:https://www.cnblogs.com/lcword/p/8231881.html
Copyright © 2011-2022 走看看