授予从一个特定模式中选择任何表的权限

时间:2019-10-31 14:32:12

标签: oracle plsql toad

我刚刚为开发人员@ oracle数据库11.2.0.4创建了一个新的只读用户(TEMPDBREAD)

现在,他们喜欢仅从一个模式(TEMPDBUSER)对所有表的读取访问权限
有没有选择授予任何表的替代方法。 他们应该无法阅读其他方案。但是由于表结构经常更改,因此很难手动证明所有内容。

这就是为什么选择任何表都可以非常快速,轻松地获得奖励的原因 我还能拒绝访问其他方案吗?

任何想法我都可以解决这个非常简单的问题吗?

朱利安(BR Julian)

手动授予表访问权限 授予选择任何表

2 个答案:

答案 0 :(得分:1)

不。您可以给他们select any table并让他们读取数据库中的任何表,也可以给他们单独访问TempDBUser中的每个表的权限。在绝大多数情况下,您希望向他们授予TempDBUser中每个表的访问权限(大概是通过一个角色,因为会有很多需要运行查询的开发人员帐户)。

我尚不清楚为什么授予对象级访问权限对您来说会成问题。 “表结构更改”不需要新的授权,因为它们只是对现有对象的更改。如果您真的要经常创建新表,那么您只想将这些授权纳入您的变更控制和部署过程中即可。

如果您有一个打包的应用程序来定期创建新表(这是很糟糕的做法),则可以创建一个DDL触发器,该触发器每次在TempDBUser中创建新表时都会发出授权。您需要一个DDL触发器,该触发器通过dbms_job软件包提交了一份工作,该软件包完成了实际的授权,这是一个相当复杂的体系结构,但是可以工作。

答案 1 :(得分:0)

    spool /tmp/grant_issue.sql
    select 'grant select on TEMPDBUSER.' || table_name || ' TO TEMPDBREAD;' from dba_tables  where owner='TEMPDBUSER' ;
    spool off;

    run the spool file.

    sqlplus @/tmp/grant_issue.sql