情况是我有两个模式:A和B.我有一个受限制的用户,我需要给予特权在B模式中执行SELECT查询。我该如何授予此用户权限?
答案 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;