Insight Technology, Inc

インサイトテクノロジー

Japanese | English

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,は非常に重要である。