Oracle賦予用戶查詢另一個用戶所有表的權限


用戶:UserA,UserB

場景:用戶UserA只有用戶UserB指定表的查詢權限。

解決方案:

1.給他一些權限,包括連接權限,因為他要創建同義詞,還需要給他同義詞

grant connect to UserA;
grant create synonym to UserA;
grant create session to UserA;

2.因為需要把UserB的所有表的查詢權限給UserA。所以需要所有表的grant select on table_name to UserA語句,不可能一句一句去寫,因此用select 吧所有的grant語句查出來直接執行

select 'grant select on '||owner||'.'||object_name||' to UserA;'
from dba_objects
where owner in ('UserB')
and object_type='TABLE';

把所有結果復制出來,在UserB 下執行一遍

grant select on UserB.Table1 to UserA;

grant select on UserB.Table2 to UserA;

grant select on UserB.Table3 to UserA;

3.需要給UserB用戶下所有表創建同義詞,但是考慮到之前已經創建過一些表的同義詞,因此把所有創建同義詞的語句select出來在UserA用戶下執行。

SELECT 'create or replace SYNONYM UserA. ' || object_name|| ' FOR ' || owner || '.' || object_name|| ';'
from dba_objects
where owner in ('UserB')
and object_type='TABLE';

把所有結果復制出來登錄UserA用戶執行

create or replace SYNONYM  UserA. T_KDXF_ACCOUNT FOR UserB.Table1 ;

create or replace SYNONYM  UserA. T_KDXF_ACCOUNT FOR UserB.Table2 ;

create or replace SYNONYM  UserA. T_KDXF_ACCOUNT FOR UserB.Table3 ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM