墨墨导读:In-Memory 作为一个选件,是 Oracle 在 12.1.0.2 中引入的一个特性,通过对数据进行列式存储,以加速查询分析的性能。通过这个特性,Oracle 数据库让行存和列存同时存在。然而这是一个收费的功能,很多用户无法使用。在 20c 中,Oracle 增加了一个基础级的 In-Memory 选项,可以让用户在 16GB 以内,免费使用 In-Memory 的特性。
In-Memory 作为一个选件,是 Oracle 在 12.1.0.2 中引入的一个特性,通过对数据进行列式存储,以加速查询分析的性能。通过这个特性,Oracle 数据库让行存和列存同时存在。
然而这是一个收费的功能,很多用户无法使用。在 20c 中,Oracle 增加了一个基础级的 In-Memory 选项,可以让用户在 16GB 以内,免费使用 In-Memory 的特性。
与此相关的几个条件:
如果我们在全局启用,可以设置:
ALTER SYSTEM SET INMEMORY_SIZE = 16G SCOPE=SPFILE;
In-Memory Base Level 设置 INMEMORY_FORCE 初始化参数为 BASE_LEVEL :
ALTER SYSTEM SET INMEMORY_FORCE=BASE_LEVEL SCOPE=SPFILE;
以下示例,当启动数据库之后,In-Memory Area 分配,即表示启用了 In-Memory 选项功能:
SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
Total System Global Area 11525947392 bytes
Fixed Size 8213456 bytes
Variable Size 754977840 bytes
Database Buffers 16777216 bytes
Redo Buffers 8560640 bytes
In-Memory Area 10737418240 bytes
Database mounted.
Database opened.
注意:在单个PDB中,可以将INMEMORY_SIZE设置为不同值来限制对共享In-Memory的访问。
例如,在一个有100个PDB的CDB中,你可以在CDB级别将INMEMORY_SIZE设置为16G,然后在一个PDB中将INMEMORY_SIZE设置为10G,在第二个PDB中设置为6G,在其余的PDB中设置为0。
参考:https://docs.oracle.com/en/database/oracle/oracle-database/20/newft/memory-base-level.html
墨天轮原文链接:https://www.modb.pro/db/24689