一、如何判断是共享模式还是专有模式(这个和数据库参数shared_servers、和客户端的TNSname.ora有关。)
1.查看服务器共享模式参数
SQL> show parameter SHARED_SERVERS
shared_servers大于零就是共享连接(只是服务器支持)。但是连接选择是共享还是专有是由客户端决定的。
2.查看每个连接的模式
SQL> select server,program,status from v$session order by server;
能够查看每个连接的模式DEDICATED 是专有 SHARED 是共享。
3.tnsnames.ora可以查看连接的模式配置DEDICATED专有、SHARED共享
如下,4种情况:
DB shared_servers = 0 , TNSname.ora server=shared或者不设置 ==> DEDICATED连接
DB shared_servers = 0 , TNSname.ora server=DEDICATED ==> DEDICATED连接
DB shared_servers > 0 , TNSname.ora server=DEDICATED ==> DEDICATED连接
DB shared_servers > 0 , TNSname.ora server=shared或者不设置 ==> Shared连接
二、专有服务器模式下processes值设的过小。可通过以下方法解决: SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0l
icense_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
5.修改processes和sessions值:sessions=(1.1*process+5)
SQL> alter system set processes=300 scope=spfile;
系统已更改。
SQL> alter system set sessions=335 scope=spfile;
系统已更改。
6.重启数据库,使更改生效
三、共享模式下
1.show parameters dispatchers;
NAME TYPE VALUE
dispatchers string (protocol=tcp)(service=oracle10xdb)
max_dispatchers integer
2.确定是否有足够的dispatchers
SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher ;
NAME dispatcher busy rate
---- --------------------
D000 .000121704
D001 .000042597
D002 .004935402
如果超过50%,则需要考虑增加更多的dispatchers;
3.改变dispathchers:
SQL>alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)';
system altered
四、PGA内存设置太小
注:该方法没试过。
作者“ERDP技术架构”