日期:2014-05-16  浏览次数:20474 次

Oracle 性能调优学习笔记(八)-- Oracle 共享服务器的性能调优

Oracle 共享服务器的性能调优
???? Shared Server
???? 用户UP--->Listener-->dispatcher--->request Queue (一个)
?????? --->ShareServer---Response Queue(多个) --->Dispatcher
?????? ----->用户UP
? 特点
? 1.多个用户共享进程
? 2.支持Oracle net功能.
? 3.提供用户响应用户数
?
? 配置Shared Server参数:
? dispatchers
? max_dispatchers 默认值为5
? shared_servers
? max_shared_servers:默认为20或者2*shared_servers
?? ? circuits:虚电路(每一个数据包)数表示可以有多少个连接可以使用.
? processes:规定了一个Oracle可以有多少个Process可以连接和Session有关.
?
?
? DEDICATED(专用服务)和SHARED(共享服务器)配置在tnsnames.ora文件指定服务的方式:
? DEDICATED:服务端进程ora<SID>
? SHARED:共享服务器进程ora-sxxx-<sid>,分发进程ora-dxxx-<sid>.
???
?通常每一个dispatcher可以处理10到20的客户端进程.
?诊断dispatcher进程性能问题:
?v$shared_server_monitor
?v$dispatcher:显示dispatcher的信息.
??????????????? status:状态.
?????? messages:处理客户端包的个数.
?????? bytes:处理总的客户端包大小.
?????? IDLE:空闲时间
?????? BUSY:繁忙时间.
??查看dispatcher的各种信息
??select name,status,bytes,owned,created,idle,busy from v$dispatcher;
??查看dispatcher的繁忙程度
??select sum(owned) "Clients" ,sum(busy)*100/(sum(busy)+sum(idle)) " Busy Rate"
????? from v$dispatcher;
??备注:" Busy Rate" 大约50%,需要增加dispatcher的个数.
??修改的方法:
???alter system set dispatchers ='(pro=tcp)(dis=5)';
???
?
?v$queue:包含shared server 消息队列.
????? Type:common表示服务器使用信息.
??????? dispatcher:为dispatcher进程信息.
????? wait:dispatcher等待时间.
?? totalQ:总的消息.
?
?检查dispatcher的
??? dispatcher等待时间
??? 处理繁忙程度.
? 当数据库打开时候添加或删除dispatcher.
?
? 查看用户会话等待dispatcher的时间
? select decode(sum(totalq),0,'No Responses',
????????? sum(wait)/sum(totalq))? "Average wait time"
??? from v$queue q ,v$dispatcher d
??? where q.type='DISPATCHER'
??? and q.paddr=d.paddr;
?
????? v$dispatcher_rate:包含dispatcher大量进程最大,平均的信息.
?
????? 监控shared Servers的信息
?? Oracle的shared servers可以动态调整的.
?? 你可以监控shared server通过一下方式:
?????? 1.监控shared process的竞争情况
?????? v$shared_server:运行的情况.
?????? select name ,bytes,idle,busy,requests from v$shared_server;
???查看当前shared server的情况
???select name,requests,busy*100/(busy+idle) "busy %" ,
?????? status from v$shared_server
???? where status!='QUIT';
????? 监控shared_server
???select decode(totalq,0,'NO Requests',
???????????? wait/totalq || 'hundredths of seconds')
?????? "average wait Time per requests"
?????? from v$queue
??????? where type='COMMON';
?? ?
?? ?? 2.添加或者删除shared servers.
????? alter system set shared_server=3 scope=spfile;
??
??监控进程使用情况
?? 通过v$circuit 查看以下进程情况
??? 1.server address
??? 2.dispatcher address
??? 3.user session address
???
??shared server内存使用情况
??1.用户信息放在shared pool
??2.建议通过建立? large pool减轻shared pool的负荷.
??3.当使用共享服务器的使用内存一般比较低.
??4.共享服务器使用的UGA为排序使用.
??
??shared server troubleshoting
??1.数据库listener没有启动.
??2.shared server初始化参数设置不正确.
??3.dispatcher进程被意外删除.
??4.dba操作不能使用shared server连接.
??5.即使检查processes和sessiones的大小.避免dispatcher进程过多.
??
??常用的数据字典?
???? v$shared_server_monitor
???? v$session
???? v$process
???? v$shared_server
???? v$circuit
???? v$dispatcher
???? v$dispatcher_rate
???? v$queue
??