一、同義詞概念
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同義詞只是為資料庫物件定義了乙個公共的別名,其他使用者...