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

时间:2011-08-05 11:52:29

标签: oracle

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

2 个答案:

答案 0 :(得分:16)

你不能。

您可以做的最好的事情是为模式b中的每个表授予用户'select'权限。

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

select 'grant select on A.'||table_name||' to B;' 
from dba_Tables 
where owner = 'A';

问题在于,如果你想要将新表添加到A,那么你必须单独授予它的权限。它不会自动完成..

答案 1 :(得分: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;