Oracle テーブルフルスキャン(Full Scan)後、バッファキャッシュ 上にキャッシュされているブロック

--現在の"SCOTT.EMP"のHWMサイズを計算する

select t.blocks * p.value /1024 /1024 from dba_tables t, v$parameter p
where t.owner='SCOTT' and t.table_name='EMP' and p.name='db_block_size';

T.BLOCKS*P.VALUE/1024/1024
--------------------------
                191.234375

--Full Scan
select /*+full(EMP)*/ count(*) from EMP;

--v$bhビューを参照し、バッファキャッシュにキャッシュされている"EMP"のサイズを求める
select a.cnt * p.value /1024 /1024
     from v$parameter p,
    (select count(b.objd) cnt
        from dba_objects o , v$bh b
            where   o.data_object_id=b.objd
        and     o.owner='SCOTT'
        and     o.object_name='EMP') a
     where p.name='db_block_size';
     
A.CNT*P.VALUE/1024/1024
-----------------------
             153.273438
             
--テーブル別
select o.object_name,o.OBJECT_TYPE,o.cnt,o.cnt * p.value /1024 
 from v$parameter p,
(select count(b.objd) cnt,o.object_name,o.OBJECT_TYPE
    from dba_objects o , v$bh b
        where   o.data_object_id=b.objd
    and     o.owner='スキーマ'
    group by o.object_name,o.OBJECT_TYPE) o
 where p.name='db_block_size'
 order by o.object_name;

プロとしてのSQLチューニング入門

プロとしてのSQLチューニング入門