ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-12500 TNS : listener failed to start a dedicated server process

ORA-12500 TNS : listener failed to start a dedicated server process

原创 Linux操作系统 作者:zhanglei_itput 时间:2009-06-04 11:19:13 0 删除 编辑

    今天有一天windows 2000的oracle database server,客户端连接的时候发生异常:
    ORA - 12500 TNS : listener failed to start a dedicated server process
    网上查了一些资料,不过没有什么实质性的收获,由于是测试环境,处理后问题没有重现,所以谨此记录一下处理过程
    1. 现象
        开发从客户端连接数据库,突然连接不上了,客户端报错:ORA-12500 TNS : listener failed to start a dedicated server process,我尝试连接,一会可以连上,一会不能连上,此现象属于间隙性连接异常。

    2.检查监听状态--监听状态正常,tnsping状态也正常
       C:\Documents and Settings\Administrator>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.8.0 - Production on 04-6月 -2009 10:34:03
Copyright (c) 1991, 2006, Oracle Corporation.  All rights reserved.
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.8.0 - Produc
tion
启动日期                  03-6月 -2009 13:10:52
正常运行时间              0 天 21 小时 23 分 11 秒
跟踪级别                  off
安全性                    OFF
SNMP                      OFF
监听器参数文件          C:\oracle\ora92\network\admin\listener.ora
监听器日志文件          C:\oracle\ora92\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "testdb" 包含 1 个例程。
  例程 "testdb", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testdbXDB" 包含 1 个例程。
  例程 "testdb", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

    3.检查listener.log文件
   02-6月 -2009 14:42:03 * (CONNECT_DATA=(SID=testdb)(SERVER=DEDICATED)(CID=(PROGRAM=E:\Program Files\Quest Software\TOAD\TOAD.exe)(HOST=SUFUWEI)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.95.212)(PORT=53076)) * establish * testdb * 12500
TNS-12500: TNS:监听器未能启动专用的服务器进程
 TNS-12560: TNS: 协议适配器错误
  TNS-00530: 协议适配器错误

    4.查找原因
   Ora-12500 indicates "TNS:listener failed to start a dedicated server process" .This error means that when the listener tried to startup the server process for hadning-off a client connection , the database server process could not be spawned in the regular fashion.
   检查数据库是dedicated server mode还是shared server mode
  创建一个连接进去,然后查询v$circuit,如果里面有记录,证明是共享模式。
SQL> conn test/test@testdb
已连接。
SQL> select * from v$circuit;
未选定行

    5.解决方法
   由于是when the listener tried to startup the server process for hadning-off a client connection,我认为是没有多余的server process分配给新的连接客户,select count(*) from v$session = 298,查到有一些长期连接没有释放的session,所以重启db,由于有些文档说与os有关,所以又重启了一下os,重启以后观察了几天,没有异常情况再次出现。

    6.参考文档解决方法
   Intermittent TNS-12500 Errors on Microsoft Windows NT

    1. Increase the amount of memory available to the system either by removing unnecessary processes or increasing the amount of physical memory.
    2. Increasing the amount of swap space will also temporarily help relieve the symptoms.
    3. Disable OTRACE.  OTRACE is a tracing feature that can cause many problems. OTRACE is enabled by default. 
       To disable OTRACE:
       a. Stop the Oracle database.
       b. Go to the orant/otrace/admin directory.
       c. Delete all files with a ‘.dat’ extension.
       d. Restart the Oracle database.
    4. The TNS-12500 can be a result of the 'processes'
       parameter in the init.ora file being too
       small. Try to increase it.
      
参考文献: 
Subject:  Troubleshooting Guide for ORA - 12500 TNS : listener failed to start a dedicated server process
  Doc ID:  555448.1 Type:  TROUBLESHOOTING
  Modified Date :  17-NOV-2008 Status:  PUBLISHED     
Subject:  TROUBLESHOOTING TNS-12500 ON MICROSOFT WINDOWS NT
  Doc ID:  2064864.102 Type:  PROBLEM
  Modified Date :  10-JAN-2008 Status:  PUBLISHED

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9252210/viewspace-605086/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-10

  • 博文量
    400
  • 访问量
    1111331