网络带宽

根据primary database redo产生的速率,计算传输redo需要的带宽。

出去tcp/ip网络其余30%的开销,计算需要的带宽公式:

需求带宽=((每秒产生redo的速率峰值/0.75)*8)/1,000,000=带宽(Mbps)

可以通过去多次业务高峰期的Statspack/AWR获取每秒产生redo的速率峰值,也可以通过查询视图:

SQL> select * from v$sysmetric_history where metric_name = 'Redo Generated Per Sec';

oracle 11.1.0.6以上版本,可以采用MOS提供的oratcptest工具测量网络能力。10g版本可采用可靠的第三方软件计算实际的带宽。

参考MOS文档:

Note:2064368.1 -  Measuring Network Capacity using oratcptest

然后通过与传输redo需求的带宽值作比较,如果带宽不足,则需要扩容。

Redo压缩传输

Oracle Data Guard从11g开始,增加了redo压缩传输的特性,redo压缩传输是Oracle高级压缩选项的一个特性,需要额外的license支持。在Oracle11g之前的版本中,压缩传输redo可以通过第三方的WAN加速器实现,如Cisco,Riverbed,F5等

redo压缩传输,有以下的益处:

- 减少redo传输延迟

- 减少网络利用率

- 提供更快的redo gap解决方案

- 减少redo传输时间

redo压缩最大的益处是低网络带宽环境archeving recovery point ojectives(PRO),适用场景:

- primary redo产生的速率大于可用的网络带宽

- 执行压缩需要足够的CPU资源

在高网络带宽环境中,可能由于压缩传输redo,CPU消耗将增加。如,gap解决测试显示,在OC1(51.8Mbits/sec)和T3(44.7Mits/sec)网络环境中,50%的CPU消耗在ARCH进程压缩操作上,而在100Mbits的网络环境中,每个ARCH进程均消耗全部的CPU.

在高于100Mbits的网络中,不建议使用redo压缩。如果需要优先采用PRO减少网络使用率,则一定要评估测试。

从Oracle11.2开始,设置LOG_ARCHIVE_DEST_n参数的COMPRESSION=ENABLE属性启用redo压缩传输,包括SYNC,ASYNC,ARCH传输模式,Gap解决,所有的DG保护模式均会采用压缩。

Oracle11.1中,设定LOG_ARCHIVE_DEST_n参数的COMPRESSION属性,仅适用于解决gap时的redo压缩传输,设定隐含参数(_redo_transport_compress_all)启用最大性能模式下的ASYNC和ARCH传输模式的redo压缩传输。

启用redo压缩传输:

Oracle11.1:

alter system set "_redo_transport_compress_all"=true scope=spfile sid='*';

LOG_ARCHIVE_DEST_2='SERVICE=STANDBY ASYNC COMPRESSION=ENABLE ...'

Oracle 11.2:

LOG_ARCHIVE_DEST_2='SERVICE=STANDBY ASYNC COMPRESSION=ENABLE ...'

计算redo压缩率:

redo压缩类似于gzip -1.手工压缩归档日志,通过gzip --list命令查看压缩率。

gzip工具使用1.3.3之后版本。

gzip -1 <archivelog>.arc

gzip --list <archivelog.arc>.gz

坏块保护与性能影响

具体需要设定什么级别的坏块保护,需要在测试环境进行详细的测试,根据需求设定。

DB_BLOCK_CHECKSUM

参数决定DBWn和直接加载在写磁盘时根据存储在快中的所有字节计算一个checksum并存储到每个数据块和redo log 的cache层头部。Checksum用来校验块是否是底层disk,存储系统或I/O子系统引起的物理损坏。当DB_BLOCK_CHECKSUM=FULL时,如果checksum校验失败,Oracle从磁盘(或其他实例)读该块时将应用需要的redo尝试对它进行修复。如果块损坏,将抛出ORA-600,ORA-01578错误并记录到数据库或ASM的alert log中。

Checksum不校验块内容的逻辑一致性。Checksum校验发生在内存中当一个进程读取数据或redo块到SGA/PGA时,在写更新的、新的数据或redo块前,计算一个新的checksum.

DB_BLOCK_CHECKSUM潜在的客户端包括:所有的foregrounds,DBWR,LGWR,LNS,RFS,ARCH,MRP和recovery slaves.

