您的当前位置:首页oracle dataguard网络最佳实践一

oracle dataguard网络最佳实践一

2023-11-11 来源:六九美食网

会和其它程序争夺相同的网络资源,建议根据实际网络和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。

 

显示全文