Oracle中的同義詞synonym

2021-07-23 09:28:55 字數 2553 閱讀 2493

一、同義詞概念

oracle的同義詞(synonyms)從字面上理解就是別名的意思,和檢視的功能類似,就是一種對映關係。它可以節省大量的資料庫空間,對不同使用者的操作同一張表沒有多少差別;它擴充套件了資料庫的使用範圍,能夠在不同的資料庫使用者之間實現無縫互動;oracle資料庫中提供了同義詞管理的功能。同義詞是資料庫物件的乙個別名,經常用於簡化物件訪問和提高物件訪問的安全性。在使用同義詞時,oracle資料庫將它翻譯成對應方案物件的名字。與檢視類似,同義詞並不占用實際儲存空間,只有在資料字典中儲存了同義詞的定義。在oracle資料庫中的大部分資料庫物件,如表、檢視、物化檢視、序列、函式、儲存過程、包、同義詞等等,資料庫管理員都可以根據實際情況為他們定義同義詞。

二、同義詞分類

oracle同義詞有兩種型別,分別是oracle公用同義詞與oracle私有同義詞。普通使用者建立的同義詞一般都是私有同義詞,公有同義詞一般由dba建立,普通使用者如果希望建立同義詞,則需要create public synonym這個系統許可權。

1)oracle公用同義詞:由乙個特殊的使用者組public所擁有。顧名思義,資料庫中所有的使用者都可以使用公用同義詞。公用同義詞往往用來標示一些比較普通的資料庫物件,這些物件往往大家都需要引用。

2)oracle私有同義詞:它是跟公用同義詞所對應,他是由建立他的使用者所有。當然,這個同義詞的建立者,可以通過授權控制其他使用者是否有權使用屬於自己的私有同義詞。

三、同義詞作用

1) 多使用者協同開發中,可以遮蔽物件的名字及其持有者。如果沒有同義詞,當操作其他使用者的表時,必須通過user名.object名的形式,採用了oracle同義詞之後就可以隱蔽掉user名,當然這裡要注意的是:public同義詞只是為資料庫物件定義了乙個公共的別名,其他使用者能否通過這個別名訪問這個資料庫物件,還要看是否已經為這個使用者授權。

2) 為使用者簡化sql語句。上面的一條其實就是一種簡化sql的體現,同時如果自己建的表的名字很長,可以為這個表建立乙個oracle同義詞來簡化sql開發。比如,如果你的資料庫有多個使用者,user_a要訪問user_b的table1,只能使用user_b.table1,建乙個同義詞abc指向user_b.table1,那你就可以select * from abc了,而且public的同義詞會直接出現在所有使用者的面前,開發不就方便多了

3)為分布式資料庫的遠端物件提供位置透明性。

4)oracle同義詞在資料庫鏈結中的作用

資料庫鏈結是乙個命名的物件,說明乙個資料庫到另乙個資料庫的路徑,通過其可以實現不同資料庫之間的通訊。

create database link 資料庫鏈名 connect to user名 identified by 口令 using 『oracle連線串』; 訪問物件要通過 object名@資料庫鏈名。同義詞在資料庫鏈中的作用就是提供位置透明性。

四、同義詞許可權管理

1、建立同義詞synonym

作用:可以隱藏表原來的資訊

分為:私有同義詞 公共同義詞

//給表t_user建立乙個私有同義詞

create synonym my_test

for t_user;         

//給使用者briup授權可以查詢my_test

grant select  

on my_test  

to briup;  

//收回使用者briup查詢my_test的許可權

revoke select  

on my_test  

from briup;         

//利用資料字典檢視同義詞synonyms

//使用者建立的同義詞有哪些

select synonym_name

from user_synonyms;

//使用者有權利查詢的同義詞有哪些

select synonym_name

from all_synonyms;

//使用者有權利查詢的同義詞有哪些是以字母d開頭的

//注意:表中的資料都是大寫存在

select synonym_name

from all_synonyms

where synonym_name like 'd%';

結果可以看到我們常用的dual

2.刪除同義詞synonym

drop synonym name;

例如:刪除私有同義詞

drop synonym my_test;

刪除公共同義詞

drop public synonym your_test;    

3.公共的同義詞

因為普通使用者沒有建立public synonym的許可權,所以我們需要用dba的身份登入到資料庫中去建立。

sqlplus "/as sysdba"或者system使用者登入

create public synonym your_test

for test.t_user;

注:test.t_user表示的是test使用者下面的t_user表

//讓所有人都有查詢這個同義詞的許可權

grant select on your_test to public;

然後其他使用者登入之後就可以通過這個公共的同義詞來查詢test使用者下面的t_user表了

Oracle的同義詞

oracle中建立同義詞語句 create synonym table name foruser.table name 其中第乙個user table和第二個user table可以不一樣。此外如果要建立乙個遠端的資料庫上的某張表的同義詞,需要先建立乙個databaselink 資料庫連線 來擴充套...

Oracle的同義詞

oracle的同義詞 oracle的同義詞 synonyms 從字面上理解就是別名的意思,和試圖的功能類似,就是一種對映關係。本文介紹如何建立同義詞語句,刪除同義詞以及檢視同義詞語句。oracle的同義詞總結 從字面上理解就是別名的意思,和試圖的功能類似。就是一種對映關係。1.建立同義詞語句 cre...

oracle中同義詞筆記

oracle同義詞的作用 1 多使用者協同開發中,可以遮蔽物件的名字及其持有者。如果沒有同義詞,當操作其他使用者的表時,必須通過user名.object名的形式,採用了oracle同義詞之後就可以隱蔽掉user名,當然這裡要注意的是 public同義詞只是為資料庫物件定義了乙個公共的別名,其他使用者...