現在メモリー上にあるオブジェクトを特定する

Pocket

【概要】
ユーザーが使用するオブジェクト(表や索引など)は、基本的にメモリー上(データベース・バッファ・キャッシュ)
にキャッシングされます。
このキャッシュに置かれたオブジェクトを見ると、現在Oracleでどのような処理が行われているか推測できます。
こうしたメモリー上のオブジェクトのブロックに関する情報を取得するのがV$CACHEビューです。
【SQL文】
/*
|| ■現在メモリー上にあるオブジェクトを特定する
||
|| 【項目の説明】
|| OWNER_NAME :データ・オブジェクトに関する情報要求の合計件数
|| OBJECT_NAME :結果的にキャッシュ・ミスになったデータ要求数
|| OBJECT_TYPE :データベース・キャッシュ・ヒット率(%)
|| ALL_COUNT :
|| XCUR :ブロックの状態が「排他」
|| SCUR :ブロックの状態が「共有カレント」
|| CR :ブロックの状態が「読取り一貫性」
|| PI :ブロックの状態が「RACキャッシュ・フュージョンによる
||  ブロック転送元の過去のブロック・イメージ」
*/
set lines 80
set pages 10

clear col
ttitle off

col OWNER_NAME for a10
col OBJECT_NAME for a15
col OBJECT_TYPE for a10
col ALL_COUNT for 999,999
col XCUR for 999,999
col SCUR for 999
col CR for 999
col PI for 999

ttitle left ‘■■■ キャッシュ・オブジェクト情報 ■■■’
spool cacheobj_info.lis

SELECT u.username OWNER_NAME
, c.name OBJECT_NAME
, c.kind OBJECT_TYPE
,COUNT(*) ALL_COUNT
,SUM(DECODE(c.status, ‘xcur’, 1, 0) XCUR
,SUM(DECODE(c.status, ‘scur’, 1, 0) SCUR
,SUM(DECODE(c.status, ‘cr’, 1, 0) CR
,SUM(DECODE(c.status, ‘pi’, 1, 0) PI
FROM v$cache c, dba_users u
WHERE c.owner# <> 0
AND c.owner# = u.user_id
;
spool off
clear col
ttitle off
set line 80

以上です (^^♪