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

删除不了同义词,求大神
数据库实例名:PWMIS_DB 两个用户名:jazz和pwmis
jazz和pwmis用户名下有个相同的DBlink:PW2DPS

jazz用户下建了个同义词:
create or replace synonym DPS_ISOLATION_TYPE
  for DPS_ISOLATION_TYPE@PW2DPS;

pwmis用户下建了个同义词:
create or replace synonym DPS_ISOLATION_TYPE
  for jazz.DPS_ISOLATION_TYPE@PW2DPS;

现在没有DPS_ISOLATION_TYPE这张实表,在正常的情况下应该是jazz有这张表,但是我在pwmis下建同义词的时候忘记jazz那里已经有个相同的同义词,所以在pwmis下面的同义词References目录下是引用了jazz的同义词。现在两个同义词删也删不掉,修改液修改不了,一删除整个PL/SQL就没有响应了。不知道有没有人遇到过这样的情况。这个数据库不能重启,没有DBA账户。我想删了jazz下的同义词建一张实表。求大神。。。。。。。。。。。。。。。
------最佳解决方案--------------------
有可能有正在运行的过程或其它正在引用这同义词,造成删除不了,让dba查一下
------其他解决方案--------------------
在两个用户下,用

select * from user_synonyms

列出同义词,看看之间的引用关系。
------其他解决方案--------------------
用jazz和pwmis分别登陆,然后分别执行 drop synonym jazz.DPS_ISOLATION_TYPE ;
 drop synonym pwmis.DPS_ISOLATION_TYPE ;
------其他解决方案--------------------
drop synonym DPS_ISOLATION_TYPE force;

------其他解决方案--------------------
或者用 drop public synonym pwmis.DPS_ISOLATION_TYPE 试一试;
------其他解决方案--------------------
执行了还是一直在运行状态。我们公司一个老员工说可能是造成了一个死循环的状况了。
------其他解决方案--------------------
同义词自己引用自己,这个导致循环引用,进入死循环没碰到过这种问题。

是否有人碰到过类似问题呢?

------其他解决方案--------------------
引用:
用jazz和pwmis分别登陆,然后分别执行 drop synonym jazz.DPS_ISOLATION_TYPE ;
 drop synonym pwmis.DPS_ISOLATION_TYPE ;

您好,我使用了您说的方法,但是SQL执行的时候一直是执行状态。情况可能也是和直接右键drop一样吧
------其他解决方案--------------------
引用:
有可能有正在运行的过程或其它正在引用这同义词,造成删除不了,让dba查一下

你好,现在的问题就是jazz用户下的同义词被pwmis用户下的同义词引用了。两个都删不掉了
------其他解决方案--------------------
引用:
在两个用户下,用

select * from user_synonyms

列出同义词,看看之间的引用关系。

你好,引用的关系就如我上面所说的,一个同义词引用了另一个同义词。