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;

表已更改。