设为首页 收藏本站
查看: 1456|回复: 0

[经验分享] oracle dataguard网络最佳实践一

[复制链接]

尚未签到

发表于 2018-9-6 10:44:32 | 显示全部楼层 |阅读模式
  oracle dataguard redo 网络最佳实践(简译)
  oracle dataguard好处:
  1 对系统性能影响最小
  这里有两个最高可用架构(MAA)场景配置,在有足够带宽的情况下,得出如下结论:
  1 DG在纽约和蒙特利尔(300英里的距离,10MS的往返延迟),使用实时模式,在redo 4MB/s生成速率下,可以做到对生产系统5%的性能影响和零数据丢失;
  2 在波士顿和伦敦之间(3300英里,100MS往返延迟),使用异步模式,在20MB/s的日志生成速率下,可以做到对系统5%以下的影响;
  2 最高级别数据保护模式:
  1  同步模式,0数据丢失,两者的距离建议在百公里左右;
  2  异步传输模式,适用远距离,高延迟的环境,例如:从香港到新加坡,超过1600英里,有50MS的延迟,2MB/s的日志生成速率,可以接受3s内的数据失失环境。
  3 增强的归档日志传输:在发生网络或standby系统故障时,需要重同步时可以被加速。例如:1GB的日志文件需要用归档进程传输,可以减少至55%的传输时间,在快速重同步的过程中,关键数据是处于一种保护模式的;
  3 快速的switchover/failover,秒级切换
  REDO传送最佳实践
  DG提供了三种传输方式:arch,lgwr async,lgwr sync,下面描述这几种方式对网络需求和最佳配置。
  1 带宽选择
  根据awr reports:3MB/s的在高峰期,需要3*8*1024*1024/1000/1000=25.2Mbps,通常来说53KM增加1ms的延迟,同时还得考虑网络中继器,系统性能,网络自有的包流量。为了测试RTT的延迟,可以用traceroute跟踪一下;
  2 DATAGuard的保护模式设置
  如果用LGWR SYNC同步模式,如果网络不足以处理redo的生成量,将会影响生产机的性能;相反,用LGWR ASYNC模式,还是使用online redolog传输,在redo生成高峰期超过了网络流量却不会对生产系统造成影响。使用ARCH传输本地归档文件,也不会对生产系统产生影响(但是和lgwr async比,丢失数据的风险的可能性将大大增加)所以一旦网络间的传输方式确定,自行选择下面的最佳实践方式:
  2.1 ARCH传输模式
  增加ARCN的进程数量,初始数量为2;log_archive_max_processes控制最大归档进程数;在oracle 10.2以后的版本中,这个值最大为30,以前的版本最大为10;ARCn进程可以加快处理archive gap。当主机端设置了MAX_CONNECTIONS参数,大量的ARCn进程可以加快并行处理,
  注意:
  a) log_archive_max_Processes会和其它程序争夺相同的网络资源,建议根据实际网络和ARCHIVE GAP场景设置最优的log_archive_max_processes;
  b)
  源端max_connections设置大于等于2,这样可以减少archive log的传输时间,此值最大为5;
  2.2 lgwr async传输模式
  从oracle 10.2开始,生产库需保证有足够的I/O带宽用于LNS处理在线事务日志。在性能测试中测出额外的读取量;
  2.3 LGWR SYNC Redo传输
  设置NET_TIMEOUT属性(生产库的网络服务对LGWR请求的响应时间等待多少秒,以减少网络丢包对生产库的影响;
  在oracle 10.2里NET_TIMEOUT值为180秒;官方推荐此值的最低值为10秒,当然你可以设成最小值1秒,但是如果网络不稳定延迟会导致数据保护模式的不停切换;
  使用lgwr sync方式,事务提交时会确认本地和远端的数据库;针对两种提交方式:commit wait&commit nowait :commit nowait方式可以只返回给应用程序结果而不用去确认redo是否写到磁盘了;因此commit nowait和默认的wait值相比可以改善应用或事务的响应时间。
  除此之外还注意:
  1 配置单次1MB 的I/O写满写入请求,详细在见Best practices for creating a low Cost Storage Grid for oracle Databases;
  2 standby redlog在快速磁盘上;
  3 不要一组多个standby redolog,如果多个的话,会增加额外的写请求;
  网络最佳实践
  说明:以下所有设置针对Linux,其他平台设置自行参考
  1 主备之间的带宽一定要足够
  2 配置RECV_BUF_SIZE,SEND_BUF_SIZE等于3倍的BDP(bandwidth delay product,传播时延*网络带宽),这个可以增加网络的带宽流量;
  译者注:
  RECV_BUF_SIZE:在TCP/IP/SSL协议里,以字节方式指定会话的接受缓冲区
  配置:sqlnet.ora
net_service_name=  
(DESCRIPTION=
  
   (ADDRESS_LIST=
  
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)
  
        (RECV_BUF_SIZE=11784))
  
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)
  
        (RECV_BUF_SIZE=11784))
  
   (CONNECT_DATA=
  
     (SERVICE_NAME=sales.us.example.com)))
  SEND_BUF_SIZE类似;
  参考:http://docs.oracle.com/cd/E11882_01/network.112/e10835/tnsnames.htm#NETRF274
  3 配置SDU(Session data unit)=32767
  4 增加网络设备的队列大小。如linux增加TXQUEUELENGTH,NET_DEV_MAX_BACKLOG
  TXQUEUELENGTH在linux用ifconfig配置网卡时可配:ifconfig eth1 TXQUEUELENGTH 5000,
  启动时就设置
