Oracle自带的网络工具(计算传输redo需要的带宽,使用STATSPACK,计算redo压缩率,db_ultra_safe)

本文主要是介绍Oracle自带的网络工具(计算传输redo需要的带宽,使用STATSPACK,计算redo压缩率,db_ultra_safe),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

oracle自带的网络工具


--根据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.4以上版本,可以采用MOS提供的 oratcptest 工具测量网络能力,10g版本可采用可靠的第三方软件计算实际的带宽。
oracle 11.1.0.4以上版本,可以采用MOS提供的 oratcptest 工具测量网络能力,10g版本可采用可靠的第三方软件计算实际的带宽。
oracle 11.1.0.4以上版本,可以采用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压缩传输,有以下的益处:
1).减少redo传输延迟。
2).减少网络利用率。
3).提供更快的redo gap解决方案。
4).减少redo传输时间。

=========================================================================
--redo压缩最大的益处是低网络带宽环境archeving recovery point ojectives(PRO),适用场景:
1).primary redo产生的速率大于可用的网络带宽。
2).执行压缩需要足够的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 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 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 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 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实例
 

这篇关于Oracle自带的网络工具(计算传输redo需要的带宽,使用STATSPACK,计算redo压缩率,db_ultra_safe)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773361

相关文章

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe