无效对象-WWV_FLOW_HELP

xixuefeng ERR 2014-04-10 15:23:04 3,957 次浏览 无效对象-WWV_FLOW_HELP已关闭评论

一朋友的数据库刚刚安装完毕,准备投产上线,在例行检查时发现了一个失效对象,如下:

通过上面的内容,我们知道,这个失效对象是个public的同义词。既然是失效,理论上一定是同义词的源对象不存在或失效导致的,我们可以通过查看这个同义词的创建脚本来确定源对象是什么。

可以看到,是APEX_030200下的WWV_FLOW_HELP,那么这个又是什么呢?我们再通过dba_objects看看它的类型

哦,原来这个对象是不存在的。这也是为什么public synonym无效的原因,那么解决这个问题,只需要把APEX_030200下的WWV_FLOW_HELP创建上即可。

APEX_030200这个用户是干嘛用的?Oracle Application Express(APEX),这个用户应该是用于开发应用程序默认创建的用户,当然,我没用过这个东西,所以没什么发言权,只是在此简单介绍一下。

在$ORACLE_HOME目录下有相关的安装包。

由于APEX_030200用户是锁定的,那么在创建的时候,需要修改一下schema

查看对象状态

再次查看那个失效的同义词,它依旧失效

此时,只需要重新再创建一次那个同义词就可以了,创建完毕,已无失效对象

小结:

1)由于那个朋友对数据库不太了解,所以希望完美的编译成功。所以才有以上的操作。

2)我之前给的建议是把这个同义词删掉。或者执行一下@?/rdbms/admin/utlrp.sql这个脚本。这个脚本可以将数据库失效的对象编译一下,虽然APEX_030200的包不存在,重新编译也是能成功的。

3)如果不使用apex,那么可以考虑将其schema彻底删除,如下:

删除后,有个无效对象,将其也一并删除即可。

 

回顶部