Oracle DG 逻辑Standby数据同步性能优化

1、调整APPLIER进程数

APPLIER进程就是执行应用操作的进程。在默认情况下逻辑Standby会启动5个APPLIER进程,如果日志应用任务繁重(或者说Primary数据库修改量较大),则适当多启动几个APPLIER进程有助于提高应用的效率。

先查看当前空闲的APPLIER进程数:

SQL> SELECT COUNT(*) AS IDLE_APPLIER FROM V$LOGSTDBY_PROCESS WHERE TYPE = 'APPLIER' and status_code = 16166;

IDLE_APPLIER

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

0

返回结果为0,难道都在忙?这个真不一定,空闲的APPLIER进程数为0不一定代表应用非常繁忙,也有可能是因为当前没什么需要应用的日志,甚至都没启动应用进程。

说 明: status_code=16166表示进程是空闲状态,因为stats_code=16166对应的状态说明列STATS为ORA-16116: no work available。

检查事务的应用情况:

SQL> SELECT NAME,VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE 'transactions%';

NAME  VALUE

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

trans 358

trans 358

如果ready-applied的值比APPLIER进程数的两倍还要大,则说明DBA有必要考虑增加APPLIER进程的数目了,反之如果applied与ready的值差不多大,或者其差比APPLIER进程数还小,则说明APPLIER进程数偏多,DBA有必要考虑适当减小进程的数目。

如果确认当前APPLIER进程都非常繁忙,要增加APPLIER进程,可按如下步骤操作:

1) 停止逻辑Standby端的SQL应用:

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

Database altered.

2) 执行下列语句,调整APPLIER进程数为10:

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS',10);

PL/SQL procedure successfully completed.

3) 重新启动SQL应用:

JSSLDG> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

4) 查出的就是当前运行的APPLIER进程数:

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

SQL> SELECT COUNT(0) FROM  V$LOGSTDBY_PROCESS WHERE TYPE='APPLIER';

COUNT(0)

----------

10

也可以通过V$LOGSTDBY_STATS视图查询,例如:

SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='number of appliers';

NAME  VALUE

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

numbe 10

2、调整PREPARER进程数

PREPAPER进程将接收到的REDO数据中的块修改转换成LCRs(Logical Change Records)。一般需要调整PREPAPER进程数的机会不多,通常只有一种情况:APPLIER进程有空闲,Transactions Ready还很多,但没有空闲的PREPAPER进程,这时候DBA可能就需要增加一些PREPAPER进程。

先检查空闲PREPAPER进程数量:

SQL> SELECT COUNT(*) AS IDLE_PREPARER FROM V$LOGSTDBY_PROCESS

WHERE TYPE = 'PREPARER' and status_code = 16166;

IDLE_PREPARER

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

0

说 明:如果显示为0,别怕,也有可能是因为当前没什么新的REDO数据需要处理。

如果确实需要调整PREPAPER进程数量,可以按照下列步骤进行。

首先停止SQL应用:

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

Database altered.

调整PREPAPER进程数量为4(默认只有1个PREPAPER进程):

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('PREPARE_SERVERS',4);

PL/SQL procedure successfully completed.

重新启动SQL应用即可:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

查看当前启动的PREPAPER进程数, 查询V$LOGSTDBY_STATS视图,例如:

SQL>  SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='number of preparers';

NAME  VALUE

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

numbe 4

3、调整LCR使用的内存

LCR中保存的是转换后的块修改的记录,这部分数据保存在SGA中。

查询当前LCR可用的最大内存:

SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='maximum SGA for LCR cache';

NAME                                                VALUE

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql
, select
, 应用
, 进程
, 当前
调整
oracle 逻辑standby、逻辑standby、oracle standby、oracle 物理standby、oracle standby 模式,以便于您获取更多的相关知识。

时间: 2024-11-01 17:51:28

Oracle DG 逻辑Standby数据同步性能优化的相关文章

Oracle DG 逻辑Standby的创建说明

