【ORACLE】マテビューの元になるオブジェクト情報


マテビューのもとになるオブジェクト情報が「USER_MVIEW_DETAIL_RELATIONS」というシステム表?で見れる

例えばマテビューAの元オブジェクト情報が見たいときは

  
select DETAILOBJ_NAME,DETAILOBJ_TYPE from USER_MVIEW_DETAIL_RELATIONS WHERE MVIEW_NAME = 'A'  

という感じ。結果として↓のように返ってくる。

DETAILOBJ_NAMEDETAILOBJ_TYPE
BTABLE
つまりマテビューAはテーブルBから作られていますよ、ということがわかる。

ただし経験則的には以下の点に課題がある。
1.複数テーブルから作成されているマテビューの場合は、レコードは返ってくるがDETAILOBJ_NAMEがNULLになる。
2.「マテビューのマテビュー」の場合はDETAILOBJ_TYPEが「TABLE」の行と「MATERIALIZED VIEW」の行が2行返ってくる
2.はともかく1.が結構厄介である。
明細のようにして全部返してくれりゃいうことないんだが。
まあ副問い合わせとかFunctionとか使ってゴチャゴチャしてるマテビューもあるだろうし、
判断するのも難しいそうだから仕方ない。

上記のような課題もあるので、比較的簡単・単純な構造のマテビューじゃない限り、
「USER_MVIEW_DETAIL_RELATIONS」を見ただけでは元オブジェクトの情報は判断できない。
厳密にはUSER_MVIEWS.QUERYを見るのが確実ということだろう。

ちょっとした情報を得るためだけならこれでも十分なので、そのメモとして残す。