如何在一个角色的所有表上找到缺失的授权

How to find missing grant on all tables for one role

我的学生数据库架构有一些问题。我想通过查询查找哪些表没有:例如 'SELECT' 授予角色 XXX。第二个例子是,在表中,我喜欢删除、更改的授权,但现在我想用一个查询检查所有表,以查找哪些表没有 Select 授予角色 'STUDENT_DBA' 或这个角色在哪里没有 Select 的资助... 请帮助

SELECT table_name
  FROM dba_tables
 WHERE owner = 'STUDENT'
 AND table_name NOT IN
     (SELECT table_name
        FROM dba_tab_privs
       WHERE owner = 'STUDENT'
         AND privilege = 'SELECT'
         AND grantee = 'STUDENT_DBA');

这将 return STUDENT 架构中没有 select 权限的所有表直接 授予 STUDENT_DBA 角色。