参数设定:

- OFF/FALSE:当设置为OFF时,DBWn仅对SYSTEM表空间计算checksums,不对用户表空间计算checksum,也不会记录checksum.

- TYPICAL/TRUE:默认值,读块时计算checksum并和块头存储之进行比较,块被读入内存修改后,checksum=0,在修改结束后,DBWn计算一个新的checksum并存储到块头,然后写缓存到磁盘中。

- FULL:TYPICAL增强,Oracle在update/delete语句执行前校验checksum,在LGWR执行剩余的工作时重新计算一个新值。在Oracle11g之前,LGWR仅执行log block checksum,在写磁盘前校验每一个前台进程产生的log块。

- 最佳实践中,在primary和standby中设置DB_BLOCK_CHECKSUM=ALL,需要4%--5%的系统开销;OLTP中设定为TYPICAL需要1%--2%的额外开销,对Redo Apply性能影响最小,但也带来更少的块保护。测试显示在primary设置DB_BLOCK_CHECKSUM=FULL会带来不可接受的性能影响,考虑性能与保护,在primary设定DB_BLOCK_CHECKSUM=TYPICAL,在standby设置DB_BLOCK_CHECKSUM=FULL(在主备角色转换后,设定也会改变)

DB_BLOCK_CHECKING

参数指定Oracle是否对块执行logical intra-block检查(内存中语义检查)。检查块内容,包括块头和用户数据,预防在内存中发生损坏的改变块写入磁盘。通过块上的数据做块的完整性逻辑校验,确保块自身的一致性。当DB_BLOCK_CHECKING=MEDIUM/FULL时,在内存中检测到坏块时将会通过读取磁盘上好的块副本或者应用需要的redo自动修复坏块。如果坏块不能修复,将抛出ORA-600/ORA-01578并阻止写数据块。

参数设定:

- OFF/FALSE:默认值,仅对SYSTEM表空间块做语义检查,对用户表空间不做块检查。

- LOW:块内容在内存中被修改后(如UPDATE/INSERT,on-disk读,RAC inter-instance块转移),做基本的块头检查。LOW级别不执行任何数据层的检查,对保护块损坏检查作用有限。

- MEDIUM:除索引外的所有对象做LOW级别的检查和全部的语义检查,索引可以通过重建减少索引块损坏。

- FULL/TRUE:对所有对象做LOW和MEDIUM级别的检查和语义检查,包括索引。

Oracle建议在primary和standby均设定DB_BLOCK_CHECKING=FULL。需要测试能否接受FULL级别带来的性能影响,如果不能,设定DB_BLOCK_CHECKING=MEDIUM.系统需要在每次块改变花费额外的开销,一般需要1%--10%的额外开销,在UPDATE和INSERT频繁的应用场景中(如Standby Redo Apply)开销更大。OLTP中的频繁的更新压缩表也需要额外的开销。

基于对性能和数据保护的考虑,可以在primary设定DB_BLOCK_CHECKING=MEDIUM,当primary设定此参数后,primary引入块首尾校验,在standby端便没有必要设定DB_BLOCK_CHECKING来检测primary数据库的讹误,但Oracle仍然建议启用该参数,原因:

·确保standby转换为primary角色后有正确的设定。

·启用参数开启standby不依赖于primary的再次逻辑损坏校验

DB_LOST_WRITE_PROTECT

检测丢失写,丢失写发生在I/O子系统确认块写的完整性或旧的块版本的覆盖写时,发现丢失写时,写操作不会持续到存储。

参数设定:

- NONE:默认值,不启用丢失写保护。

- TYPICAL:Primary端设定DB_LOST_WRITE_PROTECT=TYPICAL时,在执行介质恢复时读取redo log中的read-write表空间到log buffer cache,检测写丢失。在物理standby中设定DB_LOST_WRITE_PROTECT=TYPIAL,DG的MRP进程将会持续检查出现在primary数据库read-write表空间的丢失写,检测到丢失写时,将立即阻止应用损坏的redo log块,也做不依赖于primary的丢失写保护检测。

-FULL:TYPICAL增强,对read-write,read-only表空间均启用丢失写保护检测。

