前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【12.2新特性】在Oracle Active Data Guard上部署列式存储

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

作者头像
数据和云
发布2018-03-07 14:10:36
9710
发布2018-03-07 14:10:36
举报
文章被收录于专栏:数据和云数据和云

摘要:本文将介绍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语句中指定一个备用和主要服务。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档