一、需求,前段时间,墨天伦有个小伙伴咨询了这个问题,搞了测试环境测试下。

Oracle-DG 主库将log_archive_dest_state_2远程归档线程参数设置为defer,为什么dg还是处于实时同步状态?

按照小伙伴的预期,正常情况下,此时DG连通性已经中断。

二、测试

2.1 正常同步

Primary
SQL> create table b(id int);
SQL> select dest_name,status,recovery_mode from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
DEST_NAME STATUS RECOVERY_MODE
------------------------------ ------------------ ----------------------------------------------
LOG_ARCHIVE_DEST_2 VALID MANAGED REAL TIME APPLY

Standby
SQL> select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby;
PROCESS CLIENT_PROCESS SEQUENCE# STATUS BLOCK# BLOCKS
------------------ ---------------- ---------- ------------------------ ---------- ----------
MRP0 N/A 87 APPLYING_LOG 9 409600
SQL> select count(*) from b;
COUNT(*)
----------
0
# ps -ef|grep LOCAL=NO
oracle 49788 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49792 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49794 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49799 1 0 06:45 ? 00:00:01 oraclec12 (LOCAL=NO)
SQL> select s.sid,s.serial#,p.program,s.username,p.username,p.background,s.program,s.LAST_CALL_ET,s.LOGON_TIME,s.status
from v$process p,v$session s where p.addr=s.paddr and p.spid in(49788,49792,49794,49799);
SID SERIAL# PROGRAM USERNAME USERNAME BA PROGRAM LAST_CALL_ET LOGON_TIME STATUS
---------- ---------- ------------------------- ---------- ---------- -- ------------------------- ------------ ------------------- ----------------
32 64176 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 0 2021-04-20 06:45:46 INACTIVE
34 13426 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 21 2021-04-20 06:45:42 INACTIVE
47 151 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 1042 2021-04-20 06:45:42 INACTIVE
49 10360 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 1041 2021-04-20 06:45:43 INACTIVE

2.2 远程归档线程参数置为defer

