7日以内に変更されたオブジェクトとそのオブジェクトが参照(依存)するオブジェクトの一覧
select o.owner OWNER,o.object_name CHANGED_OBJ,o.object_type TYPE
,o.created CERATED_TIME,o.last_ddl_time CHANGED_TIME,o.status STATUS
,o2.owner REF_OWNER,o2.object_name REF_OBJ,o2.object_type REF_TYPE,
o2.status REF_STATUS
from dba_objects o, dba_objects o2, dependency$ d
where o.last_ddl_time >= sysdate-7
and o.owner not in ('SYS','SYSTEM')
and d.d_obj# = o.object_id
and d.p_obj# = o2.object_id
and o.object_name != o2.object_name
and o2.owner != 'SYS';
- ポイント
-
例えば、トリガーなどは、その中で参照している表などをDROPした時点で、そのトリガーは無効となる(dba_objectsのstatusはINVALIDになる)。
DROPしたテーブルを再作成した後も、そのトリガーなどはINVALIDのままなので、COMPILEする必要がある。
このように、トリガーなどを扱う場合には、依存関係があるので、依存関係の情報が格納されているdependency$あるいはdba_dependencies,は非常に重要である。