会和其它程序争夺相同的网络资源,建议根据实际网络和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.oranet_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.oraSID_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 size = 3 * bandwidth * delay
= 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.oraLISTENER=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)
(HOST=sales-server)(PORT=1521
(SEND_BUF_SIZE=9375000)
(RECV_BUF_SIZE=9375000)))
未完......
本文出自 “snowhill” 博客,转载请与作者联系!
oracle dataguard网络最佳实践一
标签:oracle dataguard best practices
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:http://snowhill.blog.51cto.com/339421/1956721