我调整Oracle 12c数据库并尝试将一些表加载到INMEMORY
分区。所以,我用CRITICAL PRIORITY
改变了2个表。但是,当我尝试SELECT
内存中的表中的某些数据时,它会从一般的补丁中收集。我从Autotrace那里得到了它。
我做错了什么?
答案 0 :(得分:1)
IMCO(记忆协调员)进程唤醒every two minutes并检查是否需要完成任何人口任务。因此,在启用内存后立即查询表并不能确保从内存中提供查询。
在数据库打开后或在第一次扫描(查询)表之后,对象将在优先级列表中填充到IM列存储中。
例如,如果我们启用表tab1,tab2,tab3 for inmemory:
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;
这些表在以下情况下进入内存:
select * from tab1
)要知道表/分区是否完全加载到内存中,您可以查询v$im_segments
视图,如下所示:
select owner, segment_name, partition_name, segment_type, bytes,
bytes_not_populated, populate_status from v$im_segments;
所以,回答你的问题:
v$im_segments
查看此whitepaper了解详情。