日期:2014-05-17  浏览次数:20880 次

删除同义词报错
我本来有一些同义词指向某个用户下相应的表,这个用户我现在不用了,于是就先删除该用户,然后再试图删除同义词,就报错了:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist

请问有没有什么办法删除这些同义词?或者重建它们,使其指向存在的用户下相应的表?
谢谢!

------解决方案--------------------
create or replace synonym 不可以重建吗?
------解决方案--------------------
是否可以这样,先重建,将原先指向删除用户的表或视图换成其他表,然后在drop掉该同义词?
------解决方案--------------------
数据库版本是多少?

oracle 11g里面已经没有这个情况了.
------解决方案--------------------
我用10g版本试了下,先drop user,再drop别的user定义在该user下的对象的synonym没问题。

你做个drop synonym时的sql trace.贴出来。看看错误发生在哪一步。
------解决方案--------------------
到Console里删
------解决方案--------------------
synonym创建的时候,不会去做对象有效的检查,应该drop的时候也不会去做吧。
------解决方案--------------------
探讨
to vc555:我建的是public synonym。比如基于user1用户下tab1建的public synonym tab1,你可以先drop user1,然后再drop public synonym tab1试试看。