Oracle同義詞(synonym)

oracle的同義詞總結

  從字面上理解就是別名的意思,和視圖的功能相似。就是一種映射關係。sql

  同義詞擁有以下好處:數據庫

  節省大量的數據庫空間,對不一樣用戶的操做同一張表沒有多少差異;
  擴展的數據庫的使用範圍,可以在不一樣的數據庫用戶之間實現無縫交互;
  同義詞能夠建立在不一樣一個數據庫服務器上,經過網絡實現鏈接。安全

  Oracle數據庫中提供了同義詞管理的功能。Oracle同義詞是數據庫方案對象的一個別名,常常用於簡化對象訪問和提升對象訪問的安全性。服務器

  在Oracle中對用戶的管理是使用權限的方式來管理的,也就是說,若是咱們想使用數據庫,咱們就必須得有權限,可是若是是別人將權限授予了咱們,咱們也是能對數據庫進行操做的,可是咱們必需要已受權的表的名稱前鍵入該表全部者的名稱,因此這就是比較麻煩的,遇到這種狀況,咱們該怎麼辦呢?建立個Oracle同義詞吧!這樣咱們就能夠直接使用同義詞來使用表了。網絡

1. 同義詞的概念

  Oracle數據庫中提供了同義詞管理的功能。同義詞是數據庫方案對象的一個別名,常常用於簡化對象訪問和提升對象訪問的安全性。在使用同義詞時,Oracle數據庫將它翻譯成對應方案對象的名字。與視圖相似,同義詞並不佔用實際存儲空間,只有在數據字典中保存了同義詞的定義。在Oracle數據庫中的大部分數據庫對象,如表、視圖、同義詞、序列、存儲過程、包等等,數據庫管理員均可以根據實際狀況爲他們定義同義詞。oracle

2. Oracle同義詞的分類

  Oracle同義詞有兩種類型,分別是公用Oracle同義詞與私有Oracle同義詞。分佈式

  • 公用Oracle同義詞:由一個特殊的用戶組Public所擁有。顧名思義,數據庫中全部的用戶均可以使用公用同義詞。公用同義詞每每用來標示一些比較普通的數據庫對象,這些對象每每你們都須要引用。
  • 私有Oracle同義詞:它是跟公用同義詞所對應,他是由建立他的用戶全部。固然,這個同義詞的建立者,能夠經過受權控制其餘用戶是否有權使用屬於本身的私有同義詞。

3. 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;

4. 查看全部同義詞:

  select * from dba_synonyms;

5. Oracle同義詞的做用

  • 多用戶協同開發中,能夠屏蔽對象的名字及其持有者。若是沒有同義詞,當操做其餘用戶的表時,必須經過user名.object名的形式,採用了Oracle同義詞以後就能夠隱蔽掉user名,固然這裏要注意的是:public同義詞只是爲數據庫對象定義了一個公共的別名,其餘用戶可否經過這個別名訪問這個數據庫對象,還要看是否已經爲這個用戶受權。
  • 爲用戶簡化sql語句。上面的一條其實就是一種簡化sql的體現,同時若是本身建的表的名字很長,能夠爲這個表建立一個Oracle同義詞來簡化sql開發。
  • 爲分佈式數據庫的遠程對象提供位置透明性。

6. Oracle同義詞在數據庫鏈中的做用

  數據庫鏈是一個命名的對象,說明一個數據庫到另外一個數據庫的路徑,經過其能夠實現不一樣數據庫之間的通訊:

  Create database link 數據庫鏈名 connect to 用戶名 identified by 口令 using ‘Oracle鏈接串’;

  訪問對象要經過object名@數據庫鏈名。同義詞在數據庫鏈中的做用就是提供位置透明性。

相關文章
相關標籤/搜索