当DG MRP进程检测到primary的丢失写损坏,MRP进程将会停止,standby跑出ORA-752错误.DG物理standby检测到其他类型的损坏时也会停止redo应用,跑出ORA-600[3020]错误。更多关于物理standby ORA-752和ORA-600[3020]错误及修复参考MOS文档1265884.1.

启用DB_LOST_WRITE_PROTECT参数将带来额外的开销,在更新频繁的环境中,redo增加,standby应用redo时,需要额外的IO开销检测写丢失。在大多数的场景中,写保护带来的影响可以忽略,最好的方法就是在生产环境启用该参数时先经过测试环境的测试。

11.2.0.4开始,DG Broker配置丢失写保护允许用户选择primary继续或者关闭。

DB_ULTRA_SAFE

11.2新增参数。

参数设定:

- OFF: 不影响DB_BLOCK_CHECKING, DB_BLOCK_CHECKSUM, DB_LOST_WRITE_PROTECT参数单独的设定。

- DATA_ONLY:将做以下设定:

DB_BLOCK_CHECKSUM=FULL

DB_BLOCK_CHECKING=MEDIUM

DB_LOST_WRITE_PROTECT=TYPICAL

- DATA_AND_INDEX:将做以下设定:

DB_BLOCK_CHECKSUM=FULL

DB_BLOCK_CHECKING=FULL

DB_LOST_WRITE_PROTECT=TYPICAL

根据DG坏块保护章节Oracle建议的设定,也可仅设定DB_ULTRA_SAFE参数。

等待事件

ARCH属性等待事件

ARCH wait on ATTACH

监控ARCH进程生成RFS连接花费的总时间

ARCH wait on SENDREQ

监控远程已接收到的redo被ARCH进程从打开到关闭磁盘写花费的总时间

ARCH wait on DETACH

监控ARCH进程删除RFS连接花费的总时间

LGWR SYNC属性等待事件

LGWR wait on ATTACH

监控LGWR进程生成RFS连接花费的总时间

LGWR wait on SENDREQ

监控远程已接收到的redo被LGWR进程从打开到关闭磁盘写花费的总时间

LGWR wait on DETACH

监控LGWR进程删除RFS连接花费的总时间

LGWR ASYNC属性等待事件

LNS wait on ATTACH

监控LNS进程生成RFS连接花费的总时间

LNS wait on SENDREQ

监控远程已接收到的redo被LNS进程从打开到关闭磁盘写花费的总时间

LNS wait on DETACH

监控LNS进程删除RFS连接花费的总时间

LGWR wait on full LNS buffer

监控LGWR进程等待LNS释放ASYNC buffer空间花费的总时间。如果buffer空间在合理的时间内没有被释放,最高可用primary将不允许ARCn进程传输redo log data.等待事件与LGWR SYNC=PARALLEL属性无关。

LGWR ASYNC/LGWR SYNC=PARALLEL属性等待事件

LGWR wait on LNS

监控LGWR进程等待接受network server KSR通道信息花费的总时间。

LNS wait on LGWR

监控network server等待接受LGWR进程KSR通道信息花费的总时间。

LGWR-LNS wait on channel

监控LGWR进程或者network server 进程等待接受KSR通道信息花费的总时间。

ACTIVE DATA GUATD使用STATSPACK

从Oracle11.1开始,使用Active Data Guard,在主库可以使用statspack收集处于read-only和恢复中的standby database性能数据。

使用STATSPACK

1.安装Statspack

在安装standby statspack之前,perfstat schema和statspack相关对象必须存在于primary和standby.如果没有,则在primary执行以下脚本创建perfstat schema:

SQL> conn /as sysdba

SQL> @?/rdbms/admin/spcreate.sql

Choose the PERFSTAT user's password

-----------------------------------

Not specifying a password will result in the installation FAILING

Enter value for perfstat_password: oracle  <====输入密码

oracle

Choose the Default tablespace for the PERFSTAT user

---------------------------------------------------

Below is the list of online tablespaces in this database which can

store user data.  Specifying the SYSTEM tablespace for the user's

default tablespace will result in the installation FAILING, as

using SYSTEM for performance data is not supported.

Choose the PERFSTAT users's default tablespace.This is the tablespace

in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME                CONTENTS  STATSPACK DEFAULT TABLESPACE

------------------------------ --------- ----------------------------

