關於oracle的連線時ORA-12519錯誤的解決方案
阿新 • • 發佈:2019-02-07
系統在執行時出現了ORA-12519的錯誤,無法連線資料庫,後來在網上找了下,找到了如下的解決方法,共享下。
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: 檢查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.process 和session的概念:process:這個引數限制了能夠連線到SGA的作業系統程序數(或者是Windows 系統中的執行緒數),這個總數必須足夠大,從而能夠適用於後臺程序與所有的專用伺服器程序,此外,共享伺服器程序與排程程序的數目也被計算在內.此外,共享伺服器程序與排程程序的數目也被計算在內.因此,在專用伺服器環境中,這是一種限制併發連線數的方法.
疑點一:能夠連線到SGA的作業系統程序數,這種程序包括哪些程序? Windows系統中的執行緒數,是指所有與oracle相關的程序的執行緒數之和?
疑點二:在共享伺服器和專用伺服器環境中,演算法有什麼不同?
哪位兄弟瞭解比較透徹,請指點一下,拜謝!
Sessions:是被應用於oracle層次而非作業系統層次.在不考慮通過專用伺服器或共享伺服器進行登入的情況下,這個引數限制了對指定例項的併發登陸數.
疑問:在C/架構中,是指Oracle使用者登陸建立的會話數?在B/S架構中又怎麼算呢?
2,儘管概念不是很明白,遇到這種問題還得幹活先:
1).通過SQLPlus修改
Oracle的sessions和processes的關係是
sessions=1.1*processes + 5
使用sys,以sysdba許可權登入:
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> alter system set processes=400 scope = spfile;
系統已更改。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> create pfile from spfile;
檔案已建立。
重啟資料庫,OK!
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ----------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 400
SQL> show parameter session;
NAME TYPE VALUE
------------------------------------ ----------- ----------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 445
shared_server_sessions integer
SQL>
【注:sessions是個派生值,由processes的值決定,公式sessions=1.1*process + 5】