I have some questions about usage of keep_cache, preloading a table into and what about new/modified values (i know which table shoult preloaded and don't need to check the actual cache therefor).
1. I calculated the size of my table.
CODE
select segment_name, sum(bytes)/(1024*1024) as mb
from dba_segments
where owner = 'usr'
and segment_name='tabname'
group by segment_name
order by mb desc
from dba_segments
where owner = 'usr'
and segment_name='tabname'
group by segment_name
order by mb desc
2. I have set the db_keep_cache to round 100MB.
3. I altered the storage (we have some partitions)
CODE
ALTER TABLE tabname modify partition Part1 STORAGE (BUFFER_POOL KEEP);
ALTER TABLE tabname modify partition Part2 STORAGE (BUFFER_POOL KEEP);
ALTER TABLE tabname modify partition Part2 STORAGE (BUFFER_POOL KEEP);
4. I preloaded the table
CODE
SELECT /*+ FULL(tabname) */ SUM(id) FROM tabname;
5. I try the performance and all looks like fine.
Now my questions:
1. If some rows from tabname will be modified? Will oracle inserts the new rows into the keep_cache automatic and what about the modifikations?
2. What about if the table tabname will be increased bigger than db_keep_chache? Can i write a script to count the blocksize from the table and copare it with the cached blockcount?
3. One more: I have run some Junits and saw, there only one tabname table partition cached? Are my staments to check the cache correct? Should i change the storage definition from the table too?
Thanks
