分类: Oracle
2015-09-04 19:50:27
ORACLE 12C IN-MEMORY初体验
千呼万唤ORACLE in-memory选件总算正式出来,该功能是包含在oracle 12.1.0.2的版本中.
现在otn已经提供开始提供下载,当前的主要版本是linux x86和solaris平台的.看来oracle真是
在平台先后上存在私心.
安装过程和之前的版本过程基本相同,除非你是升级安装,本文是以新安装开始.安装好
后,我们看一下in memory提供的相关初始化参数有哪些.
SQL> show parameter inmemory;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_clause_default string
inmemory_force string DEFAULT
inmemory_max_populate_servers integer 0
inmemory_query string ENABLE
inmemory_size big integer 0
inmemory_trickle_repopulate_servers_ integer 1
percent
optimizer_inmemory_aware boolean TRUE
SQL>
INMEMORY_SIZE定义了in-memory的大小,default为0MB,INMEMORY_FORCE,定义default的行为
default表示只在ddl定义下才会放到in-memory area中,off表示在关闭in-memory area。INMEMORY_CLAUSE_DEFAULT
定义了在新建表的时候,是否自动加入到in-memory area,压缩等属性.optimizer_inmemory_aware表示optimizer是否对
inmemory支持.
inmemory_size 是一个静态参数,更改需要重启实例生效.
SQL> alter system set inmemory_size=100M;
alter system set inmemory_size=100M
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set inmemory_size=100M scope=spfile;
提供给in memory并不需要有双倍内存,而是划分一块单独的内存区域给im-memeory功能使
用.这块内存区域是在存放在SGA之中,先称为in-memory area,in-memory 内存区域越大越好,这样有更多
数据存放在内存中,in-memory area可以由AMM或是ASMM来管理,实质是无非多了一块区域.
默认情况下对像只有在ddl定义才会被放到in-memory area区域中.可以通过inmemory_clause_default来修改
行为
比如手动把表放到in-memory area中
SQL> create table t1(a int,b int);
Table created.
SQL> alter table t1 inmemory;
Table altered.
取消表在inmemory中存放
SQL> alter table t1 no inmemory;
Table altered.
还可以在栏位级定义哪一栏放到 in-memory area中
SQL> alter table t1 inmemory;
Table altered.
SQL> alter table t1 inmemory (a) no inmemory (b);
Table altered.
先定义整个表存放在in memory中,才能再定义某个栏位存放在in memory中.