用戶: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 ;