【Case】ORA-12519: TNS:no appropriate service handler found

dbasdk發表於2017-11-30
一、問題現象

今天有AP使用者反映,資料庫有時候連的上,有時候連不上,報如下的錯誤:

ORA-12519: TNS:no appropriate service handler found


二、原因解析

oracle@C01TEST03:/home/oracle>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.

第一個原因可能是Instance沒有註冊到Listener;

第二個原因可能是資料庫上當前的連線數目已經超過了它能夠處理的最大值。


三、解決方法

根據第二步,檢查兩個地方:

1、檢視Instance是否註冊到Listener

oracle@C01TEST03:/home/oracle>lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-NOV-2017 15:29:45

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=C01TEST03)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                25-AUG-2017 13:37:06
Uptime                    70 days 1 hr. 52 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/product/diag/tnslsnr/C01TEST03/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=C01TEST03)(PORT=1521)))
Services Summary...
Service "MTH" has 1 instance(s).
  Instance "MTH", status READY, has 1 handler(s) for this service...

確認到"MTH" Instance已經註冊到listener裡了;


2、資料庫上當前的連線數目已經超過了它能夠處理的最大值。

(1)檢視當前連線數

SQL> select count(*from v$process;

檢視資料庫允許最大的連線數

SQL> show parameter processes;


(2)適當加大processes的值

alter system set processes = 300 scope = spfile;


(3)重啟資料庫


(4)檢視當前有哪些使用者正在使用資料
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;


四、問題總結

   以上便是該問題的思考及處理方向。處理方法以第二種,修改引數processes的方法為主。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2148075/,如需轉載,請註明出處,否則將追究法律責任。

相關文章