问题:因为公司数据量校大,用oracle 11存储数据,走BI流程时会出现数据展现缓慢的问题,公司决定用12c的 Database In-Memory(IMDB)选件
具体介绍可以参考(THK 天善智能 老头子):http://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=402853410&idx=1&sn=84b4409da8cdd578eb04299329f515ba&scene=23&srcid=0316tBrssaeZBi17jNuEqnxO#rd&ADUIN=850079985&ADSESSION=1458087478&ADTAG=CLIENT.QQ.5461_.0&ADPUBNO=26553
前期准备:需要买In-Memory
1、查看各个权限
SELECT * FROM dba_sys_privs t
where t.GRANTEE = 'RESOURCE';
2、查看已有用户的权限和表空间,已有表空间大小
select * from dba_role_privs d where d.GRANTEE= 'C##TEST_ZHZX';
select username,default_tablespace from user_users;
select owner,tablespace_name ,sum(bytes)/1024/1024
from dba_segments group by owner,tablespace_name;
3、创建用户(界面创建用户是角色权限中没有connect选项,改用sql创建)
create user C##TEST_DWBI identified by TEST_DWBI
DEFAULT TABLESPACE ITS_DATA
TEMPORARY TABLESPACE ITS_DATA
grant connect,resource,dba to C##TEST_DWBI
错误:当用户名没有添加C##时会出现错误ora-65096 公共用户名或角色名无效
解决:在用户名字前面加上C##(根据错误提示了解,在CDB中用户得以C##开头)
4、查看in memory提供的相关初始化参数
show parameter inmemory;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_clause_default string
inmemory_force string DEFAULT
inmemory_max_populate_servers integer 7
inmemory_query string ENABLE
inmemory_size big integer 14G
inmemory_trickle_repopulate_servers_percent integer 1
optimizer_inmemory_aware boolean TRUE
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 是一个静态参数,更改需要重启实例生效.
5、把表放到in-memory area中
alter table tablena inmemory;
6、取消表在inmemory中存放
alter table tablena not inmemory;
然后逐步照旧。。。
然后针对项目,在取消前端以及建模工具的缓存情况下,直接查询数据库数据,数据处理速度减少了四分之三的时间!哈哈
(逐步增加后续内容)
结束语:第一次了解,不对勿喷!望指点