当前位置:操作系统 > Unix/Linux >>

Data Guard日志传输优化------网络传输优化实践

Data Guard日志传输优化------网络传输优化实践
 
 ㈠ 足够的网络带宽是日志传输优化的基础
            www.zzzyk.com  
          经验值预算公式:
          带宽需求 = 日志产生量/0.7 * 8
          注释:
              Oracle日志产生是大Byte(即8位)、而网络带宽是小bit(即1位)、所以、1MB=8Mbps
          
          确定日志产生量最简单的办法是收集正常和高峰时段的AWR报告来确定生产库每秒产生的Redo数据量
          假如、生产库日志产生速度为3MBps(每秒3M),则网络带宽需要3MB/0.7 * 8 = 34Mbps
          也就是说、针对该系统、网络条件至少需要T3/DS-39(带宽能达到44.7Mbps)
            www.zzzyk.com  
       ㈡ 合理设置Oracle Net的SDU参数
          
          当Oracle Net进行数据传输时、Oracle将数据缓存在SDU(session data unit)内存中
          因此、合理增大SDU参数可以显著改进Data Guard日志传输性能
          例如、
          在sqlnet.ora文件中设置如下的Oracle经验值:
[sql] 
DEFAULT_SDU_SIZE = 32767  
               
          在tnsnames.ora中、也可针对单个service name进行如下设置:
 
[sql] 
sales.us.acme.com=  
(DESCRIPTION=   
    (SDU=32767)   
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))  
    (CONNECT_DATA=  
     (SERVICE_NAME=sales.us.acme.com))  
)  
 
          在listener.ora文件中、进行如下配置:
 
[sql] 
SID_LIST_listener_name=  
  (SID_LIST=   
    (SID_DESC=  
     (SDU=32767)  
     (SID_NAME=sales)))  
 
          建议在主库和备库均进行相同的配置、以免在角色却换之后又要进行相同配置调整
 
       ㈢ 合理设置TCP Sockte Buffer 参数
          
          当网络延迟较高时、为充分利用网络带宽、Oracle建议对TCP Socket Buffer参数进行扩充
          经验值:
          Tcp Socket Buffer = 3 * BDP
          BDP = 网络带宽 * 网络RTT值
          例如、带宽1Gbps、RTT为25ms
          则Tcp Socket Buffer size = 3 * 1000000000/8 * 0.025 = 9375000 Byte
          这样、在tnsnames.ora针对单个service name进行配置:
 
[sql] 
hr.us.acme.com=  
 (DESCRIPTION=   
   (SEND_BUF_SIZE=9375000)  
   (RECV_BUF_SIZE=9375000)  
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521))  
   (CONNECT_DATA=  
     (SERVICE_NAME=hr.us.acme.com)))  
 
          在listener.ora进行配置:
 
[sql] 
LISTENER2=  
(DESCRIPTION=  
(SEND_BUF_SIZE=9375000)  
(RECV_BUF_SIZE=9375000)  
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)))  
 
          在sqlnet.ora进行配置:
 
[sql] 
RECV_BUF_SIZE=9375000  
SEND_BUF_SIZE=9375000  
 
       ㈣ 合理设置网络设备队列长度参数
          
          网络设备队列是网络内核与网卡之间的通信缓冲区域
          合理设置该队列长度参数、可有效防范因网络拥塞瓶颈带来的数据丢失问题、并提高网络传输效率
          例如、以下是在Linux下将该参数由缺省的100提高到10000
 
[sql] 
[root@Think ~]# echo 20000 > /proc/sys/net/core/netdev_max_backlog  
[root@Think ~]# echo 1 > /proc/sys/net/ipv4/route/flush  
[root@Think ~]# ifconfig eth0 txqueuelen 10000  
 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,