2017-02-14 118 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;