Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1790868
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类: 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中.

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