DataGuard开启延时应用的测试

时间:2022-09-17 18:05:12

DataGuard开启延时应用的测试

实验环境:RHEL 6.5 + Oracle 11.2.0.4 GI、DB + Primary RAC(2 nodes)+ Standby RAC(2 nodes)

1.体验DG延时应用的效果

主库 log_archive_dest_N 参数当前设定值:

log_archive_dest_2                   string      SERVICE=mynas VALID_FOR=(ONLIN
E_LOGFILES,PRIMARY_ROLE) DB_UN
IQUE_NAME=mynas

我需要将其修改,增加 DELAY=N 分钟,我这里为了试验方便,设置了5分钟,实际一般都需要根据业务要求延时1天(1440)甚至更久。

alter system set log_archive_dest_2 = 'SERVICE=mynas DELAY=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas';

设置完成之后,如果备库之前是USING CURRENT LOGFILE实时应用,那么还需要将备库应用停止重新以不加USING CURRENT LOGFILE方式启动应用,否则将会忽略这个DELAY的参数,这一点我们从主库和备库的日志均可以看到。

主库日志:

Tue Aug 15 15:19:05 2017
Archived Log entry 741 added for thread 1 sequence 287 ID 0x97764e10 dest 1:
Tue Aug 15 15:19:05 2017
WARNING: Managed Standby Recovery started with USING CURRENT LOGFILE
DELAY 5 minutes specified at primary ignored
ARC0: Standby redo logfile selected for thread 1 sequence 287 for destination LOG_ARCHIVE_DEST_2

备库日志:

Tue Aug 15 15:18:28 2017
Media Recovery Waiting for thread 1 sequence 287
Tue Aug 15 15:19:05 2017
WARNING: Managed Standby Recovery started with REAL TIME APPLY
DELAY 5 minutes specified at primary ignored
RFS[33]: Assigned to RFS process 5482
RFS[33]: Selected log 11 for thread 1 sequence 287 dbid -1785877518 branch 919999037
Tue Aug 15 15:19:06 2017
Archived Log entry 353 added for thread 1 sequence 287 ID 0x97764e10 dest 1:
ARC3: Archive log thread 1 sequence 287 available in 5 minute(s)
Tue Aug 15 15:19:06 2017
Managed Standby Recovery started with USING CURRENT LOGFILE
Ignoring previously specified DELAY 5 minutes for thread 1 sequence 287
Media Recovery Log +FRA/mynas/archivelog/2017_08_15/thread_1_seq_287.563.952096745
Media Recovery Waiting for thread 2 sequence 235

注:我建立一个每秒都会插入一条数据的测试表,可用来更清楚的去辅助验证延迟应用的设置是否生效。

因此, 需要将备库取消应用,再以不加USING CURRENT LOGFILE的方式重新开启应用,命令如下:

alter database recover managed standby database cancel;
alter database recover managed standby database disconnect from session;

再观察主库日志:

Tue Aug 15 15:33:22 2017
Archived Log entry 743 added for thread 1 sequence 288 ID 0x97764e10 dest 1:
Tue Aug 15 15:33:22 2017
ARC0: Standby redo logfile selected for thread 1 sequence 288 for destination LOG_ARCHIVE_DEST_2

备库日志:

Tue Aug 15 15:33:22 2017
RFS[33]: Selected log 11 for thread 1 sequence 288 dbid -1785877518 branch 919999037
Tue Aug 15 15:33:23 2017
Archived Log entry 354 added for thread 1 sequence 288 ID 0x97764e10 dest 1:
ARC2: Archive log thread 1 sequence 288 available in 4 minute(s)

可以看到延迟应用的设置已经生效。

Tue Aug 15 15:36:11 2017
RFS[33]: Selected log 11 for thread 1 sequence 289 dbid -1785877518 branch 919999037
Tue Aug 15 15:36:12 2017
Archived Log entry 355 added for thread 1 sequence 289 ID 0x97764e10 dest 1:
ARC3: Archive log thread 1 sequence 289 available in 5 minute(s)
Tue Aug 15 15:36:14 2017
RFS[34]: Assigned to RFS process 6921
RFS[34]: Selected log 21 for thread 2 sequence 235 dbid -1785877518 branch 919999037
Tue Aug 15 15:36:15 2017
Archived Log entry 356 added for thread 2 sequence 235 ID 0x97764e10 dest 1:
ARC0: Archive log thread 2 sequence 235 available in 3 minute(s)
Tue Aug 15 15:36:20 2017
Media Recovery Delayed for 3 minute(s) (thread 2 sequence 235)
Tue Aug 15 15:39:17 2017
Media Recovery Log +FRA/mynas/archivelog/2017_08_15/thread_2_seq_235.566.952097775
Media Recovery Log +FRA/mynas/archivelog/2017_08_15/thread_1_seq_287.563.952096745
Media Recovery Log +FRA/mynas/archivelog/2017_08_15/thread_1_seq_288.564.952097603
Media Recovery Delayed for 5 minute(s) (thread 1 sequence 289)

注:我这里同时观察测试表的数据,可以看到,实际上延迟应用,是保证达到设定的值之后才能应用对应的归档日志,本身还会有延迟。

当备库日志显示刚刚应用日志时,这时的差距是最小的,基本和设置的时间一致。

2.总结:开启、关闭延时应用

开启延时应用方法:
主库直接动态修改参数log_archive_dest_N,加入DELAY=(单位是分钟)的参数,然后备库确保不加USING CURRENT LOGFILE启动应用。

