过程中所引用的对象是否被经常修改?
主要排查方向ddl、alert、truncate
给表加字段,会导致相关视图等都失效。但调用时oracle会自动编译,大部分都会自动正常。
有编译不过去的会报错,比如procedure依赖的对象没有正常,procedure会显示失效。如果依赖对象正常了,编译就可以正常。
底层依赖对象失效,oracle不会触发让上层对象失效,所以procedure仍显示有效。但procedure实际调用时,要到底层依赖对象失效,不能自动编译底层对象使其正常有效,procedure会报错而且失效。重新执行或手动编译一般会正常。
正常使用的package调用对象底层依赖对象失效,自动编译时会有pin,可能会出现死锁。
重新执行或手动编译一般会正常。手动编译不能通过的要看具体错误原因了。
另外物化视图失效常见于非自动刷新物化视图,不影响其查询,可不关注。虽然compile使其有效,但主表数据变化,物化视图随即又失效。
重新编译肯定是文件被修改了,或者被删除了