Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2796363
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2014-07-24 17:22:57

                               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中.

 


 

阅读(14899) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~