【12.2新特性】在Oracle Active Data Guard上部署列式存储

摘要:本文将介绍Oracle 12.2中关于ADG的新特性,在ADG上部署列式存储。关于12.2更多新特性,

注:本文来自官方文档翻译。

一、In-Memory and Active Data Guard

在Active Data Guard上部署列式存储的目的

可以选在在主库、备库或者两者同时部署列式存储。当在主备库上同时部署了列式存储的时候,可以在两个库上对相同或者不同的对象集做操作,如果是操作不同的对象集,那就相当于增加了In-Memory的存储大小。

  • 在主备库上部署同样的In-Memory。

在最简单的情况下,主数据库和备用数据库都包含具有相同大小(不是必需的)的IM列存储。 IM列存储包含相同的对象。

此方案的优点是分析查询可以访问任一数据库上的IM列存储。 因此,可以将分析查询定向到备用数据库,而不消耗主数据库上的资源。主数据库用于支持事务工作负载,备用数据库支持分析工作负载。

实现方案如下:

1、在主数据库实例和备用数据库实例上设置INMEMORY_SIZE初始化参数。 2、确保备用数据库实例上的INMEMORY_ADG_ENABLED初始化参数设置为true(默认值)。 3、在要填充到两个IM列存储中的所有对象上设置INMEMORY属性。

如果更改对象的INMEMORY属性,则主数据库将更改传播到备用数据库。 例如,如果在销售表上设置NO INMEMORY属性,那么两个IM列存储都会逐出销售。

在主数据库上,可以启用表的一部分列以填充到IM列存储中。还可以为不同的列指定不同的压缩级别。启用特定列涉及字典更改。 主数据库上的DDL将传播到Oracle Active Data Guard数据库。

  • 只在standby 库上部署列存储

在此方案中,IM列存储存在于备用数据库中,但不存在于主数据库中。

在这种情况下,主数据库可以充当纯OLTP数据库。在IM列存储的主数据库中不需要额外的内存。可以将分析报告应用程序引导到备用数据库,而不会牺牲性能或消耗主数据库上的资源。

实现方案如下:

1、将备用数据库实例中的INMEMORY_SIZE初始化参数设置为非零值,并在主数据库实例中将其设置为0。 2、确保备用数据库实例上的INMEMORY_ADG_ENABLED初始化参数设置为true(默认值)。 3、使用要在备用数据库中的IM列存储中填充的所有对象的DISTRIBUTE FOR SERVICE子句设置INMEMORY属性。

例如,如果登录到主数据库,并且如果在shsales表上设置INMEMORY属性,则该表将不会填充到主数据库上的IM列存储中 - 因为没有IM列存储这个数据库。但是,备用数据库将继承sh.sales表上的INMEMORY属性。该表将填充在备用数据库中的IM列存储中。

  • 主库IN-MEMORY和备库IN-MEMORY存储不同对象

最灵活的场景是单独配置主数据库和备用数据库的IM列存储。

此方案的优点是您可以在每个数据库中运行不同的工作负载。 例如,HR应用程序在主数据库中运行报告,而销售历史记录应用程序在备用数据库中运行报告。 因此,两个数据库都没有承担分析报告的全部负载。

实现方案如下:

1、在备用数据库和主数据库实例上将INMEMORY_SIZE初始化参数设置为非零值。 这些值不需要相同。 2、确保备用数据库实例上的INMEMORY_ADG_ENABLED初始化参数设置为true(默认值)。 3、对要在两个IM列存储中填充的所有对象设置INMEMORY ... DISTRIBUTE FOR SERVICE子句。 服务指定填充对象的实例。

对应的三种服务:

在以上三种典型的配置中,将会创建三种服务:仅备用,仅主用、主用和备用三种服务。 例如,如果需要主实例中最近一个月的销售事实表数据,而备用实例中存储前一个月的销售数据。 则需要在两个实例中填充维度表。 对于每个销售分区,可以使用INMEMORY ... DISTRIBUTE FOR SERVICE指定备用或主要服务。 对于每个维度表,指定包括主数据库实例和备用数据库实例的服务。

注:在Oracle RAC中,可以将用于指定用于填充的实例的FOR SERVICE子句与控制IMCU分发的DISTRIBUTE AUTO或DISTRIBUTE BY子句组合。 但是,在Oracle Active Data Guard中,FOR SERVICE子句指定要在其中填充指定对象的主实例或备用实例:您不能使用DISTRIBUTE AUTO或DISTRIBUTE BY在主实例和备用实例之间分发IMCU。 例如,不能在主实例和备用实例之间划分销售表的总体,因此一半的IMCU位于主实例中,一半的IMCU位于备用实例中。

二、How IM Column Stores Work in Oracle Active Data Guard

在Oracle Active Data Guard环境中,对象级别PRIORITY属性控制填充。 仅在服务处于活动状态的数据库实例中填充对象。

用户是基于优先级的按需,取决于PRIORITY值。 当发生角色更改或切换时,数据库根据服务最新映射到的数据库实例集合重新填充表。

下图说明了使用主数据库中的重做更新备用数据库的内部机制。

实现方案如下:

