如何授予特定架构的用户权限?

kse*_*een 5 oracle

情况是我有两个模式:A和B.我有一个受限制的用户,我需要给予特权在B模式中执行SELECT查询而只是它.我该如何授予此用户权限?

Nim*_*rod 16

你不能.

您可以做的最好的事情是为模式b中的每个表授予用户"选择"权限.

此查询将生成您需要的命令:

select 'grant select on A.'||table_name||' to B;' 
from dba_Tables 
where owner = 'A';
Run Code Online (Sandbox Code Playgroud)

这样的问题是,如果你想要将新表添加到A,那么你必须单独授予它的权限.它不会自动执行..


Kev*_*ton 8

您可能会发现您无权访问dba_tables,在拥有架构(a)中运行的以下代码块将向所有表授予对用户b的权限

BEGIN
    FOR t IN (SELECT * FROM user_tables) 
    LOOP   
        EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.table_name || ' TO b';    
    END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)