会和其它程序争夺相同的网络资源,建议根据实际网络和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.confnet.core.netdev_max_backlog = 32768
5 配置orcle Net TCP_NODELAY=yes
oracle SDU(session data unit)大小说明
通过网络传送数据时,oracle的网络组件会缓冲SDU。当大量的或者连续的数据需要传送时,增加SDU缓冲区可以提高网络的利用率。
SDU的配置
vi sqlnet.oradefault_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.orastandby = (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
小编还为您整理了以下内容,可能对您也有帮助:
关于oracle的dataguard?
1. 备库最初是怎样搭建起来的?直接冷备主库做为备库可以吗?
有一个完整的步骤,但不是直接用冷备就可以做备库的。
2. 备库的一些系统参数配置必须跟主库一致吗?
一些?太笼统了,参数大部分都一致,除了必须修改的。
2. 备库是直接读取主库的归档日志然后进行更新的吧,如果更新的过程中发生意外导致更新失败,怎样处理?
也可以是STANDBY日志,也就是redo,不同的STANDBY配置模式可能用REDO也可能用ARCH,
同样不同的模式下的失败处理也是不同的,特别情况下可以手工应用日志来保持和主库的同步。
3. dataguard就是平常所说的双机热备吧?
不是,过去常说的双机热备其实当前更应该理解为是指RAC。DATAGUARD常用的是做异地容灾方案。
oracle dataguard 是什么
DATA GUARD的最主要的功能是冗灾。当然根据配置的不同,DATA GUARD还可以具备以下特点:高可用、性能提升、数据保护以及故障恢复等。
DATA GUARD可以分为物理STANDBY和逻辑STANDBY两种。二者的最大差别在于,物理STANDBY应用的是主库的归档日志,而逻辑STANDBY应用的是主库的归档日志中提取的SQL语句。由于二者这一点的区别,决定了物理STANDBY无论从逻辑结构和物理结构都是和主库保持一致,而逻辑STANDBY则只需保证逻辑结构一致,且逻辑STANDBY在应用SQL语句的时候,数据库可以处于打开的状态。
如果从DATA GUARD的保护模式分,可以分为三种不同的保护模式:
保护最大化:这种模式的配置可以保证主库和备库的同步,任何情况下主库的损毁都不会导致已提交数据的丢失。如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库停止数据处理。
可用最大化:这种模式和上面一种类似,也是会保证主库和备库的同步,区别在于,当网络或备库不可用时,主库仍然可以继续处理。
性能最大化:主库和备库是异步的。这种模式可能在主库出现损毁时,丢失一部分数据。但是这种模式对主库负荷最小,因此具有最好的性能。
Oracle dataguard 和Oracle rac的区别和联系
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同步的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案。而对于RAC,则是本地的高可用集群,每个节点用来分担不用或相同的应用,以解决运算效率低下,单节点故障这样的问题,它是几台硬件相同或不相同的服务器,加一个SAN(共享的存储区域)来构成的。
Data Guard由两个多两个以上的的数据库构成,他们各自有各自的存储,Oracle负责他们之间的切换和数据同步
双机热备由两台计算机和一个共享存储设备构成,通过第三方软件(HA Rose等)实现切换,不需要做数据同步
建议应用RAC+Dataguard ,RAC保证可用性,Dataguard在RAC组磁盘上和另外一台主机上,保证可靠性。
双机就是人们所说的双机热备,数据库放在共享设备上,同一时刻只能有一台主机接管,另一台待用,这种方式只能保护实例,不能保护db,而且备机长期处于闲置,对资源是一种极大的浪费!
如果原本是双机,建议转换为RAC
规划好应用,DML操作从一个节点跑,查询操作从另一个节点跑,通常不需要太多调优就可以利用闲置的另外一台机器了
RAC服务器共用一套存储,同时提供服务,没有主备之分.宕一个其它的可以继续服务.
双机热备,共用一套存储,一个提供服务一个备份,主机宕了切换到备份服务器提供服务.
Oracle dataguard 和Oracle rac的区别和联系
data guard简称DG,是一个主库(包括instance和数据库文件),多个备库(多个instance、多套数据库文件):
主库和备库之间都是的数据库;
主库和备库的数据完全相同,DG通过复制、重演redo log,把主库的数据复制到备库中,所以备库的数据会有一点时间延迟;
DG的作用,当主库down机后,可以用备库顶上;或者主机负责数据写入、备库给外界提供数据读取,实现读写分离;
RAC,全称Realtime Application Cluster,多个instance,一套数据文件:
多个instance之间有自己的物理内容,但是共享内存数据,协同工作;
多个instance之间共享一套数据文件;
RAC作用,提供instance级别的HA,High Availability,即高可用,一个instance down掉了,另一个instance自动顶上;其次,在应用分离的情况下,可以提供SQL性能;
区别:个人认为,RAC提供了instance级别的HA,而DG提供了数据库文件的HA,所以大部分的oracle 7*24解决方案都是RAC+DG。