対応バージョン
Oracle Database 12.1.0
更新履歴
| 日付 | 更新概要 |
|---|---|
| 2016/06/24 | 記事公開 |
ここではPDBごとのSGA状況の確認について説明します。
SGAのバッファキャッシュ状況確認
オブジェクトごとのバッファキャッシュ状況出力
PDBごとに、どの程度バッファキャッシュを使用しているかを確認するためにはV$BH表を利用します。V$BH表ではSGA内のバッファの状態を確認することが出来ます。
使用しているバッファキャッシュに搭載されているブロック数を使用オブジェクトごとに出力します。現在使用しているもののみ出力されます。
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)ごとのバッファキャッシュ状況出力
コンテナ毎に使用しているバッファサイズを出力します。
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ごとに集計可能です。
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
