SELECT * FROM SYS.ALL_SYNONYMS WHERE SYNONYM_NAME='S'.里面有同義詞的表與用戶
創(chuàng)新互聯(lián)-云計算及IDC服務(wù)提供商,涵蓋公有云、IDC機房租用、溫江服務(wù)器租用、等保安全、私有云建設(shè)等企業(yè)級互聯(lián)網(wǎng)基礎(chǔ)服務(wù),聯(lián)系電話:13518219792
1.你可能需要在user用戶中給當前用戶(user2)授權(quán): grant select/delete/update on user2
創(chuàng)建同義詞:
create public synonym table_name for user.table_name;
2.刪除同義詞:
drop public synonym table_name;
3.查看所有同義詞:
select * from dba_synonyms
alias(別名),比如把user1.table1在user2中建一個同義詞table1
create synonym table1 for user1.table1;
這樣當你在user2中查select * from table1時就相當于查select * from user1.table1;
優(yōu)點自己總結(jié)吧。
例如:
在oracle中對用戶的管理是使用權(quán)限的方式來管理的,也就是說,如果我們想使用數(shù)據(jù)庫,我們就必須得有權(quán)限,但是如果是別人將權(quán)限授予了我們,我們也是能對數(shù)據(jù)庫進行操作的,但是我們必須要已授權(quán)的表的名稱前鍵入該表所有者的名稱,所以這就是比較麻煩的,遇到這種情況,我們該怎么辦呢?創(chuàng)建個同義詞吧!這樣我們就可以直接使用同義詞來使用表了。
對另一個數(shù)據(jù)對象而言同義詞是一個別名。public同義詞是針對所有用戶的,相對而言private同義詞則只針對對象擁有者或被授予權(quán)限的賬戶。在本地數(shù)據(jù)庫中同義詞可以表示表、視圖、序列、程序、函數(shù)或包等數(shù)據(jù)對象,也可以通過鏈接表示另一個數(shù)據(jù)庫的對象。
創(chuàng)建同義詞語法如下:
CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] object[@db_link];
例:
CREATE PUBLIC SYNONYM policies FOR poladm.policies@prod;
CREATE SYNONYM plan_table FOR system.plan_table;
Oracle的同義詞(synonyms)從字面上理解就是別名的意思,和視圖的功能類似,就是一種映射關(guān)系。它可以節(jié)省大量的數(shù)據(jù)庫空間,對不同用戶的操作同一張表沒有多少差別;它擴展了數(shù)據(jù)庫的使用范圍,能夠在不同的數(shù)據(jù)庫用戶之間實現(xiàn)無縫交互;Oracle數(shù)據(jù)庫中提供了同義詞管理的功能。同義詞是數(shù)據(jù)庫對象的一個別名,經(jīng)常用于簡化對象訪問和提高對象訪問的安全性。在使用同義詞時,Oracle數(shù)據(jù)庫將它翻譯成對應(yīng)方案對象的名字。與視圖類似,同義詞并不占用實際存儲空間,只有在數(shù)據(jù)字典中保存了同義詞的定義
創(chuàng)建同義詞
CREATE SYNONYM SYSN_TEST FOR TEST;
查看同義詞
SELECT * FROM USER_SYNONYMS
使用同義詞
SELECT * FROM SYSN_TEST;
刪除同義詞
DROP SYNONYM SYSN_TEST;
1.@dblink是你要查詢的同義詞對應(yīng)的database link。
2.表名是在db link里的表名,不是在你庫中同義詞里的表名,如下圖:不是S_SALES_BLL,而是B_SALES_ALL。
3.表名區(qū)分大小寫。PS:表名如果是大寫,你寫小寫,那就查詢結(jié)果為空。