ORACLE ORA-12519, TNS:no appropriate service handler found

背景:在日常运维工作中,各种各样的问题,真是千奇百怪。今天遇到这个问题了,查了一些解决办法,做了一个汇总,今天就分享一下。

错误:ORA-12519, TNS:no appropriate service handler found

[[email protected] ~]$ oerr ora 12519
12519, 00000, "TNS:no appropriate service handler found"
// *Cause: The listener could not find any available service handlers that
// are appropriate for the client connection.
// *Action: Run "lsnrctl services" to ensure that the instance(s) have
// registered with the listener, and are accepting connections.

 

主要从两个方面来考虑这件事,从程序方面来看:

1.进行数据库连接操作后未释放连接;

2.若使用了数据库连接池,则考虑连接池的超时设置。

从数据库本身来看:

1.可以增加数据库的最大连接数;

2.可以定时清理数据库中INACTIVE的会话。

对运维人员来说,只能从数据库本身入手:

select count(*) from v$process;   --目前的会话
select value from v$parameter where name = ‘processes‘ ;  --最大会话   一般生产环境processes参数设置为2000,如果应用特别多的,可以设置为3000.

查看从哪里连接的Oracle链接数:
select  b.MACHINE, b.PROGRAM , count(*) from v$process a, v$session b where a.ADDR = b.PADDR and  b.USERNAME is not null   group by  b.MACHINE  , b.PROGRAM order by count(*) desc;
 
 
定时清理INACTIVE会话需要创建一个存储过程找出超过2小时(根据需求设定)的会话,然后断开会话,具体如下:
CREATE OR REPLACE PROCEDURE DB_KILL_IDLE_CLIENTS AUTHID DEFINER AS--AUTHID DEFINER可省略。
  job_no       number := 0;
  num_of_kills number := 0;
BEGIN

  FOR REC IN (SELECT SID, SERIAL#, INST_ID, MODULE, STATUS
                FROM gv$session S
               WHERE S.USERNAME IS NOT NULL
                 AND S.LAST_CALL_ET >= 2 * 60 * 60
                 AND S.STATUS = ‘INACTIVE‘
               ORDER BY INST_ID ASC) LOOP
    DBMS_OUTPUT.PUT(‘LOCAL SID ‘ || rec.sid || ‘(‘ || rec.module || ‘)‘);
    execute immediate ‘alter system disconnect session ‘‘‘ || rec.sid || ‘, ‘ ||
                      rec.serial# || ‘‘‘immediate‘;
   
    DBMS_OUTPUT.PUT_LINE(‘. killed locally ‘ || job_no);
    num_of_kills := num_of_kills + 1;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(‘Number of killed system sessions: ‘ || num_of_kills);
END DB_KILL_IDLE_CLIENTS;
创建定时任务执行这个存储过程:

begin
  sys.dbms_job.submit(job       => :job,
                      what      => ‘SYS.DB_KILL_IDLE_CLIENTS;‘,
                      next_date => to_date(‘25-05-2018 17:00:00‘,
                                           ‘dd-mm-yyyy hh24:mi:ss‘),
                      interval  => ‘TRUNC(sysdate,‘‘hh‘‘) + 1/(24)‘);
  commit;
end;
注意以sys角色登录操作
————————————————

--单次使用:
SELECT ‘alter system disconnect session ‘‘‘ || sid || ‘,‘ || serial# ||
       ‘‘‘ immediate;‘
  FROM (SELECT SID, SERIAL#, INST_ID, MODULE, STATUS
          FROM gv$session S
         WHERE S.USERNAME IS NOT NULL
           AND S.LAST_CALL_ET >= 2 * 60 * 60
           AND S.STATUS = ‘INACTIVE‘
         ORDER BY INST_ID ASC)
         
         查出来的语句执行即可。
————————————————
版权声明:本文为CSDN博主「京斗码农」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42163563/java/article/details/90294916



原文地址:https://www.cnblogs.com/xiaohuizhenyoucai/p/12657745.html

时间: 2024-10-08 13:24:07

ORACLE ORA-12519, TNS:no appropriate service handler found的相关文章

