问题描述
- 求高手解答,ORACLE 12C 中新加功能InMemory疑问
-
在SQLPLUS中设置完一些表为InMemory之后,后面进行维护时,有没有方法可以获取到哪些表为InMemory表
我测试重复设置InMemory和no InMemory,SQLPLUS中也不会有错误信息SQL> alter table test no inmemory;
Table altered.
SQL> alter table test no inmemory;
Table altered.
SQL> alter table test inmemory;
Table altered.
SQL> alter table test inmemory;
Table altered.
SQL>
解决方案
找到相关的查询了,发出来共享一下
-- 查询是否为内存表, enabled--内存表 disabled--非内存表 (普通当前用户执行)
select t.table_name,
t.inmemory,
t.inmemory_priority,
t.inmemory_distribute,
t.inmemory_compression,
t.inmemory_duplicate,
t.*
from user_tables t;
-- 查询InMemory空间使用量 (DBA用户执行)
select t.POOL,
t.ALLOC_BYTES/1024/1024 || 'M' ALLOC_BYTES,
t.USED_BYTES/1024/1024 || 'M' USED_BYTES,
t.POPULATE_STATUS,
t.CON_ID
from v$inmemory_area t;
-- 调整InMemory大小
-- alter system set inmemory_size=1000M scope=spfile;
-- 重启数据库
-- InMemory组件是否启用
select parameter,value from v$option where parameter like 'In-Memory%';
-- InMemory参数
select NAME,value,DESCRIPTION from v$parameter where NAME like 'inmemory%';
解决方案二:
不要沉啊,自己先顶起来!
解决方案三:
看一下以下视图里是否有你需要的信息
SQL> SELECT VIEW_NAME FROM DBA_VIEWS WHERE VIEW_NAME LIKE 'V_$IM%';
VIEW_NAME
V_$IM_SEGMENTS_DETAIL --记录IM段对象的详细存储属性
V_$IM_SEGMENTS --记录IM段对象的存储属性
V_$IM_USER_SEGMENTS --记录当前用户下IM段对象的存储属性
V_$IM_TBS_EXT_MAP --记录IM区1M子池对象的区间映射关系
V_$IM_SEG_EXT_MAP --记录IM区对象的所有区间映射关系
V_$IM_HEADER --记录IM区对象所分配IMCU的详细信息
V_$IM_COL_CU --记录IMCU中基于列的统计信息
V_$IM_SMU_HEAD
V_$IM_SMU_CHUNK
V_$IM_COLUMN_LEVEL --记录IMCU中对象的列级压缩属性,若未在列级定义,则改视图为空