1 说明

从12.2.0.1开始,Oracle ADG支持In-Memory。

2 ADG支持IM的目的

可以只在主库上启用IM,或者只备库上,或者两者同时启用IM。并且如果主备库同时启用IM,可以在主备库上的IM存储不同的对象,这样可以大大增加了IM的存储大小。

2.1 三种IM启用方式

2.1.1 主备库启用IM,并且大小相同和存储对象相同

这是最简单的模式,这种模式的好处是可以访问任意一个节点上的IM中的对象,从而主库可以处理事务,而备库上进行分析查询工作。
启用IM条件:

  • 主备库同时设置INMEMORY_SIZE初始化参数
  • 在备库上设置INMEMORY_ADG_ENABLED初始化参数为TRUE
  • 将所有对象的INMEMORY属性设置为在两个IM列存储中填充。

如果主库修改对象的IM存储熟悉,那么主库会将修改操作传给备库。

2.1.2 只备库启用IM

这种模式只会在备库上启用IM存储,相关查询分析操作都在备库。这种模式的好处就是主库不会用额外的内存去给IM存储,省内存。

启用IM条件:
-备库同时设置INMEMORY_SIZE初始化参数为非0,而主库设置该参数为0

  • 在备库上设置INMEMORY_ADG_ENABLED初始化参数为TRUE
  • 将所有对象具有 DISTRIBUTE FOR SERVICE属性的INMEMORY设置为在备库上的IM列存储中填充。

2.1.3 主备库同时启用IM,但是存储对象不同

该模式的优点是可以在主备库上执行不同的任务。

启用IM条件:

  • 主备库同时设置INMEMORY_SIZE初始化参数为非0,但是大小可以不一样
  • 在备库上设置INMEMORY_ADG_ENABLED初始化参数为TRUE
  • 将所有对象的INMEMORY … DISTRIBUTE FOR SERVICE设置为在两个IM列存储中填充。

官方文档:
​​​https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/deploying-im-column-store-with-adg.html#GUID-1B891BD1-66E8-40CD-BCE0-C3532FC36222​