ORA-12518: TNS:listener could not hand off client connection,ora-12518tns

來源:互聯網
上載者:User

ORA-12518: TNS:listener could not hand off client connection,ora-12518tns

一、ORA-12518: TNS:listener could not hand off client connection

在團隊成員增多時,經常出現“無法分發用戶端串連”等問題。在網上搜尋一番後,最終解決了該問題,現將解決方案總結如下,以供參考和以後備用。

更改SPFILEORCL.ORA檔案中的process

<span style="font-size: 14px; ">F:\oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA</span>

原因:團隊成員增多,原有資料庫設定不夠用,導致串連plsql和啟動tomcat時經常拋出“無法分發用戶端串連”的異常。

解決方案:

第一步:調整process和session值

1. 檢查process和session是否夠用。

a)使用plsql串連到oracle,查看process進程數:

<span style="font-family:Comic Sans MS;font-size:14px;">select count(*) from v$process; --取得資料庫目前的進程數。select value from v$parameter where name = 'processes';     --取得進程數的上限。</span>
b)查看session會話數:

<span style="font-family:Comic Sans MS;font-size:14px;">select count(*) from v$session; --取得資料庫目前的會話數。select value from v$parameter where name = 'sessions'; --取得會話數的上限。</span>
查看當前process和sessions是否接近上限值。若接近,可以將其增大。

2. 調整這兩個參數值大小。

系統進程數process和系統會話數session之間存在一個關係:

process數=session數*1.1+5

我們在配置時參考該規律進行設定。

a)  修改process值

alter system set processes=1000 scope=spfile;   --將process值改為1000

b)  修改session值

alter system set sessions=1105 scope=spfile;    --將sessions值改為1105

3. 備份pfile,重啟oracle

a) 修改完成後,備份pfile

create pfile from spfile;   --從spfile(運行時配置)建立pfile(系統配置)

c)  重啟oracle

重啟的方法有很多種,可以重啟oracle服務,或者重啟資料庫。Windows下可以直接重啟服務。


第二步:修改dispatchers個數

如果第一步解決不了問題。可以進行第二步的操作。

1.查看當前dispatchers個數,和dispatchers使用率

select name,busy,status,accept,idle from v$dispatcher;  --查看當前dispatchers個數和部分資訊。一般預設安裝的庫只有一個。

select name,(busy/(busy+idle))*100 "busy rate%" from v$dispatcher; --查看dispatchers使用率

如果使用率大於50%,則要考慮增加dispatchers個數。

2.調整dispatchers個數

alter system set dispatchers='(protocol=tcp)(dispatchers=3)(service=youroracleservicenameXDB)';

--修改dispatchers個數為3.

3. 重啟oracle。


當重啟服務的時候,出現沒有監聽程式的錯誤


二.ORA-12541: TNS:無監聽程式

1:F:\oracle\product\10.2.0\db_1\network\admin\listener.ora 中添加如下代碼:

 (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)      (PROGRAM = extproc)    )    

# listener.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\network\admin\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =  (SID_LIST = (SID_DESC =    (GLOBAL_DBNAME = orcl)    (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)    (SID_NAME = orcl)    )     (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)      (PROGRAM = extproc)    )      )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))      (ADDRESS = (PROTOCOL = TCP)(HOST = wl-fe65b9e18e24)(PORT = 1521))    )  )
注意:重啟 listener 和service  


由於上述更改了spfileorcl.ora,可能導致此檔案丟失,導致 oracle 不可用

三、oralce不可用

建立SPFILEORCL.ORA檔案,注意:SPFILEORCL,ORCL是執行個體的名字

<span style="font-size:14px;">F:\oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA</span>

cmd中運行:

<span style="font-size:14px;">sqlplus /nologconn / as sysdba;create spfile='F:\oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA' from pfile='F:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.7292014151052'; </span>

故當出現此錯誤的是,先建立SPFILEORCL.ORA檔案,然後更改監聽錯誤,重啟監聽和服務即可


oracle的串連問題,各位大大幫忙解決

檢查一下Oracle主目錄下network/admin目錄下tnsnames.ora的內容,是否和你在
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:oracle1", "scott", "tiger");中描述的一致,尤其是1522,看看是否真的放在這個連接埠了。

tnsname 可以自行制定 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 資料庫服務IP地址)(PORT = 連接埠號碼))
)
(CONNECT_DATA =
(SERVICE_NAME = 執行個體名稱)
)
)
 
ORACLE11g安裝在windows 2003 32位作業系統,串連數到120個就不可以串連?

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.