To calculate the percentage of the buffer cache used by an individual object:
Find the Oracle Database internal object number of the segment by querying the DBA_OBJECTS view:
SELECT data_object_id, object_type
FROM DBA_OBJECTS
WHERE object_name = UPPER('segment_name');
Because two objects can have the same name (if they are different types of objects), use the OBJECT_TYPE column to identify the object of interest.
Find the number of buffers in the buffer cache for SEGMENT_NAME:
SELECT COUNT(*) buffers
FROM V$BH
WHERE objd = data_object_id_value;
For data_object_id_value, use the value of DATA_OBJECT_ID from the previous step.
Find the number of buffers in the database instance:
SELECT name, block_size, SUM(buffers)
FROM V$BUFFER_POOL
GROUP BY name, block_size
HAVING SUM(buffers) > 0;
Calculate the ratio of buffers to total buffers to obtain the percentage of the cache currently used by SEGMENT_NAME:
% cache used by segment_name = [buffers(Step2)/total buffers(Step3)]