oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向
Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向
在前面的文章《Oracle 19c 十大新特性一览》中,我们曾经提到 Oracle 19c的一个重要增强,就是ADG的自动DML转发:
这个新特性的功能是:将偶然发送到ADG上的DML操作,自动转发到主库执行,然后通过主库日志传递到备库实时应用,在保证了ACID的前提下,大大增强了备库的实用性,这被称为 DML Redirection 。
其实这个特性在 Oracle 18c 中就已经提供,所以我们不必等到 19c 就能够体验到这个特性。
在两个版本中,唯一的差别是:
在 18c 中,这个特性是通过隐含参数 _enable_proxy_adg_redirect 的调整来启用这个特性,这表示此特性是趋向内部的;
在 19c 中,显式参数 ADG_REDIRECT_DML 参数控制这个特性的开关,说明这个特性变成外部和成熟的;
来看一下测试,体验一下这个新特性的便利性。首先在主库建立测试表,插入测试数据:
[oracle@18.0.0]$ export ORACLE_SID=DB18C
[oracle@18.0.0]$ sqlplus / as sysdba
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
SQL> create user eygle identified by eygle;
User created.
SQL> grant connect,resource,dba to eygle;
Grant succeeded.
SQL> connect eygle/eygle
Connected.
SQL> create table enmotech (id number,name varchar2(20));
Table created.
SQL> insert into enmotech values(1,'EYGLE');
1 row created.
SQL> commit;
Commit complete.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
接下来在备库中就设置了参数之后,就可以针对表执行DML操作了,注意备库需要置于实时应用状态:
[oracle@18.0.0]$ export ORACLE_SID=DB18C_S
[oracle@18.0.0]$ sqlplus eygle/eygle
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
SQL> select * from enmotech;
ID NAME
---------- --------------------
1 EYGLE
SQL> alter session set "_enable_proxy_adg_redirect"=true;
Session altered.
SQL> show parameter redirect
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_adg_redirect_flagsinteger 1
_enable_proxy_adg_redirectboolean TRUE
-- 此处启用跟踪,可以分析 ADG 重定向的工作原理
SQL> alter session set events '10046 trace name context forever ,level 12';
Session altered.
--此处的DML操作可以顺利执行
SQL> insert into enmotech values(2,'YANGTINGKUN');
1 row created.
SQL> select * from enmotech;
ID NAME
---------- --------------------
1 EYGLE
2 YANGTINGKUN
SQL> commit;
Commit complete.
在以上测试中,可以通过设置10046跟踪,以获得后台的递归执行,研究这个特性的工作原理。
也可以设置终端输出时间,评估重定向的延时,我的测试环境搭建在同一台主机,基本上DML操作的延时在1秒左右,偶发情况下是完全可以接受的:
SQL> set timing on
SQL> insert into enmotech values(2,'KAMUS');
1 row created.
Elapsed: 00:00:01.05
SQL> select * from enmotech;
ID NAME
---------- --------------------
1 EYGLE
2 YANGTINGKUN
2 KAMUS
Elapsed: 00:00:00.00
SQL> commit;
Commit complete.
Elapsed: 00:00:01.05
通过后台的跟踪日志,可以看到,DML操作是通过DB Link来重定向到主库执行的,这个DB Link是内部的,在服务名等配置正常情况下,Oracle能够自动完成内部操作,如果配置错误则会出现错误:
=====================
PARSING IN CURSOR #139880746795960 len=44 dep=0 uid=107 oct=2 lid=107 tim=45368825051292 hv=3193100945 ad='674870e8' sqlid='3bg4wy2z55qnj'
insert into enmotech values(2,'YANGTINGKUN')
END OF STMT
PARSE #139880746795960:c=44993,e=1721825,p=1,cr=28,cu=6,mis=1,r=0,dep=0,og=1,plh=0
WAIT #139880746795960: nam='SQL*Net message to dblink' ela= 2
WAIT #139880746795960: nam='SQL*Net message from dblink' ela= 1164
EXEC #139880746795960:c=1000,e=1297,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,plh=0
WAIT #139880746795960: nam='SQL*Net message to dblink' ela= 1
WAIT #139880746795960: nam='SQL*Net vector data to dblink' ela= 82
WAIT #139880746795960: nam='SQL*Net message from dblink' ela= 1280
*** 2019-01-10T21:08:37.292860+08:00
WAIT #139880746795960: nam='standby query scn advance' ela= 850283
WAIT #139880746795960: nam='PGA memory operation' ela= 98 p1=0 p2=0
WAIT #139880746795960: nam='SQL*Net message to client' ela= 2 d
=====================
PARSING IN CURSOR #139880746795960 len=6 dep=0 uid=107 oct=44 lid=107 tim=45368881823728 hv=3480936638 ad='0' sqlid='23wm3kz7rps5y'
commit
END OF STMT
PARSE #139880746795960:c=0,e=150,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,plh=0
XCTEND rlbk=0, rd_only=1, tim=45368881823795
WAIT #139880746795960: nam='SQL*Net message to dblink' ela= 2
WAIT #139880746795960: nam='SQL*Net message from dblink' ela= 1598
*** 2019-01-10T21:09:34.259699+08:00
WAIT #139880746795960: nam='standby query scn advance' ela= 1045191
EXEC #139880746795960:c=1000,e=1047570,p=0,cr=0,cu=4,mis=0,r=0,dep=0,og=0,plh=0
WAIT #139880746795960: nam='SQL*Net message to client' ela= 3
除了常规表之外,Oracle 还支持在备库创建全局临时表,在19c中,隐含参数 _alter_adg_redirect_behavior 可以用于定义允许重定向的级别,例如当设置 disallow_gtt 将不允许重定向全局临时表。
ADG 中 DML 重定向新特性带来的另外一个问题时,以后部署ADG时,必须注意备库安全管控,否则滥发到备库的DML可能损害主库的一致性。
这些变化告诉我们的是:时移世易,当新的版本和特性被引入时,一定会带来新的变化,如果不能及时了解这些变化,在享受便利的情况下,就可能面临意外的风险。
By eygle on 2019-02-12 21:46 |
Comments (0) |
Oracle12c/11g | 3331 |
oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向相关推荐
- Oracle 19c 新特性:ADG的自动DML重定向增强读写分离
在前面的文章<Oracle 19c 十大新特性一览>中,我们曾经提到 Oracle 19c的一个重要增强,就是ADG的自动DML转发: 这个新特性的功能是:将偶然发送到ADG上的DML操作 ...
- Oracle 19c 新特性:ADG的自动DML重定向增强读写分离--ADG_REDIRECT_DML
Oracle 19c 新特性:ADG的自动DML重定向增强读写分离--ADG_REDIRECT_DML Oracle 19c 新特性之一,adg的自动 dml 重定向.就是在 ADG 环境下,连接到 ...
- oracle19自动索引,Oracle 19c 新特性详解:自动索引(Automatic Indexing)的输出报告范例...
[email protected]>set serveroutput on [email protected]>declare 2 report clob := null; 3 begin ...
- Oracle 18c新特性详解-多租户专题
Oracle 18c,传说中全球第一款自动驾驶数据库,正式到来.18c不仅仅是数据库,更是一种云服务,包括着Oracle数据库18c,Oracle云基础架构和Oracle云工具,机器学习,能够实现自治 ...
- 还在用JDK6的同学,来看看JDK13新特性详解吧
点击上方"搜云库技术团队"关注,选择"设为星标" 回复"面试题"或"1024"获取 4T 学习资料 在 JDK 版本的世 ...
- java11 新特性 详解
为什么80%的码农都做不了架构师?>>> 引言: 点击-->java10 新特性 详解 点击-->java9 新特性 详解 点击-->java8 新特性 详解 ...
- Java EE 8的五大新特性详解
Java EE 8的五大新特性详解 2018.4.3 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. Java EE 8带来了很多新特性,其中最好的新特性有下面五个. 备受期待的Ja ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
- JDK 8 十大新特性详解
前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java ...
最新文章
- Dubbo基础专题——第二章(Dubbo工程简单实践)
- oracle电子商务套件视频,Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程...
- 九、表达式求值(1)
- spring系列-注解驱动原理及源码-bean组件注册
- Oracle 11g安装图文攻略
- html 二级试题,计算机二级考试WEB试题及答案
- Hadoop64位版本安装后遇到的警告处理
- P1099 树网的核
- Linux内核的Nand驱动流程分析
- java 解析p12_java读取*.p12证书的信息 | 学步园
- python编写图片主色转换脚本
- 【论文解读】EMNLP2019 如何在Transformer中融入句法树信息?这里给出了一种解决方案...
- 自己调用NTDLL函数
- linux下运行jar
- H5 data-* 属性,设置获取方法总结
- linux mysql 密码策略_Linux Ubuntu 14 MySQL 密码策略(复杂度)和审计插件
- a3967驱动_Arduino A3967 步进电机驱动板 EasyDriver Stepper Motor
- 5G的落地现状与未来变局
- [转载]NFC问题分析
- ┊非主流图片┊非主流美女┊非主流照片
热门文章
- Ueditor和CKeditor wysihtml5 编辑器的使用与配置
- 全新的移动界面设计素材
- 【ROS】机器人编程实践
- html网络通信协议设计,智能家居无线网络通讯协议设计方案
- Spring框架最终注解标签注入方法
- uniapp 根据经纬度逆转地理地质
- Vue学习笔记之02-Mustache语法以及一些指令
- oracle+imp部分数据,ORACLE数据库IMP逻辑导入出现ORA-00910的处理案例
- java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...
- javascript 高级程序设计_所以 JavaScript 到底是什么?我居然懵了????