最近遇到该问题 , 通过这个这个方法解决的, 特此记录一下
alter system set dispatchers =' (protocol=tcp)(dispatchers=40) (connections=500)' ;
local_listener 为空
下面是摘自 http://www.dba-oracle.com
Note: Starting in 11gR2, the listener log is not activated by default. You have to turn on listener logging: logging_listener_name=on
Oracle docs note this about ORA-12518:
ORA-12518: TNS:listener could not hand off client connection
Cause: The process of handing off a client connection to another process failed.
Action: Turn on listener tracing and re-execute the operation. Verify that the listener and database instance are properly configured for direct handoff. If problem persists, call Oracle Support.
ORA-12518 has been known to occur in Oracle Net Services version 9.2.0.5-10.2.0.1 in which attempting new connections on the database throw either ORA-12518 or TNS-12518. ORA-12518 appears in the listener log upon new user connection. Here is an example in an Oracle MOSC note of ORA-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
IBM/AIX RISC System/6000 Error: 32: Broken pipe
This example of ORA-12518 happens on and off.
The reason ORA-12518 is being throw may be because of DEDICATEDconnections because Oracle 10g has a value of PROCESSES is defaulted at 150 which can be lower than necessary in a production system. Also, in pre-9i MTS, ORA-12518 may be thrown in SHARED SERVER because the dispatcher may have reached the maximum connection value, so it denies all other.
There are two solutions for ORA-12518 depending on which symptom you may be experiencing. For the DEDICATED occurrence of ORA-12518, you would need to try increasing the PROCESSES parameter so that it can handle the needed number of processes. You can ensure that you have the needed value by monitoring the listener log for ORA-12518. Also, note that because thePROCESSES parameter is static, the database will need to be bounced.
If you are experiencing ORA-12518 because of a shared server issue, you first would need to use the command below to shutdown the dispatcher:
SQL> alter system shutdown immediate 'D001';
Then, add on new dispatchers:
SQL> alter system set DISPATCHERS = '(protocol=tcp)(dispatchers=3)';
Remember that MOSC offers these syntaxes as examples, but resolving ORA-12518 requires you to evaluate the syntax depending on your dispatcher value in the Spfile.ora or init.ora files. As you increase DISPATCERS to resolve ORA-12518 you should also keep an eye on the shared server ratio.
Question:
With Oracle 10g using a Windows platform, how do I resolve ORA-12518?
Answer:
ORA-12518 is often due to network issues, and in HP-UX, there are various bugs causing ORA-12518.
In reference to your platform, there are a few resolutions that may be available for ORA-12518:
- Try looking in the EventLog to check out network connections and associated errors, as well as the alert log in the database. ORA-12518 can also be thrown along with a database crash.
- Look in the windows service for your Oracle service status
- start--->run--->services.msc
- The server may be in need of a swap memory to disk as it runs out of memory space. Sometimes, Oracle processes can take up alot of memory. If you think this is causing ORA-12518 in your case, you can try this workaround:
- set parameter to DIRECT_HANDOFF_TTC_LISTENER=OFF in listener.ora
- restart listener