时间:2021-07-01 10:21:17 帮助过:42人阅读
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 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.ora
LISTENER= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp) (HOST=sales-server)(PORT=1521 (SEND_BUF_SIZE=9375000) (RECV_BUF_SIZE=9375000)))
未完......
本文出自 “snowhill” 博客,转载请与作者联系!
oracle dataguard网络最佳实践一
标签:oracle dataguard best practices