SYSAUX                         PERMANENT *

USERS                          PERMANENT

Pressing <return> will result in STATSPACK's recommended default

tablespace (identified by *) being used.

Enter value for default_tablespace:   <====使用SYSAUX作为perfstat的默认表空间

Using tablespace SYSAUX as PERFSTAT default tablespace.

Choose the Temporary tablespace for the PERFSTAT user

-----------------------------------------------------

Below is the list of online tablespaces in this database which can

store temporary data (e.g. for sort workareas).Specifying the SYSTEM

tablespace for the user's temporary tablespace will result in the

installation FAILING, as using SYSTEM for workareas is not supported.

Choose the PERFSTAT user's Temporary tablespace.

TABLESPACE_NAME                CONTENTS  DB DEFAULT TEMP TABLESPACE

------------------------------ --------- --------------------------

TEMP                           TEMPORARY *

Pressing <return> will result in the database's default Temporary

tablespace (identified by *) being used.

Enter value for temporary_tablespace:   <====使用TEMP作为perfstat的临时表空间

Using tablespace TEMP as PERFSTAT temporary tablespace.

... Creating PERFSTAT user

... Installing required packages

... Creating views

... Granting privileges

NOTE:

SPCUSR complete. Please check spcusr.lis for any errors.

SQL>

SQL> --

SQL> --  Build the tables and synonyms

SQL> connect perfstat/&&perfstat_password

Connected.

SQL> @@spctab  <====调用spctab脚本创建一系列表和同义词

...

NOTE:

SPCTAB complete. Please check spctab.lis for any errors.

SQL> --  Create the statistics Package

SQL> @@spcpkg  <====调用spcpkg脚本创建统计包

...

NOTE:

SPCPKG complete. Please check spcpkg.lis for any errors.

在primary执行sbcreate.sql脚本创建standby statspack schema用来保留standby snapshots,创建stdbyperf用户,调用sbaddins.sql添加第一个standby实例到配置中:

SQL> conn /as sysdba

SQL> @?/rdbms/admin/sbcreate.sql

...

SQL> --  Create user and required privileges

SQL> @@sbcusr  <====调用sbuser脚本创建用户并赋予权限

Choose the STDBYPERF user's password

-----------------------------------

Not specifying a password will result in the installation FAILING

Enter value for stdbyuser_password: oracle  <====输入stdbyuser用户密码

oracle

Choose the Default tablespace for the STDBYPERF user

---------------------------------------------------

Below is the list of online tablespaces in this database which can

store user data.  Specifying the SYSTEM tablespace for the user's

default tablespace will result in the installation FAILING, as

using SYSTEM for performance data is not supported.

Choose the STDBYPERF users's default tablespace.This is the tablespace

in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME                CONTENTS  STATSPACK DEFAULT TABLESPACE

------------------------------ --------- ----------------------------

SYSAUX                         PERMANENT *

USERS                          PERMANENT

Pressing <return> will result in STATSPACK's recommended default

tablespace (identified by *) being used.

Enter value for default_tablespace:   <====使用SYSAUX作为stdbyuser的默认表空间

Using tablespace SYSAUX as STDBYPERF default tablespace.

Choose the Temporary tablespace for the STDBYPERF user

-----------------------------------------------------

Below is the list of online tablespaces in this database which can

store temporary data (e.g. for sort workareas).  Specifying the SYSTEM

tablespace for the user's temporary tablespace will result in the

installation FAILING, as using SYSTEM for workareas is not supported.

Choose the STDBYPERF user's Temporary tablespace.

TABLESPACE_NAME                CONTENTS  DB DEFAULT TEMP TABLESPACE

------------------------------ --------- --------------------------

TEMP                           TEMPORARY *

Pressing <return> will result in the database's default Temporary

tablespace (identified by *) being used.

Enter value for temporary_tablespace:   <====使用TEMP作为stdbyuser的默认表空间

Using tablespace TEMP as STDBYPERF temporary tablespace.

... Creating STDBYPERF user

... Installing required packages

... Granting privileges

NOTE:

SBCUSR complete. Please check sbcusr.lis for any errors.

SQL>

SQL> connect stdbyperf/&&stdbyuser_password

Connected.

SQL>

SQL> --

SQL> --  Build the tables

