遇到眼前事、不會就百度
要求如下:對接的部門需要用我們的數據做查詢,原本說好的接口,當我把接口查詢做出來後,文檔也寫完了之後,發給對接部門之後,屁事就來了,又要求分頁、有巴拉巴拉,我可QNMDB。本來對該部門對接就不想弄、原因是之前對接幾張表數據、給我發了400多頁的數據字典word文檔,關鍵是文檔還一點都不清晰。所以導致我一點想給他們弄的心思都沒有。
吐槽歸吐槽、思量下來,給他們建立一個數據庫用戶,只給他們查詢權限,且用戶下面不建立表了,直接將他們所需要的表分享到該用戶下,不需要添加用戶名就可以直接訪問,於是百度了下,oracle裏面也有個叫同義詞/synonyms
,網上給的理解是:進行大型系統開發時,往往會涉及到多個子系統的開發。爲了方便開發一般數據庫都會存在同一個數據庫實例中,方便數據共享。這種數據共享的方式在Oracle中叫"同義詞/synonyms"。
😋 這就很讚了:
有兩種方式創建:
第一種:直接新建
1.PL/SQL中的synonyms中右鍵新建
2.在彈出synonyms窗口中填寫相關信息
爲了別(害)出(人)心(害)裁(己)
同義詞可以取別的不相干的字符
3.創建成功,可以在本用戶下直接查詢其他用戶表
select * from “同義詞表名”
第二種:語句執行
用戶我是新建的:
- 所以 先登錄sys或者擁有dba權限用戶,創建用戶B(用戶名)
create user B identified by BB(密碼自行修改);
grant connect to B;
- 對用戶B要使用的A表進行授權,使得登錄B用戶可以訪問A的表
所有權限賦予:
grant all on A.TABLE to B;(此時登錄B用戶,可以使用A用戶的MMC表)。
單獨權限賦予:
grant select on A.TABLE TO B; (賦予查詢權限)
我這邊操作的時候只賦予了查詢的權限
- 這時候創建同義詞
create synonym B.TABLE for A.TABLE ;
舉個例子:我這邊想把用戶A的XZCF表分享給用戶B。
create synonym B.xz for A.xzxk;
我如果這麼執行的話,那我在用戶B下面查詢的表的時候,只能執行
select * from xz 纔可以查詢的到xzxk表
- 刪除同義詞
drop synonym B.TABLE;
- 查看所有同義詞
select * from dba_synonyms