oracle的db_buffer_pool由三部分组成:
buffer_pool_defualt
buffer_pool_keep
buffer_pool_recycle
如果要把表钉死在内存中,也就是把表钉在keep区。
--表如果缓存的话是缓存在keep区
SQL> alter table t1 storage(buffer_pool keep);
表已更改。
--查询到放在keep区中的表,但是不意味着表已经被缓存.
SQL> select table_name from dba_tables where buffer_pool='KEEP';
TABLE_NAME
------------------------------
T1
--将表T1缓存
SQL> alter table t1 cache;
表已更改。
--查询到表是否已经被缓存
SQL>select table_name from dba_tables where trim(cache)='Y';
加入到keep区的表不是说不能被移出内存,不过是比较不容易移出内存.
--手工将指定表移出内存
SQL> alter table t1 nocache;
表已更改。