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