以下的文章會向你介紹Oracle並發連接數在什麼的情況下是可以設置,在什麼的情況下是不可以對其進行設置的,以及相關的查詢解決方案的介紹。以下就是文章的具體內容的介紹,希望你會有所收獲,
OERR: ORA-12519 TNS:no appropriate service handler found
客戶端連接間歇性失敗,報錯ORA-12519
- Cause: the listener could not find any available service handlers that are
- appropriate for the clIEnt connection.
- Action: run "lsnrctl services" to ensure that the instance(s) have registered
- with the listener, and are accepting connections.
檢查lsnrctl service ,instance已經注冊,
狀態顯示ready時,可以連接。
- When the listener belIEves the current number of connections has reached maximum load,
- it may set the state of the service handler for an instance to "blocked" and begin refusing
- incoming clIEnt connections with either of the following errors: ora-12519 or ora-12516
采用服務動態注冊的方式,由PMON 通過SERVICE_UPDATE 來得到目前連接情況,但SERVICE_UPDATE 有時間間隔,
所以,listener顯示的Oracle並發連接數和當前實際的連接數可能不同。
查詢解決方法:
查看一下數據庫現有的進程數,是否已經達到參數processes的大小。
1.select count(*) from v$process; 取得數據庫目前的進程數。
2.select value from v$parameter where name = 'processes'; 取得進程數的上限。
3.如已達到上限,修改initSID.ora中的processes的大小。
4.重新啟動數據庫到nomount狀態下,執行create spfile from pfile; 並startup open。
查詢數據庫自啟動以來最大的並發數量
修改最大Oracle並發連接數:
- alter system set processes = 300 scope = spfile;
重啟數據庫:
- shutdown immediate;
- startup;
查看當前有哪些用戶正在使用數據
- SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,Machine
- from v$session a, v$sqlarea b
- where a.sql_address =b.address order by cpu_time/executions desc;
2
有的時候我們需要調整Oracle數據庫的最大鏈接數,而這個鏈接數的調整是在oacle下的dbs目錄下init.ora文件中調整的。
Oracle並發連接數(sessions)與其參數文件中的進程數(process)有關,它們的關系如下:
- sessions=(1.1*process+5)
但是我們增加process數時,往往數據庫不能啟動了。這因為我們還漏調了一個unix系統參數:它是核心參數中的semmns,這是unix系統的信號量參數。每個process會占用一個信號量。semmns調整後,需要重新啟動unix操作系統,參數才能生效。不過它的大小會受制於硬件的內存或Oracle SGA。范圍可從200