1、主数据库生成重做,然后将重做传输到备用数据库。 2、在主数据库上为所有DML语句生成的重做包括指示是否对INMEMORY对象进行更改的元数据。 3、备用数据库将重做应用于存储在磁盘中的数据块。 4、由于备用数据库将正在进行的操作生成的重做应用于主数据库,备用数据库使它们在事务上保持一致。 5、如果修改了INMEMORY对象,则备用数据库将使用事务日志和快照元数据单元(SMU)来跟踪更改,从而使已修改的行无效,就像在主数据库上一样。

重新填充机制在备用数据库中的工作方式与在主数据库中相同。 当对象上发生足够的DML以达到内部阈值时,备用数据库会重新填充IM列存储中的对象。

三、Configuring IM Column Stores in an Oracle Active Data Guard Environment

在Oracle Active Data Guard中配置IM列存储需要设置INMEMORY_SIZE,并为要填充的对象正确设置INMEMORY属性。此任务需要充分了解Oracle Active Data Guard的概念和过程。

必须满足以下要求

COMPATIBLE设置必须为12.2.0或更大。 要填充每个数据库中的不同对象,请配置相应的服务。

要在Oracle Active Data Guard环境中配置IM列存储:

1、在将包含IM列存储的数据库实例上设置INMEMORY_SIZE初始化参数。

请遵循以下准则:

  • 要在主数据库和备用数据库上配置IM列存储,请在两个数据库实例上设置INMEMORY_SIZE。
  • 要仅在备用数据库上配置IM列存储,请在备用数据库实例上设置INMEMORY_SIZE。

2、确保备用数据库实例上的INMEMORY_ADG_ENABLED初始化参数设置为true(默认值)。

3、在主数据库上,使用INMEMORY属性执行DDL语句。

任务取决于IM列存储的存在位置,以及是否在每个IM列存储中填充不同的对象:

  • 如果两个数据库中都存在IM列存储,则连接到主数据库,并设置INMEMORY属性,而不使用DISTRIBUTE FOR SERVICE子句。例如,将INMEMORY属性应用于sh.sales表。

根据标准规则,在每个数据库上出现人口。例如,如果备用数据库上的销售优先级为NONE,那么触发完全扫描销售的备用数据库的查询会填充备用IM列存储中的此表。

  • 如果IM列存储仅存在于备用数据库中,则登录到主数据库,并设置INMEMORY属性而不使用DISTRIBUTE FOR SERVICE子句。

在重做传输期间,备用数据库从主数据库接收此DDL语句。 Population以正常方式出现在备用数据库上。例如,如果sales具有INMEMORY属性并且优先级为NONE,则表必须经历全面扫描以进行填充。

  • 如果两个数据库中都存在IM列存储,并且希望这些IM列存储包含不同的对象,请登录到主数据库,然后根据每个对象设置INMEMORY ... DISTRIBUTE FOR SERVICE。

在每个DDL语句中,服务指定应填充对象的实例。例如,要仅在备用数据库中启用销售,请在DDL语句中指定仅备用服务。要在两个数据库中启用产品群,请在DDL语句中指定一个备用和主要服务。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自由而无用的灵魂的碎碎念

使用yum升级Fedora系统中的firefox为最新发布版本

安装fedora后,发现默认的升级只能升级当前firefox版本为最新更新版本,不会跨版本升级,经过搜索,如下方法最简洁有效,特此分享:

812
来自专栏jeremy的技术点滴

MariaDB Galera Cluster部署实战

9766
来自专栏大数据和云计算技术

HBase框架基础(一)

HBase的基础框架,将分成几个章节对HBase进行描述,不当之处还望大家批评指正。下面是了解HBase基础架构的第一部分。

1653
来自专栏bboysoul

部署包安装zabbix

昨天给树莓派安装上了一个温度传感器,今天想使用zabbix去统计监控树莓派上温度传感器的数据,所以我就开始在我的一台不怎么用的阿里云服务器上安装zabbix了 ...

1212
来自专栏杨建荣的学习笔记

MySQL访问受限的问题分析

今天帮同事看了一个MySQL的连接问题,蛮有意思,有两个用户,一个用户连接正常,另外一个连接抛错。 开发同学提供的错误日志如下: {resin-33} jav...

3699
来自专栏张戈的专栏

升级CentOS6.5内核,开启Nginx的fastopen和reuseport特性

前面,张戈博客在折腾 Nginx 的 SSL 优化时,注意到前人在 Nginx 的 listen 配置中,添加了 fastopen=3 reuseport 这 ...

4899
来自专栏跟着阿笨一起玩NET

Log4Net日志记录两种方式

     log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库...

1372
来自专栏格子的个人博客

mysql5.7.21安装和主从同步

很久之前就做过mysql的部分应用架构,包括主从复制和集群等,一直没有形成博客记录下来,虽然网上也有很多的相关资料,但是出于加深记忆,还是把自己的操作步骤和截图...

861
来自专栏james大数据架构

分布式监控系统Zabbix3.2给异常添加邮件报警

  在前一篇 分布式监控系统Zabbix3.2跳坑指南 中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器。监控的目的一个是可以查看历史状...

2379
来自专栏hotqin888的专栏

beego利用casbin进行权限管理——第三节 策略查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1852

扫码关注云+社区