我需要授予用户 TARGETUSER 选择/插入/更新用户 SOURCEUSER 的所有表的权限(我可以从here https://stackoverflow.com/questions/187886/grant-select-on-all-tables-owned-by-specific-user)以及运行所有存储过程的能力。
基本上,如果我可以为 TARGETUSER 提供使用 SOURCE_USER 对象进行所有非 ddl 活动的能力,我不会抱怨。我该怎么做呢?
您可以编写一个简单的过程来执行此操作:
BEGIN
FOR Rec IN (SELECT object_name, object_type FROM all_objects WHERE owner='SOURCEUSER' AND object_type IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')) LOOP
IF Rec.object_type IN ('TABLE','VIEW') THEN
EXECUTE IMMEDIATE 'GRANT SELECT, UPDATE, INSERT, DELETE ON SOURCEUSER.'||Rec.object_name||' TO TARGETUSER';
ELSIF Rec.object_type IN ('PROCEDURE','FUNCTION','PACKAGE') THEN
EXECUTE IMMEDIATE 'GRANT EXECUTE ON SOURCEUSER.'||Rec.object_name||' TO TARGETUSER';
END IF;
END LOOP;
END;
不确定您还要求什么。您可以修改上述内容,为要提供给 targetuser 的权限添加额外的授予和/或 object_types。正如 @stili 所暗示的,您可以使用角色做很多事情,但要小心 - 有些权限在通过角色授予时不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)