Oracle 监控:ORA-12519TNS:no appropriate service handler found 解决

在程序的运行中,有时候数据库会断开连接,然后报下面错误: ORA-12519: TNS:no appropriate service handler found  可用的服务处理程序没有找到. 1. 简单解释下什么是service handler,以及service handler是什么时候被调用的? 在客户端和数据库oracle进行通信时,oracle需要进行完成一个过程"服务注册 (service registration)" . 服务注册是将数据库提供的服务名称,实例名,可用服务

ORA-12519: TNS:no appropriate service handler found 解决

最近做项目遇到一个连接Oracle的问题,报错如题:ORA-12519: TNS:no appropriate service handler found,应该是项目中的有些算法把所有连接都占用了,没办法只能增大数据的连接,具体做法如下: [plain] view plain copy select count(*) from v$process --当前的连接数 select value from v$parameter where name = 'processes' --数据库允许的最大连

ORA-12519,TNS:no appropriate service handler found的问题 超过连接数

http://www.2cto.com/database/201205/133542.html ORA-12519,TNS:no appropriate service handler found的问题 Java代码 ORA-12519, TNS:no appropriate service handler found The Connection descriptor used by the client was: 110.16.1.17:1521:orcl    www.2cto.com 解

ORA-12519: TNS:no appropriate service handler foun

ORA-12519: TNS:no appropriate service handler found 解决 有时候连得上数据库,有时候又连不上. 可能是数据库上当前的连接数目已经超过了它能够处理的最大值. select count(*) from v$process --当前的连接数select value from v$parameter where name = 'processes' --数据库允许的最大连接数 修改最大连接数:alter system set processes = 3

ORA-12519: TNS:no appropriate service handler found 解决(转)

可能是数据库上当前的连接数目已经超过了它能够处理的最大值. select count(*) from v$process --当前的连接数 select value from v$parameter where name = 'processes' --数据库允许的最大连接数 修改最大连接数: alter system set processes = 300 scope = spfile; 重启数据库: shutdown immediate; startup; --查看当前有哪些用户正在使用数据

ORA-12519, TNS:no appropriate service handler found

解决问题: 有时候连不上数据库是因为连接数到了极限了. select count(*) from v$process --当前的连接数 130 select value from v$parameter where name = 'processes' --数据库允许的最大连接数,默认150 --修改最大连接数: alter system set processes = 300 scope = spfile; --重启数据库: shutdown immediate; startup; --查看当

no appropriate service handler found The Connection descriptor used by the client was: localhost:1521:myorcl

参考网址:http://www.2cto.com/database/201205/133542.html http://www.cnblogs.com/kerrycode/p/4244493.html http://itlab.idcquan.com/Oracle/induction/887141.html 异常描述:在项目中执行一次查询操作出现. 具体异常信息: 2015-10-09 15:37:44 DEBUG (com.mchange.v2.resourcepool.BasicResour

Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法

错误描述 操作系统是Win7 x64,Oracle服务端是Oracle11g x64,客户端是Oracle10gR2 x86. 使用PL-SQL Developer连接正常 使用系统ODBC连接正常.这里要注意的是,64位系统默认启动的是64位ODBC数据源管理器,默认指向的是服务端连接,所以需要为Oracle服务端也配置TNS Service Name,否则同样会连接报错.PowerDesigner默认启动的是32位的ODBC数据源管理器,程序路径为“%SystemRoot%\SysWOW64

Oracle ORA-12541:TNS:无监听程序

Oracle ORA-12541:TNS:无监听程序 今天使用Oracle数据库,使用可视化连接工具连接测试环境的数据库时提示无监听程序,最后在老师帮助下终于搞定了!︿( ̄︶ ̄)︿ 问题: ORA-12541:TNS:无监听程序 解决方法: 检查监听程序是否能够正常启动,使用『windows+R』输入cmd, 在命令行中输入lsnrctl start来检查监听是否正常运行,如果正常则会提示: TNS-01106: 使用名称LISTENER的监听程序已经启动 如果没有运行,可以使用 lsnrctl