--主库:
alter system set log_archive_dest_2 = 'SERVICE=mynas DELAY=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas'; --备库:
alter database recover managed standby database cancel;
alter database recover managed standby database disconnect from session;

那么如何从延时应用重新改回实时应用呢?

就是再设置回去就ok了。

--主库:
alter system set log_archive_dest_2 = 'SERVICE=mynas VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas'; --备库:
alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect from session;

注:由于整个操作涉及的参数是动态可以修改的,所以整个过程都可以在线完成,不需要停机。

3.测试表脚本

每隔1s插入一条数据的测试表

--业务用户jingyu下创建序列和测试表test
conn jingyu/jingyu
create sequence jingyu.s1;
drop table jingyu.test;
create table jingyu.TEST(id number, insert_time timestamp); --需要sys用户授权dbms_lock给业务用户jingyu
grant execute on dbms_lock to jingyu; --创建每隔1s插入一条数据的存储过程,持续10小时
create or replace procedure p1 is
begin
for i in 1..36000
loop
insert into jingyu.test select s1.nextval, systimestamp from dual;
commit;
dbms_lock.sleep(1);
end loop;
end;
/ --编辑执行存储过程的脚本
[oracle@jyrac1 ~]$ vi insert.sh
sqlplus jingyu/jingyu <<EOF
exec p1;
EOF --后台执行脚本
[oracle@jyrac1 ~]$ nohup sh insert.sh &

DataGuard开启延时应用的测试的更多相关文章

  1. 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

    注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51 ...

  2. DataGuard开启failover

    1.修改保护模式 DGMGRL> edit configuration set protection mode as maxAvailability; Succeeded. 2.修改日志同步方式 ...

  3. Oracle 11g DATAGUARD 同步延时监控脚本

    转自 https://blog.51cto.com/8858975/1401988监控脚本(注:这里没用Sendmail工具发送邮件,如果用的话需要修改)$cat check_oracle_dg_de ...

  4. MyBatis入门(五)---延时加载、缓存

    一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...

  5. PLAYGROUND 延时运行

    PLAYGROUND 延时运行 由 王巍 (@ONEVCAT) 发布于 2015/09/16 从 WWDC 14 的 Keynote 上 Chris 的演示就能看出 Playground 异常强大,但 ...

  6. VS自带WCF测试客户端简单介绍

    在目前的二次开发项目中,一些信息是放在客户那里的,只给你一个服务地址,不知道具体有什么方法,每次想调用一个服务不知道能不能实现目前的需求,只能测试.写个测试程序真的划不来,占用时间不说,而且你忙了一上 ...

  7. TestNg测试框架使用笔记

    Gradle支持TestNG test { useTestNG(){ //指定testng配置文件 suites(file('src/test/resources/testng.xml')) } } ...

  8. 使用Angular CLI进行单元测试和E2E测试

    第一篇文章是: "使用angular cli生成angular5项目" : http://www.cnblogs.com/cgzl/p/8594571.html 第二篇文章是: & ...

  9. 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)

    场景介绍 对于构建在微信公众号的系统,帐号体系往往使用微信授权登录(如各类微信商城应用系统). 这样操作不仅可以实现静默注册,对用户几乎是无感的,同时也达到了区分用户,获取用户基本信息(头像,昵称等) ...

随机推荐

  1. Rust初步(三):使用atom搭配racer进行rust编程

    在rust.cc社区中有一个关于rust编辑器的讨论(话说很多人要学一个新语言,都会立即考虑编辑器的问题,包括我在内),主要关注的是,智能提示(这个真的太重要了).大家讨论下来有几个选择 1. ecl ...

  2. linux命令之chmod 2011&period;11&period;24转载于网络

    使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调用权限分为三级 : 档案 ...

  3. C&plus;&plus;全局和静态变量初始化

    转自:http://www.cnblogs.com/zhenjing/archive/2010/10/15/1852116.html 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的 ...

  4. 发现自己喜欢了移动端开发--Android

    喜欢.net一直到现在了,但是自己做过的项目都不是让我自己很满意,不知道为什么,可能是自己的要求比较高吧! 下面自己记录自己的学习 src专门存放我们java源代码的包 Android 4.2.2存放 ...

  5. How to configure SRTM elevations in WorldWind WMS

    In this thread I will try to explain how to serve SRTM elevations using NASA WorldWind WMS. ! Import ...

  6. JS瀑布流布局模式&lpar;2&rpar;

    这个例子与上一篇类似,唯一的区别是排序的方式有差别.上一篇是在高度最小的列里插入内容,这个案例是按顺序放置内容. 两种方法各有优缺点.第一种需要在图片内容加载完成的情况下有效,各个列的图高度差异不大. ...

  7. PHP制作个人博客-广告位添加与调用 推荐文章数据调取

    上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告.博客推荐文章的数据调用. 首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf ...

  8. Google代码规范

    文件名 文件名须全部小写,下划线(_)和短横线(-) 源文件采用 UTF-8 编码. 非空代码块:K&R 风格 左花括号不另起新行 左花括号后紧跟换行 右花括号前需要换行 如果右花括号结束了语 ...

  9. UVA - 12716 - 异或序列

    求满足GCD(a,b) = a XOR b; 其中1<=b <=a<=n. 首先做这道题需要知道几个定理: 异或:a XOR b = c 那么 a XOR c = b; 那么我们令G ...

  10. &lpar;转载&rpar;&lpar;int&rpar;a、&amp&semi;a、&lpar;int&rpar;&amp&semi;a、&lpar;int&amp&semi;&rpar;a的区别,很偏僻的题

    #include <iostream>#include <stdio.h>#include <string.h>#include <conio.h>us ...