PDBごとにSGA利用状況を確認する(V$BH,V$SGASTAT)
対応バージョン
Oracle Database 12.1.0
2016-06-24記事公開
ここではPDBごとのSGA状況の確認について説明します。
SGAのバッファキャッシュ状況確認
オブジェクトごとのバッファキャッシュ状況出力
PDBごとに、どの程度バッファキャッシュを使用しているかを確認するためにはV$BH表を利用します。V$BH表ではSGA内のバッファの状態を確認することが出来ます。
使用しているバッファキャッシュに搭載されているブロック数を使用オブジェクトごとに出力します。現在使用しているもののみ出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
SQL> select bh.INST_ID 2 , bh.CON_ID 3 , vc.NAME as CON_NAME 4 , co.OWNER 5 , co.OBJECT_NAME 6 , co.OBJECT_TYPE 7 -- 数を集計することでブロック数を算出します。 8 , count(1) BLOCK_NUMS 9 from CDB_OBJECTS co 10 , GV$BH bh 11 , GV$CONTAINERS vc 12 where co.CON_ID = bh.CON_ID 13 and co.CON_ID = vc.CON_ID 14 and bh.INST_ID = vc.INST_ID 15 and co.DATA_OBJECT_ID = bh.OBJD 16 and bh.STATUS <> 'free' 17 group by bh.INST_ID 18 , bh.CON_ID 19 , vc.NAME 20 , co.OWNER 21 , co.OBJECT_NAME 22 , co.OBJECT_TYPE 23 order by BLOCK_NUMS 24 , bh.INST_ID 25 , bh.CON_ID 26 ; INST_ID CON_ID CON_NAME OWNER OBJECT_NAME OBJECT_TYPE BLOCK_NUMS ---------- ---------- ------------------------------ -------------------- ------------------------------ ----------------------- ---------- 1 1 CDB$ROOT SYS DBMS_LOCK_ALLOCATED TABLE 1 1 1 CDB$ROOT SYS I_INDPART_OBJ$ INDEX 1 1 1 CDB$ROOT SYS I_OPT_DIRECTIVE_OWN# INDEX 1 1 1 CDB$ROOT SYS WRH$_LATCH TABLE PARTITION 1 .... 1 3 PDBORCL SYS NTAB$ TABLE 2419 1 3 PDBORCL SYS VIEWTRCOL$ TABLE 2419 1 3 PDBORCL SYS SUBCOLTYPE$ TABLE 2419 1 3 PDBORCL SYSMAN EM_EVENT_ANNOTATIONS TABLE PARTITION 2979 1073 rows selected. |
コンテナ(PDB)ごとのバッファキャッシュ状況出力
コンテナ毎に使用しているバッファサイズを出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
SQL> select bh.INST_ID 2 , bh.CON_ID 3 -- free 以外はすべて使用中としてマークします。 4 , decode (bh.STATUS 5 , 'free', 'buffer cache free' 6 , 'buffer cache use' 7 ) as STATUS 8 -- ブロック数と表領域のブロックサイズをかけることで、バイト換算します。 9 , round(count(1) * ct.BLOCK_SIZE / 1024 / 1024,1) as MBYTES 10 from ( select vtin.NAME as TABLESPACE_NAME 11 , bhin.* 12 from GV$BH bhin 13 , GV$TABLESPACE vtin 14 where bhin.INST_ID = vtin.INST_ID 15 -- V$BH 表の TS# を使用して表領域を特定しておきます。 16 and bhin.TS# = vtin.TS# 17 and bhin.CON_ID = vtin.CON_ID 18 ) bh 19 , ( select FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES,BLOCKS,STATUS,RELATIVE_FNO,AUTOEXTENSIBLE,MAXBYTES,MAXBLOCKS,INCREMENT_BY,USER_BYTES,USER_BLOCKS,CON_ID from CDB_DATA_FILES 20 union 21 select FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES,BLOCKS,STATUS,RELATIVE_FNO,AUTOEXTENSIBLE,MAXBYTES,MAXBLOCKS,INCREMENT_BY,USER_BYTES,USER_BLOCKS,CON_ID from CDB_TEMP_FILES 22 ) cf 23 , CDB_TABLESPACES ct 24 where bh.CON_ID = cf.CON_ID 25 and cf.CON_ID = ct.CON_ID 26 and cf.FILE_ID = bh.FILE# 27 and cf.TABLESPACE_NAME = ct.TABLESPACE_NAME 28 and ct.TABLESPACE_NAME = bh.TABLESPACE_NAME 29 group by bh.INST_ID 30 , bh.CON_ID 31 , decode (bh.STATUS 32 , 'free', 'buffer cache free' 33 , 'buffer cache use' 34 ) 35 , ct.BLOCK_SIZE 36 order by 1,2,3 37 ; INST_ID CON_ID STATUS MBYTES ---------- ---------- ----------------- ---------- 1 1 buffer cache free 0 1 1 buffer cache use 90.5 1 3 buffer cache use 130.2 1 4 buffer cache use 20.3 |
バッファキャッシュ以外のプール状況出力
バッファキャッシュ以外については、V$SGASTATにてPDBごとに集計可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
SQL> select vs.INST_ID 2 , vc.NAME as CON_NAME 3 , nvl(vs.POOL, vs.NAME) as POOL 4 -- free memory か使用中かを判別します。 5 , decode( vs.NAME 6 , 'free memory', 'free memory' 7 , 'used memory' 8 ) as STATUS 9 , ROUND(sum(vs.BYTES) / 1024 / 1024,1) as MBYTES 10 from GV$SGASTAT vs 11 , ( select INST_ID 12 , CON_ID 13 , NAME 14 from GV$CONTAINERS 15 union 16 -- CDB 全体のコンテナ ID を付与する 17 select INST_ID 18 , 0 19 , 'ENTIRE CDB' 20 from GV$CONTAINERS 21 group by INST_ID 22 ) vc 23 where vs.CON_ID = vc.CON_ID 24 and vs.INST_ID = vc.INST_ID 25 group by vs.INST_ID 26 , vc.NAME 27 , nvl(vs.POOL, vs.NAME) 28 , decode (vs.NAME 29 , 'free memory', 'free memory' 30 , 'used memory' 31 ) 32 order by vs.INST_ID 33 , CON_NAME 34 , POOL 35 , STATUS; INST_ID CON_NAME POOL STATUS MBYTES ---------- ------------------------------ -------------------------- ----------- ---------- 1 CDB$ROOT large pool used memory 1.8 1 CDB$ROOT shared pool used memory 306.1 1 CDB$ROOT streams pool used memory .6 1 ENTIRE CDB buffer_cache used memory 256 1 ENTIRE CDB fixed_sga used memory 2.8 1 ENTIRE CDB java pool free memory 16 1 ENTIRE CDB large pool free memory 30.2 1 ENTIRE CDB log_buffer used memory 13.2 1 ENTIRE CDB shared pool free memory 58.8 1 ENTIRE CDB shared_io_pool used memory 32 1 ENTIRE CDB streams pool free memory 14.7 1 PDB$SEED shared pool used memory 6.3 1 PDBORCL shared pool used memory 140 1 PDBORCL streams pool used memory .7 |