oracle11g rac+asm 出现ORA-12516
现像,web输入用户名密码后不能登陆。
1.问题分析
oracle服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误'
问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小。
select count(*) from vprocess;取得数据库目前的进程数selectvaluefromvparameter where name = 'processes'; 取得进程数的上限。
select count(*) from v$session;
解决方法
2、修改processes和sessions值
SQL_node1> alter system set processes=1000 scope=spfile;
SQL_node2> alter system set processes=1000 scope=spfile;
系统已更改。
SQL_node1> alter system set sessions=1000 scope=spfile;
SQL_node2> alter system set sessions=1000 scope=spfile;
系统已更改。
3、查看processes和sessions参数,但更改并未生效
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
4、重启数据库,使更改生效
SQL_node1> shutdown immediate
SQL_node2> shutdown immediate
SQL_node1> startup
SQL_node2> startup
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 1000
SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 1000
shared_server_sessions integer
5.查看当前rac各服务装态
[oracle@oracle-1-srv ~]$ /grid/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.ACFS.dg ora....up.type ONLINE ONLINE orac...-srv
ora.DATA1.dg ora....up.type ONLINE ONLINE orac...-srv
ora.FR1.dg ora....up.type ONLINE ONLINE orac...-srv
ora....ER.lsnr ora....er.type ONLINE ONLINE orac...-srv
ora....N1.lsnr ora....er.type ONLINE ONLINE orac...-srv
ora....N2.lsnr ora....er.type ONLINE ONLINE orac...-srv
ora....N3.lsnr ora....er.type ONLINE ONLINE orac...-srv
ora.OCR.dg ora....up.type ONLINE ONLINE orac...-srv
ora....b1.acfs ora.acfs.type ONLINE ONLINE orac...-srv
ora.asm ora.asm.type ONLINE ONLINE orac...-srv
ora.cvu ora.cvu.type ONLINE ONLINE orac...-srv
ora.db1.db ora....se.type ONLINE ONLINE orac...-srv
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE orac...-srv
ora.oc4j ora.oc4j.type ONLINE ONLINE orac...-srv
ora.ons ora.ons.type ONLINE ONLINE orac...-srv
ora....SM1.asm application ONLINE ONLINE orac...-srv
ora....RV.lsnr application ONLINE ONLINE orac...-srv
ora....srv.gsd application OFFLINE OFFLINE
ora....srv.ons application ONLINE ONLINE orac...-srv
ora....srv.vip ora....t1.type ONLINE ONLINE orac...-srv
ora....SM2.asm application ONLINE ONLINE orac...-srv
ora....RV.lsnr application ONLINE ONLINE orac...-srv
ora....srv.gsd application OFFLINE OFFLINE
ora....srv.ons application ONLINE ONLINE orac...-srv
ora....srv.vip ora....t1.type ONLINE ONLINE orac...-srv
ora....ry.acfs ora....fs.type ONLINE ONLINE orac...-srv
ora.scan1.vip ora....ip.type ONLINE ONLINE orac...-srv
ora.scan2.vip ora....ip.type ONLINE ONLINE orac...-srv
ora.scan3.vip ora....ip.type ONLINE ONLINE orac...-srv
11g中,如果没有低版本的oracle gsd服务是offline的。
不用更改其它的服务,如asm等。
session 与 processes的关系
session: oracle server中用于与数据库进行交互的会话
process: os进程 与oracle进行通信
所有与数据库进行的通信都是通过进程来进行,该参数的设置,决定了连接进程数,一个client的连接有一个进程,后台进程也包含在该参数内(lgwr、dbwr、ckpt、arch等等进程)
但一个进程可能有多个会话,这是连接oracle后在server里面启动的
对于init文件中参数设置,
原则上是进程数量控制了client的连接数量
会话数应该大于进程数
session数=process数*1.1+5
SELECT spid FROM vprocessWHERENOTEXISTS(SELECT1FROMvsession WHERE paddr = addr);