oracle10g的12518和12560错误

各位高手。。。有人遇到过访问oracle10G的1521和8080都在listener.log里报出
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
错误么?
然后第三方软件或者web浏览器一直阻塞等待response。。。

http://forums.oracle.com/forums/thread.jspa?threadID=836918
这是oracle的官网...我找到了与我一样的问题...安全的...

各位。。。等大家有空帮帮我啊。。。我都泪奔好几天了。。。
能不能给我中文的答案啊。。。英文看不懂。。。用工具翻译过来也不准确。。。另外我到底该做些什么呢?

Troubleshooting Details

Section I: Steps to approach ORA-12518/TNS-12518 Error:

ORA-12518/TNS-12518 indicates a problem while listener hands off the client connection to the server process or dispatcher process.TNS-12518 is logged in the listener log. The client might receive ORA-12518 or some other disconnection errors like ORA-12537. Once TNS-12518 is noted in the listener log, follow the below steps to approach and resolve this error.

Let us have a small discussion about how actually database connections are made:

In Dedicated mode, database client contacts listener and supplies the SERVICE NAME of the database. Then listener spawns a dedicated server process and hands off the client connection to this dedicated server process. TNS-12518 indicates a problem while handing off the client connection to the server process.

In Shared Server mode, database client contacts listener and supplies the SERVICE NAME of the database. Then listener hands off the client connection to one of the dispatcher configured for that service. TNS-12518 indicates a problem while handing off the client connection to the dispatcher server process.

Though this error is logged in the listener log, the listener is just the messenger, ORA-12518/TNS-12518 is mostly related to RDBMS and OS resources.

Step 1. Is listener version compatible to the database

Check if you are using compatible listener version for your database version.

If the database is 8i then use 8i or 9i listeners only. 10g listeners are not compatible to work with 8i databases.
For 9i databases, 9i or 10g listeners can be used.
For 10g databases, only 10g listeners can be used.

The general rule is that use the higher version of the listener when there is a version mismatch between database and the listener.

Step 2. Gather more information from listener log

The first place you would look for the TNS-12518 error is the listener log. Usually the listener log would be located under $ORACLE_HOME/network/log directory. You can use 'lsnrctl status' command output to look for the location of the listener log file.
$lsnrctl status
- - -
- - -
Listener Parameter File /ora10g/home_ora10g/network/admin/listener.ora
Listener Log File /ora10g/home_ora10g/network/log/listener.log
- - -
- - -

listener log gives the complete error stack and the database service name to which the client tried to connect to.
19-SEP-2007 13:55:34 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=test.oracle.com)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.3)(PORT=36030)) * establish * test.oracle.com * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe

In the above example, listener log shows the complete error stack, the bottom error being 32 is the OS error. It also shows that the jdbc client from IP 10.10.10.3 has tried to connect to the database service 'test.oracle.com' and failed with the error 12518.

Look for the lowest error in the stack. That is the error we have to concentrate on and try to resolve it. In the above example, the lower error is 'Linux Error: 32: Broken pipe'.

Step 3. Is service handlers in blocked state

Check if the handlers are in blocked state. Check the output of the 'lsnrctl services'. Examine the status information under the database service name. From the listener log you would know which database service was affected by the 12518 error, now with the output of the 'lsnrctl services' under that service name gather more information.
Service "test.oracle.com" has 1 instance(s).
Instance "db10g", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:9 refused:0 state:ready
LOCAL SERVER
"D000" established:10 refused:0 current:0 max:972 state:ready
DISPATCHER <machine: oid.mohan.com, pid: 25908>
(ADDRESS=(PROTOCOL=tcp)(HOST=oid.mohan.com)(PORT=33487))

The highlighted state should be in 'ready' state for the connection to be successful. If the state is in 'blocked' then the connection are not possible. The state of a handler could be in blocked state in the following scenario:
i. The database parameter processes reached its value.
ii. The database is in the process of startup or shutting down.

In shared server mode, the number of dispatchers should be set according to the load that you expect. 'lsnrctl services' output shows the maximum number(max:997) of connections that the dispatcher would accept and the number connections refused (refused:0) by this dispatcher. If any connections refused by the dispatcher, then consider increasing the number of dispatchers.

If you are using PFILE edit init.ora and increase the dispatchers parameter. If you are using SPFILE you can dynamically increase the dispatchers parameter by the 'alter system set' command.
温馨提示:内容为网友见解,仅供参考
无其他回答

oracle10g的12518和12560错误
Section I: Steps to approach ORA-12518\/TNS-12518 Error:ORA-12518\/TNS-12518 indicates a problem while listener hands off the client connection to the server process or dispatcher process.TNS-12518 is logged in the listener log. The client might receive ORA-12518 or some other discon...

ORACLE11g The Network Adapter could not establish the connection相关...
TNS-12571: TNS: 包写入程序失败 TNS-12560: TNS: 协议适配器错误 TNS-00530: 协议适配器错误 64-bit Windows Error: 54: Unknown error <\/txt><\/msg>网上查了一下“TNS-12518: TNS: 监听程序无法分发客户机连接” ,根据提示查询了一下“process和session“这两个都够使用 process:38\/150 ; session:33\/...

...DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12518
<!--连接池中保留的最小连接数。--> <property name="minPoolSize"> <value>5<\/value> <\/property> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize"> <value>40<\/value> <\/property> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。...

相似回答