Oracle,对除 1 之外的任何 table 授予 select

Oracle, grant select on any table except 1

我想让用户访问我的数据库中的所有 table,但 1 table 除外,例如 'MY_SECRET_TABLE'。 我的解决方案目前不起作用...:[=​​13=]

Grant select any table to public;
Grant select any table to MY_USER;
Revoke all on MY_SECRET_TABLE from MY_USER;

但我仍然可以访问 table。 我做错了什么吗?

谢谢,

GRANT SELECT ON ANY TABLE 是一个非常强大的权限,因此您可能需要重新考虑您的策略。

无论如何,我看到的唯一解决方案是使用行级安全性,这样除了 MY_USER 之外的任何人都可以 select table 但不会返回任何行。

听起来怎么样?

一种方法是通过 SQL

获得可执行授权
SELECT   'GRANT SELECT ON ' || object_name || ' TO USERNAME;'
FROM     user_objects
WHERE    object_type = 'TABLE' AND object_name != 'EXCEPT_THIS_TABLE'
ORDER BY object_name;