开发过程中,我们经常碰到这样的问题,一个好好的程序某一天忽然报错了。
重新编译,发现程序里引用的某个对象不存在或表结构被改了,往往是在团队合作时,由于业务需要某个成员修改了结构,但是不清楚哪些地方引用了这个对象,因此没有处理好善后工作,最后搞得焦头烂额。
事实上,ORACLE提供了细粒度依赖的数据字典*_dependencies,可以找出引用关系来解决这个麻烦。
先看下数据字典的结构:
从表结构可以看出,这个视图里包含了对远程数据库对象的引用关系,以下是我的一个数据库下面远程对象的引用关系:
下图是我的一个生产数据库中对象类型的引用矩阵,这是实际用到的引用关系,并不涵盖Oracle支持的所有引用关系。
其中DEPENDENCY_TYPE分为HARD和REF两种,对于这2种类型的解释是REF for REF dependency HARD otherwise(引用关系是REF,其余都是HARD)。
了解了这个数据字典以后,我们就会经常用到2个查询:
1.查找哪些对象依赖于(引用了&