alter system set log_archive_dest_state_2=defer;
SQL> insert into b values(1);
1 row created.
SQL> commit;
SQL> select dest_name,status,recovery_mode from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
DEST_NAME STATUS RECOVERY_MODE
------------------------------ ------------------ ----------------------------------------------
LOG_ARCHIVE_DEST_2 DEFERRED MANAGED REAL TIME APPLY # ps -ef|grep LOCAL=NO
oracle 49788 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49792 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49794 1 0 06:45 ? 00:00:00 oraclec12 (LOCAL=NO)
oracle 49799 1 0 06:45 ? 00:00:01 oraclec12 (LOCAL=NO)
SID SERIAL# PROGRAM USERNAME USERNAME BA PROGRAM LAST_CALL_ET LOGON_TIME STATUS
---------- ---------- ------------------------- ---------- ---------- -- ------------------------- ------------ ------------------- ----------------
32 64176 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 1 2021-04-20 06:45:46 INACTIVE
47 151 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 1098 2021-04-20 06:45:42 INACTIVE
49 10360 oracle@c12 PUBLIC oracle oracle@c11 (TNS V1-V3) 1097 2021-04-20 06:45:43 INACTIVE
SYS@c12>select count(*) from b;
COUNT(*)
----------
1 SQL> alter system switch logfile;
SQL> select max(sequence#),thread# from v$archived_log group by thread#;
MAX(SEQUENCE#) THREAD#
-------------- ----------
87 1
SQL> truncate table b;
dg无影响! 主要原因是主备之间的session并未断开,dg根据已经建立的主备连接session进行数据传输,因此单纯关闭这个模式dg 还是无法断开同步!

2.3 什么情况下,defer+什么才能让主备之间数据同步中断!

 Standby
$kill -- LOCAL=NO 的主库发起的远程session
$ lsnrctl stop

Primary
SQL> alter system switch logfile;
SQL> insert into b values(1);
SQL> commit;
SQL> alter system switch logfile;
DEST_NAME STATUS RECOVERY_MODE
---------------------------------------- ------------------ ----------------------------------------------
LOG_ARCHIVE_DEST_1 VALID IDLE
LOG_ARCHIVE_DEST_2 DEFERRED IDLE
Standby
SYS@c12>select * from b;    此时数据已经不同步了!    也就是说 kill 主备之间已连接的session,参数defer是禁用重新发起的连接,但是不对已有连接处理。
no rows selected

如何恢复?
Primary
alter system set log_archive_dest_state_2=enable;
DEST_ID ERROR
-------------------

2 ORA-12541: TNS:no listener
$ lsnrctl start
alter system set log_archive_dest_state_2=defer;
alter system set log_archive_dest_state_2=enable;
SQL> alter system switch logfile;

Standby
SQL> select * from b;
ID
----------
1

Oracle-DG 主库将log_archive_dest_state_2远程归档线程参数设置为defer,为什么dg还是处于实时同步状态?的更多相关文章

  1. ORA-16019搭建DG设置归档线程参数报错

    #操作描述:搭建DG,主库修改参数log_archive_dest_1线程路径报错 ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_ ...

  2. Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例

    第一部分  问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...

  3. 转如何检查数据库是否处于一致性的状态 以及 如果在DG 库上备份,恢复成一个主库

    ##sample 0 不完全恢复之后,open resetlogs之前,怎么快速的检查数据库是否处于一致性的状态?https://blog.csdn.net/msdnchina/article/det ...

  4. 案例:DG主库未设置force logging导致备库坏块

    DG搭建时,官方文档手册有明确提到要设置数据库为force_logging,防止有nologging操作日志记录不全导致备库应用时出现问题. 虽然是老生常谈的安装规范,但现实中总会遇到不遵守规范的场景 ...

  5. Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决

    环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...

  6. Oracle数据库导入、导出(远程、10g、11g)

    1  查看oracle的版本信息 (1)用客户端连接到数据库,执行select * from v$instance             查看version项 (2)select * from pr ...

  7. Oracle 物理结构(七) 文件-归档日志文件

    Oracle 物理结构(七) 文件-归档日志文件

  8. 【Oracle】10g rac如何开启归档和关闭归档

    开启归档: 1.设置想设置的归档的位置,我们这里归档的位置为ASM磁盘组,磁盘组的名称为DATA alter system set log_archive_dest_1='location=+DATA ...

  9. 基于OGG的Oracle与Hadoop集群准实时同步介绍

    版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/220 来源:腾云阁 https://www.qclou ...

随机推荐

  1. ECMAScript 等性运算符

    判断两个变量是否相等是程序设计中非常重要的运算.在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂. ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等 ...

  2. 微信小程序(四)-样式 WXSS

    样式 WXSS https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.html 1.尺寸单位 rpx(respons ...

  3. 答不上的JUC笔试题

    1:有一个总任务A,分解为子任务A1 A2 A3 ...,任何一个子任务失败后要快速取消所有任务,请写程序模拟. 「请寻求最优解,不要只是粗暴wait()」 本题解题思路:Fork/Join 通常使用 ...

  4. MySQL 导出 select 结果集

    reference: https://blog.csdn.net/huaishuming/article/details/74762652法一:SELECT * from jc_archives wh ...

  5. Mysql通过binlog恢复误update的数据

    事件: 在生产库执行update时只添加了STATUS(状态)条件,将所有状态为'E'的数据全部改为了'D' 思路: 操作步骤主要参考自文章:https://blog.csdn.net/weixin_ ...

  6. Kubernetes-1.概述

    内容主要摘自官网文档资料 官方地址 概述Kubernetes基本信息 前提条件: 掌握容器或Docker知识 文档编写基于kubernetes v1.17版本 目录 概述 Kubernetes对象 K ...

  7. go mod包管理 加代理下载

    原始go.mod文件 module xxx go 1.14 报错 i/o timeout go mod init workorder go mod init: go.mod already exist ...

  8. POJ-2195(最小费用最大流+MCMF算法)

    Going Home POJ-2195 这题使用的是最小费用流的模板. 建模的时候我的方法出现错误,导致出现WA,根据网上的建图方法没错. 这里的建图方法是每次到相邻点的最大容量为INF,而花费为1, ...

  9. System.Net.Mail邮件发送抄送附件(多个)

    /// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...

  10. Java 中为什么要设计包装类

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...