2017-02-14 120 views
-4

我遇到问题。当我尝试使用特定名称创建私有同义词时(这应该与该名称完全相同) - 我收到错误消息,说明存在与该名称alredy的同义词。CANT创建或删除SYNONYM

查询:

CREATE SYNONYM FZ223_PPA.PURCHASE FOR FZ223_PURCHASE.PURCHASE; 

错误:

Error starting at line : 1 in command - 
CREATE SYNONYM FZ223_PPA.PURCHASE FOR FZ223_PURCHASE.PURCHASE 
Error report - 
SQL Error: ORA-00955: имя уже задействовано для существующего объекта 
00955. 00000 - "name is already used by an existing object" 
*Cause:  
*Action: 

但我无法找到具有该名称的模式我试图创造synonyn任何同义词。例如我想下面的查询

select count(*) from dba_synonyms where owner = 'FZ223_PPA' and synonym_name = 'PURCHASE' 

但它返回

enter image description here

最disapointing的事情是,当我尝试删除具有相同名称的模式 - 甲骨文给我的错误和“说'我试图删除的模式不存在。

查询:

DROP SYNONYM FZ223_PPA.PURCHASE 

错误:

Error starting at line : 1 in command - 
DROP SYNONYM FZ223_PPA.PURCHASE 
Error report - 
SQL Error: ORA-01434: отменяемый личный синоним пользователя не существует 
01434. 00000 - "private synonym to be dropped does not exist" 
*Cause:  
*Action: 

我不能uderstand为什么,以及如何解决它。我试图找到解决问题的办法,但一无所获。请帮帮我!

+3

这可能是一个表,视图或别的东西:' select * from all_objects where owner ='FZ223_PPA'and object_name ='PURCHASE'' –

+0

是的,我找到了同名的表!谢谢!很伤心Oracle DB命名空间系统在不同类型和名称相同的对象之间没有区别。 – IngeniousTom

回答

2

如果模式名称和对象名称为foo.bar的视图或表已存在,则不能创建同义词foo.bar。就这样。还有的在使用同义词具有相同的架构和对象名称作为它们指向的对象,真的没有一点...

如果你真正需要的代名词,你需要在不同的模式来创建它 - 其所有者可能不是,所以DBA必须授予您在不同模式中创建对象的权限。

希望这有助于...

+0

其实我在不同的架构中创建同义词。我在另一个模式'FZ223_PURCHASE'中为对象'PURCHASE'在模式'FZ223_PPA'中创建同义词'PURCHASE'。 – IngeniousTom

+0

这可能是一个同名的PUBLIC同义词已经存在。你可以搜索它吗?或尝试'选择计数(*)从public.PURCHASE'? – marcothesane

-2

ORA-01434:私有同义词被丢弃不存在

SOLUTION: -

DROP PUBLIC SYNONYM SYNONYM_NAME;