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

zhanglei_itput發表於2009-06-04

    今天有一天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
已連線。
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章