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

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. Java 搭建 RabbitMq 消息中间件

    前言 当系统中出现"生产"和"消费"的速度或稳定性等因素不一致的时候,就需要消息队列. 名词 exchange: 交换机 routingkey: 路由key q ...

  2. PID算法验证

    算法: struct PID { float kp; float kpnfac; float ki; float kinfac; float kd; }; float gCurPPM = 1300; ...

  3. MySQL:逻辑库与表管理

    逻辑库管理 语句 说明 CREATE DATABASE 逻辑库名; 创建逻辑库 SHOW DATABASES; 显示所有逻辑库 DROP DATABASE 逻辑库名; 删除逻辑库 USE 逻辑库名; ...

  4. 「视频小课堂」ELK和Kafka是怎么就玩在一起成了日志采集解决方案文字版

    视频地址:ELK和Kafka是怎么就玩在一起成了日志采集解决方案 视频文字版 今天呢我就带来了一期视频,主要就是讲ELK和Kafka之间的通讯关系通过对一张通讯图,和一些操作命令,让我们能更深入的去理 ...

  5. WPF 应用 - 通过 js 缩放 System.Windows.Controls.WebBrowser 的内容

    1. 前提 原本是在大屏上展示系统,系统有个功能是加载第三方的网站,第三方网站按照大屏的分辨率写死了宽高: 现需要改到小屏展示系统,而这个第三方的网站不能随着 WebBrowser 窗口的尺寸调整网站 ...

  6. slickgrid ( nsunleo-slickgrid ) 1 开篇有益

    slickgrid (nsunleo-slickgrid)  1 开篇有益  作为专职的程序猿,自认为是老菜鸟或老民工,以前一直在某浪上写博客,上知天文,下达地理.做了N年的.net,又转Java,从 ...

  7. 【数据结构与算法】——链表(Linked List)

    链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下: 链表是以节点的方式来存储的,是链式存储. 每个节点包含data域,next域:指向下一个节点. 如图:链表的各个节点不 ...

  8. 2019HDU多校第七场 HDU6656 Kejin Player H 【期望递归】

    一.题目 Kejin Player H 二.分析 因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + ...

  9. Shuffle Card HDU - 6707

    题目链接:https://vjudge.net/problem/HDU-6707 题意:给你一个数组a[ ](a[1]=1,a[2]=2.....a[n]=n),然后m次操作,每次把那个数拿到最前面去 ...

  10. 递归实现1-n的全排列(JAVA语言)

    思路: For example: 123的全排列= 1在最前面 23的全排列 + 2在最前面 13的全排列 + 3最前面 12的全排列 所以只需交换和最前面元素的位置,生成剩余元素的全排列即可. im ...