oracle的db_buffer_pool由三部分组成:
buffer_pool_defualtbuffer_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;
表已更改。