一.逻辑Standby的准备工作 1.确认操作的对象和语句是否能被逻辑Standby支持 由于逻辑Standby是通过SQL应用来保持与Primary数据库的同步.SQL应用与REDO应用是有很大的区别,REDO应用实际上是在物理Standby端进行RECOVER:SQL应用则是分析重做日志文件中的REDO信息,并将其转换为SQL语句,在逻辑Standby端执行,因此,需要注意以下几点: (1)并非所有的数据类型都能被逻辑Standby支持, 逻辑Standby支持的数据类型有: BINARY_

Oracle DG 逻辑Standby的相关视图管理

1.DBA_LOGSTDBY_EVENTS 可以把该视图看成逻辑Standby操作日志,因此如果发生了错误,可以通过该视图查看近期逻辑Standby都做了些什么.默认情况下,该视图只保留最近100条事件的记录(可以通过相关过程修改保存的记录条数). 例如: SQL> SELECT EVENT_TIME,STATUS,EVENT FROM DBA_LOGSTDBY_EVENTS ORDER BY EVENT_TIMESTAMP; EVENT_TIM STATUS                  

探讨SQL Server批量向数据库插入数据的性能优化问题

昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的http://www.aliyun.com/zixun/aggregation/14109.html">性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文. 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问. 技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入.

数据中心性能优化指标 高性能机房数据中心

对于数据中心来说性能优化指标很重要,高性能机房数据中心的建设是我们的目标,现在数据中心对于企业来说重要性不言而喻,而数据中心的结构有许多种类,例如拥有刀片服务器架构的优点就十分明显了,而拥有超融合基础架构的好处也包含很多方面,数据中心性能优化指标与高性能机房数据中心的正确建设还是需要慎重考虑的. 对于业务正在稳步增长的企业组织而言,公司当中数据中心的重要性是非常明显的,而为了提升数据中心的性能,企业客户往往有三种方法可以实现服务器的升级或更换.而在本文中,我们针对刀片服务器架构.融合基础设施和超

Oracle DG 物理Standby环境搭建

Oracle Data Guard, 分逻辑Standby和物理Standby. 下面讲的是物理Standby环境的搭建步骤. 一.启用Force Logging 将Primary数据库置为Force Logging模式.通过下列语句: 查看状态: SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE; DATABASE_ROLE    FORCE_LOGGING ----------------  --------------- PRI

数据表性能优化实例

     无论数据表采用了什么样的存储技术,经过一定的时间和事务处理运行后,在存储空间里都会产生一些"碎片",从而导致性能下降.此外,由于预先估计的不足,很可能会发现已经定义的表空间的大小不能满足需要等情况,这些问题都是管理员进行数据库的日常管理维护过程中会遇到的问题,解决这些问题的一个有效的办法就是表的重组. 数据表性能下降的原因     1.迁移的数据行    对数据淼母虏僮骰嵋鹗菪械睦┱梗虼说币桓鍪菘橹械目障锌占洳蛔阋匀菽赡掣鍪菪惺保庑惺萁映跏嫉氖菘橐频街匦路

Oracle DG 物理Standby的创建步骤

一.创建备份 物理Standby数据库相当于Primary数据库在某个时间点的镜像复制,因此在创建物理Standby数据库之前,至少要有一份Primary数据库的完整备份. Oracle建议使用RMAN创建备份集,不过如果数据库规模不是太大,我个人更倾向于通过用户管理的方式创建备份集. 创建备份有三种方式: 1. RMAN 备份与恢复 -- 不需要shutdown 数据库 备份: $ rman target / RMAN> backup full format 'D:/FULL_%d_%T_%s

大数据应用之HBase数据插入性能优化之多线程并行插入测试案例

一.引言: 上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码.根据网友的反馈,基于单线程的模式实现的数据插入毕竟有限.通过个人实测,在我的虚拟机环境下,单线程插入数据的值约为4w/s.集群指标是:CPU双核1.83,虚拟机512M内存,集群部署单点模式.本文给出了基于多线程并发模式的,测试代码案例和实测结果,希望能给大家一些启示: 二.源程序: import org.apache.hadoop.conf.Configuration;

oracle sql 替换 in ,dual性能优化

create table bakInfo( id int, pname varchar2(10), remark varchar2(10), impdate varchar2(10), upstate varchar(10)); create table Info( id int, pname varchar2(10), remark varchar2(10), impdate varchar2(10), upstate varchar(10)); insert into Info values