Skip to content

ORA-12519, TNS:no appropriate service handler found

  • 完整错误信息

    tex
    Listener refused the connection with the following error:ORA-12519, TNS:no appropriate service handler found
  • 报错原因:主要是数据库连接不够用了,修改数据库允许的最大连接数即可

  • 解决方案

    sql
    -- 查询数据库当前允许的最大连接数
    SELECT value FROM v$parameter WHERE name = 'processes';
    
    -- 修改数据库允许的最大连接数
    ALTER system SET processes = 3000 scope = spfile; 
    
    -- 重启数据库,必须!!!重启数据库上面修改才会生效
  • 另外,如果想要查看谁占用了这些连接,可以通过查询 v$session 视图进行判断

    sql
    -- 查看当前所有非空用户会话的详细信息
    SELECT USERNAME, MACHINE, PROGRAM, LOGON_TIME, STATUS
    FROM v$session
    WHERE USERNAME IS NOT NULL
    ORDER BY LOGON_TIME DESC;
    • USERNAME:显示连接所使用的数据库用户名
    • MACHINE:显示连接是从哪台客户机发起的,如果大量的连接来自同一台机器,那问题很可能就出现在那台机器上的应用
    • PROGRAM:显示是哪个客户端程序(如 JDBC Thin Client, SQLPLUS.EXE, TOAD.exe)发起的连接
    • LOGON_TIME:登录时间,如果发现大量连接在同一时间段建立且从未释放,是典型的连接泄漏特征
    • STATUS:连接状态,查询出来的结果中 INACTIVE 状态本身是正常的,表示连接空闲,异常的关键在于数量和持续时间

MIT版权,未经许可禁止任何形式的转载