SQL> @@sbctab      <====调用sbctab脚本创建一些列的表

...

NOTE:

SBCTAB complete. Please check sbctab.lis for any errors.

SQL> --  Add a standby database instance to the configuration

SQL> @@sbaddins  <====调用sbaddins脚本添加第一个实例到配置中

...

THE INSTANCE YOU ARE GOING TO ADD MUST BE ACCESSIBLE AND OPEN READ ONLY

Do you want to continue (y/n) ?

Enter value for key: y  <====输入y开始添加

You entered: y

Enter the TNS ALIAS that connects to the standby database instance

-----------------------------------------------------------------

Make sure the alias connects to only one instance (without load balancing).

Enter value for tns_alias: STANDBY   <====输入一个standby database的TNS-Alias

You entered: STANDBY

Enter the PERFSTAT user's password of the standby database

---------------------------------------------------------

Performance data will be fetched from the standby database via

database link. We will connect to user PERFSTAT.

Enter value for perfstat_password: oracle  <====输入perfstat用户密码

You entered: oracle

... Creating database link

... Selecting database unique name

Database

------------------------------

standby

... Selecting instance name

Instance

------------

standby

... Creating package

Creating Package STATSPACK_standby_standby..  <====创建STATSPACK_standby_standby包

No errors.

Creating Package Body STATSPACK_standby_standby..

No errors.

NOTE:

SBCPKG complete. Please check sbcpkg.lis for any errors.

2.添加实例到Statspack配置中

用stdbyperf用户登陆primary 数据库并执行sbaddins.sql添加standby 实例到statspack配置中。

SQL> conn stdbyperf/oracle

SQL> @?/rdbms/admin/sbaddins.sql

过程类似于第一步调用sbaddins.sql.

3.收集standby实例的性能数据

用stdbyperf用户登录primary数据库创建snapshot并收集standby性能数据。

SQL> conn stdbyperf/oracle

SQL> exec statspack_standby_standby.snap;

4.生成standby统计报告

SQL> @?/rdbms/admin/sbreport.sql

5.清除standby snapshot集

SQL> @?/rdbms/admin/sbpurge.sql

6.从statspack配置中删除standby实例

SQL> @?/rdbms/admin/sbdelins.sql

7.删除Statspack Schema

SQL> conn /as sysdba

SQL> @?/rdbms/admin/sbdrop.sql

STANDBY STATSPACK相关脚本简短说明

以下脚本位于$ORACLE_HOME/rdbms/admin目录下:

sbcreate.sql : 安装standby statspack

sbcuser.sql : 被sbcreate.sql调用创建schema

sbctab.sql : 被sbcreate.sql调用创建保留snapshots的表

sbaddins.sql : 被sbcreate.sql调用添加standby实例到statspack配置中或直接执行用来添加standby实例到statspack配置中

sbcpkg.sql : 被sbaddins.sql调用创建实例指定的statspack包

sblisins.sql : 列出statspack配置中的standby实例

sbreport.sql : 创建standby统计报告

sbrepcon.sql : 被sbreport.sql调用获得报告配置

sbrepins.sql : 被sbreport.sql调用创建真实的报告

sbpurge.sql : 清除指定ID范围的snapshot集

sbdelins.sql : 从statspack配置中删除standby实例

