Oracle查询指定用户有权限的全部表

Oracle查询指定用户有权限的所有表

在Oracle使用过程中经常会用到查看当前或者指定用户对哪些表拥有权限,一下几种方法可以实现查看当前或者指定用户对哪些表拥有权限。

 

方法1:

根据指定用户名获得对应用户所拥有权限的表

Sql代码 Oracle查询指定用户有权限的全部表 Oracle查询指定用户有权限的全部表Oracle查询指定用户有权限的全部表
  1. SQL> SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT';   
  2.     
  3. TABLE_NAME        OWNER   
  4. ------------------------------ ------------------------------  
  5. DEPT                      SCOTT   
  6. EMP                        SCOTT   
  7. BONUS                   SCOTT   
  8. SALGRADE             SCOTT  

 

方法2:

通过tab视图获得当前登录用户所有表和视图,通过tabletype过滤获得所有表

Sql代码 Oracle查询指定用户有权限的全部表 Oracle查询指定用户有权限的全部表Oracle查询指定用户有权限的全部表
  1. SQL> SELECT * FROM tab WHERE tabtype = 'TABLE';   
  2.     
  3. TNAME                   TABTYPE  CLUSTERID   
  4. ------------------------------ ------- ----------   
  5. DEPT                      TABLE    
  6. EMP                        TABLE    
  7. BONUS                   TABLE    
  8. SALGRADE             TABLE   

 

方法3:

根据user_tables表获得当前用户拥有所有表

Sql代码 Oracle查询指定用户有权限的全部表 Oracle查询指定用户有权限的全部表Oracle查询指定用户有权限的全部表
  1. SQL> SELECT table_name FROM user_tables;   
  2.     
  3. TABLE_NAME   
  4. ------------------------------   
  5. DEPT   
  6. EMP   
  7. BONUS   
  8. SALGRADE  

 

方法4:

根据sys表空间下all_object表获得指定用户指定类型对象(表)

Sql代码 Oracle查询指定用户有权限的全部表 Oracle查询指定用户有权限的全部表Oracle查询指定用户有权限的全部表
  1. SQL> SELECT object_name FROM sys.all_objects WHERE owner='SCOTT' AND object_type='TABLE';   
  2.     
  3. OBJECT_NAME   
  4. ------------------------------   
  5. DEPT   
  6. EMP   
  7. BONUS   
  8. SALGRADE  

 

以上4中方式可以根据实际情况随意使用,已达到使用目的。