Oracle 中的 同義詞(synonym)

(一)同義詞的概念

同義詞是數據庫中表、視圖、序列、過程、函數、程序包、物化視圖、Java類模式對象、用戶定義對象類型,或另一個同義詞的別名。與視圖相似,同義詞不佔用實際的存儲空間,在數據字典中只存同義詞的定義。

在開發數據庫時,應儘量避免直接引用表、視圖或其他數據庫對象,否則,當表的結構發生了改變,就會影響應用程序的使用,這個時候需要重新編譯程序,如果爲數據庫對象創建了同義詞,就可以在程序中使用同義詞,這樣表的結構發生變化,也不會影響到應用程序。此外,運用同義詞還可以隱藏數據庫對象名稱以及對象所有者的信息,還可以簡化對數據庫對象的訪問。

(二)同義詞分類

同義詞分爲私有同義詞和公有同義詞,私有同義詞只能被創建它的用戶擁有,該用戶可以控制其他用戶對其同義詞的使用權。公有同義詞被用戶組PUBLIC所擁有,數據庫所有用戶都可以使用公有同義詞。

(三)同義詞相關權限

(1)系統權限:

SYSTEM PRIVILEGE MARK
CREATE SYNONYM 在當前Schema中創建私有同義詞。同時可以修改、刪除同義詞
CREATE PUBLIC SYNONYM 在當前 Schema中創建公有同義詞
CREATE ANY SYNONYM 在任意Schema中創建私有同義詞
DROP ANY SYNONYM 刪除任意Schema中的私有同義詞
DROP PUBLIC SYNONYM 刪除當前Schema中的公有同義詞

(2)對象權限

無(不確定)

(四)同義詞的使用

(1)創建同義詞

1

CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ schema. ]synonym FOR [ schema. ]object [ @ dblink ];

(2)使用同義詞

用戶可以使用自己Schema中的同義詞,也可以使用PUBLIC同義詞,還可以使用其他Schema中的同義詞,但是用戶還必須具有與同義詞對應的數據庫對象的操作權限。

(3)刪除同義詞

1

DROP [PUBLIC] SYNONYM synonym_name

*用戶可以刪除自己Schema下的私有同義詞,要刪除公有同義詞,需具有DROP PUBLIC SYNONYM權限,要刪除其它Schema中的同義詞,需要具有DROP ANY SYNONYM權限。

(5)與同義詞相關的數據字典

VIEW MARK
DBA_SYNONYMS 查看數據庫全部同義詞
ALL_SYNONYMS 查看當前用戶可以看到的全部同義詞
USER_SYNONYMS 查看當前用戶擁有的同義詞

分類: Oracle

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章