DG性能的更多相关文章

  1. 深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

    一.VisualVM是什么? VisualVM是一款免费的JAVA虚拟机图形化监控分析工具. 1.  拥有图形化的监控界面.    2. 提供本地.远程的JVM监控分析功能.    3. 是一款免费的 ...

  2. Java虚拟机性能管理神器 - VisualVM(6) 排查JAVA应用程序内存泄漏【转】

    Java虚拟机性能管理神器 - VisualVM(6) 排查JAVA应用程序内存泄漏[转] 标签: javajvm内存泄漏监控工具 2015-03-11 18:30 1870人阅读 评论(0) 收藏  ...

  3. DG动态性能视图详解

    V$LOG 显示CONTROLFILE记录的LOG FILE信息. 列名          描述 GROUP#        日志组号 THREAD#       日志线程号 SEQUENCE#    ...

  4. 验证DG最大性能模式下使用ARCH/LGWR及STANDBY LOG的不同情况

    总结:  --两台单实例数据库做DG,数据库版本号10.2.0.1.0 1.主库配置为:arch async,备库无STANDBY LOG. 日志中会有:RFS[4]: No standby redo ...

  5. Moon.Orm性能报告

    以下为有网友公司的评估测试及使用规范 大家可以下载word看看 http://pan.baidu.com/s/1hquvRuc 一.和ADO.NET进行的压力测试 说明:2000并发用户,此图为一网友 ...

  6. android 性能分析案例

    本章以实际案例分析在android开发中,性能方面的优化和处理.设计到知识点有弱引用,memory monitor,Allocation Tracker和leakcanary插件. 1.测试demo ...

  7. requirejs:性能优化-及早并行加载

    为了提高页面的性能,通常情况下,我们希望资源尽可能地早地并行加载.这里有两个要点,首先是尽早,其次是并行. 通过data-main方式加载要尽可能地避免,因为它让requirejs.业务代码不必要地串 ...

  8. raid性能对比

    1,raid0的特性:采用剥离,数据将在几个磁盘上进行分割.数据被分成很多数据块,每一数据块会被写入不同的磁盘.从而, 每一磁盘的工作负荷都得到了降低,这有助于加速数据传输.RAID-0可让磁盘更好地 ...

  9. Deploy 11.2.0.3 RAC+DG on Windows 2008 R2 Step by Step

    环境规划: 节点1: tc1 192.168.56.101 内存:2G 节点2: tc2 192.168.56.102 内存:2G 物理备库:tcdg192.168.56.108内存:1.5G 操作系 ...

随机推荐

  1. 使用WinNTSetup安装win10时提示efi part有红叉(win10安装UEFI系统安装)

    1.装载ImDisk虚拟磁盘 2.格式化硬盘 *格式化时注意”创建新ESP分区 3.使用 WinNTSetup 选择win10安装程序 *1. “BOOTMGR PBR "后有感叹号不用管, ...

  2. 紫书 例题 10-14 UVa 12034(组合数+递推)

    这道题有点类似动态规划,设答案为f(n) 第一个人有i个人,就有c(n,i)种可能 然后后面有f(n-i)种可能,所以相乘,然后枚举所有可能加起来就ok了. #include<cstdio> ...

  3. Zookeeper入门:基本概念、5项配置、启动

    起源 最早接触Zookeeper,是在学习Hadoop权威指南这本书的时候,印象中是Hadoop项目的一个子工程.      最近,项目中需要用到"分布式锁".      之前,在 ...

  4. 第五讲 自对偶的Yang-Mills方程及Polyakov和t'Hooft解

    $\newcommand{\R}{\mathbb{R}}$以下我们考虑的是$\R^4$或者$S^4$上的Yang-Mills泛函,它们是共形不变的. 一.自对偶和反自对偶 我们寻找$\R^4$或$S^ ...

  5. Httphelper头信息(ContentType)默认为text/html无懈可击

    Httphelper头信息(ContentType)默认为text/html无懈可击转 http://www.sufeinet.com/thread-8623-1-1.html 我发现最近有几个网友提 ...

  6. 7.第一次使用java连接mongodb遇到的问题

    转自:https://blog.csdn.net/u010523770/article/details/54585883 新版本的mongodb的驱动包是依赖bson.jar和mongodb_driv ...

  7. MySql免安装版绿化版安装配置,附MySQL服务无法启动解决方案

    整理于:https://www.cnblogs.com/cenwei/p/6249856.html      我下载的MySQL版本是:mysql-5.6.15-winx64 一.解压文件 下载好My ...

  8. TortoiseSvn介绍 客户端

    转载自:http://www.cnblogs.com/lyhabc/articles/2482381.html TortoiseSvn 是 Subversion 版本控制系统的一个免费开源客户端,可以 ...

  9. OpenCV中Mat数据的访问报错

    最近再写一段程序的时候,要访问Mat中的元素.在定义Mat型数据的时候,用 Mat ObjectPoints(48,3,CV_32FC1,0) 对其进行初始化后,用at进行访问时报内存错误. Mat ...

  10. 手动删除oracle数据库

    --===================== -- 手动删除oracle数据库 --===================== 杀掉进程用此方法比较好,能保证杀得干净,而不是用sql 里面的语句ki ...