关于oracle的连接时ORA-12519错误的解决方案

系统在运行时出现了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】 

原文地址:https://www.cnblogs.com/zjhs/p/3166639.html