1:process,session设置过小,会报12156错误
2:修改参数命令;alter system set processes=.. scope=spfile;
3:create pfile from spfile;
4;关闭服务器,重启数据库。
5:验证参数,session=1.1process+5
SQL> show paramete process;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
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
mts_sessions integer 165
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 170
shared_server_sessions integer 165
SQL> select (150*1.1+5) from dual;
(150*1.1+5)
-----------
170
SQL> alter system set processes=500 scope=spfile;
System altered
SQL> conn peng/peng2010@huali ;
已连接。
SQL> show parameter instance
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
active_instance_count integer
cluster_database_instances integer 1
instance_groups string
instance_name string huali
instance_number integer 0
open_links_per_instance integer 4
parallel_instance_group string
parallel_server_instances integer 1
SQL> conn peng/peng2010@huali as sysdba;
已连接。
SQL> create pfile from spfile;
文件已创建。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 117440512 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter process;
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 500
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
mts_sessions integer 550
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 555
shared_server_sessions integer 550
SQL>
查看ORACLE的警告日志文件,报进程无法创建的错误:
Tue Jun 19 19:00:45 2007
ksvcreate: Process(m000) creation failed
Tue Jun 19 19:01:16 2007
Process J000 died, see its trace file
Tue Jun 19 19:01:16 2007
kkjcre1p: unable to spawn jobq slave process
Tue Jun 19 19:01:16 2007
Errors in file /ebs/d02/oracle/VIS/db/tech_st/10.2.0/admin/VIS_demo/bdump/vis_cjq0_4501.trc:
由上可以看出PROCESS参数设置过小,调整这个参数的值为:400,同时SESSION的参数也作调整。
00020, 00000, "maximum number of processes (%s) exceeded"
// *Cause: All process state objects are in use.
// *Action: Increase the value of the PROCESSES initialization parameter.
如说,估计系统中可能会同时有100个用户连接到数据库,那么,你的session最少应该为
(100 + 10 ) * 1.1 = 121
当数据库连接的并发用户已经达到这个值时,又有新session连进来,就会报错
00018, 00000, "maximum number of sessions exceeded"
// *Cause: All session state objects are in use.
// *Action: Increase the value of the SESSIONS initialization parameter.
ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程
但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/proc/kernel 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。
semmns的计算公式为: SEMMNS>processes+instance_processes+system processes=数据库参数processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch) system=系统所占用信号量。系统所占用信号量可用下列命令查出: #ipcs -s 其中列NSEMS显示系统已占用信号量。 其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为零,也就是没有限制。我们可以放心大胆地使用数据库了。
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22934571/viewspace-1048801/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22934571/viewspace-1048801/