vi /etc/rc.local  
/sbin/ifconfig eth0 txqueuelen 5000
  NET_DEV_MAX_BACKLOG属于内核参数,
vi /etc/sysctl.conf  
net.core.netdev_max_backlog = 32768
  5  配置orcle Net TCP_NODELAY=yes
  oracle SDU(session data unit)大小说明
  通过网络传送数据时,oracle的网络组件会缓冲SDU。当大量的或者连续的数据需要传送时,增加SDU缓冲区可以提高网络的利用率。
  SDU的配置
vi sqlnet.ora  
default_sdu_size=32767
  
在配置tnsnames.ora也可以:
  
sales.us.acme.com=
  
(DESCRIPTION=
  
    (SDU=32767)
  
      (ADDRESS=(PROTOCOL=tcp)
  
      (HOST=sales-server)
  
      (PORT=1521))
  
    (CONNECT_DATA=
  
     (SID=sales.us.acme.com))
  
)
  配置listener.ora
SID_LIST_listener_name=  
(SID_LIST=
  
   (SID_DESC=
  
    (SDU=32767)
  
    (GLOBAL_DBNAME=sales.us.acme.com)
  
    (SID_NAME=sales)
  
    (ORACLE_HOME=/usr/oracle)))
  TCP套接字缓冲区大小
  TCP套接字区缓冲区控制网络带宽的可用量,其并不考虑网络中可使用的实际带宽。当网络延迟比较高时,较大的套接字缓冲区可更有效的利用网络带宽;
  BDP大小测算:
  BDP= 1,000 Mbps * 25msec (.025 sec)
  1,000,000,000 * .025
  25,000,000 Megabits / 8 = 3,125,000 bytes
  套接字区缓冲区=3*BDP

  socket buffer>  = 3,125,000 * 3
  = 9,375,000 bytes
  套接字区缓冲区由应用程序控制,这里是oracle 的网络服务控制;编辑sqlnet.ora
  RECV_BUF_SIZE=9375000
  SEND_BUF_SIZE=9375000
  或者配置服务名:
vi tnsnames.ora  
standby =
  
(DESCRIPTION=
  
   (SEND_BUF_SIZE=9375000)
  
   (RECV_BUF_SIZE=9375000)
  
     (ADDRESS=(PROTOCOL=tcp)
  
     (HOST=hr1-server)(PORT=1521))
  
   (CONNECT_DATA=
  
     (SERVICE_NAME=standby)))
  配置监听文件listener.ora
LISTENER=  
  (DESCRIPTION=
  
    (ADDRESS=(PROTOCOL=tcp)
  
    (HOST=sales-server)(PORT=1521
  
    (SEND_BUF_SIZE=9375000)
  
    (RECV_BUF_SIZE=9375000)))
  未完......



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563954-1-1.html 上篇帖子: Linux下面oracle环境的搭建 下篇帖子: oracle 重建scott的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表