從字面上理解就是別名的意思,和視圖的功能相似。就是一種映射關係。sql
同義詞擁有以下好處:數據庫
節省大量的數據庫空間,對不一樣用戶的操做同一張表沒有多少差異;
擴展的數據庫的使用範圍,可以在不一樣的數據庫用戶之間實現無縫交互;
同義詞能夠建立在不一樣一個數據庫服務器上,經過網絡實現鏈接。安全
Oracle數據庫中提供了同義詞管理的功能。Oracle同義詞是數據庫方案對象的一個別名,常常用於簡化對象訪問和提升對象訪問的安全性。服務器
在Oracle中對用戶的管理是使用權限的方式來管理的,也就是說,若是咱們想使用數據庫,咱們就必須得有權限,可是若是是別人將權限授予了咱們,咱們也是能對數據庫進行操做的,可是咱們必需要已受權的表的名稱前鍵入該表全部者的名稱,因此這就是比較麻煩的,遇到這種狀況,咱們該怎麼辦呢?建立個Oracle同義詞吧!這樣咱們就能夠直接使用同義詞來使用表了。網絡
Oracle數據庫中提供了同義詞管理的功能。同義詞是數據庫方案對象的一個別名,常常用於簡化對象訪問和提升對象訪問的安全性。在使用同義詞時,Oracle數據庫將它翻譯成對應方案對象的名字。與視圖相似,同義詞並不佔用實際存儲空間,只有在數據字典中保存了同義詞的定義。在Oracle數據庫中的大部分數據庫對象,如表、視圖、同義詞、序列、存儲過程、包等等,數據庫管理員均可以根據實際狀況爲他們定義同義詞。oracle
Oracle同義詞有兩種類型,分別是公用Oracle同義詞與私有Oracle同義詞。分佈式
建立公有Oracle同義詞的語法:ide
create [public] synonym 同義詞名稱 for [username.]objectName; spa
create public synonym table_name for user.table_name;翻譯
其中第一個user_table和第二個user_table能夠不同。
此外若是要建立一個遠程的數據庫上的某張表的同義詞,須要先建立一個Database Link(數據庫鏈接)來擴展訪問,而後在使用以下語句建立數據庫同義詞:
create synonym table_name for table_name@DB_Link;
固然,你可能須要在user用戶中給當前用戶(user2)受權:
grant select/delete/update on user2;
select * from dba_synonyms;
數據庫鏈是一個命名的對象,說明一個數據庫到另外一個數據庫的路徑,經過其能夠實現不一樣數據庫之間的通訊:
Create database link 數據庫鏈名 connect to 用戶名 identified by 口令 using ‘Oracle鏈接串’;
訪問對象要經過object名@數據庫鏈名。同義詞在數據庫鏈中的做用就是提供位置透明性。