Oracle查询指定用户有权限的全部表
Oracle查询指定用户有权限的所有表
在Oracle使用过程中经常会用到查看当前或者指定用户对哪些表拥有权限,一下几种方法可以实现查看当前或者指定用户对哪些表拥有权限。
方法1:
根据指定用户名获得对应用户所拥有权限的表
- SQL> SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT';
- TABLE_NAME OWNER
- ------------------------------ ------------------------------
- DEPT SCOTT
- EMP SCOTT
- BONUS SCOTT
- SALGRADE SCOTT
SQL> SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT'; TABLE_NAME OWNER ------------------------------ ------------------------------ DEPT SCOTT EMP SCOTT BONUS SCOTT SALGRADE SCOTT
方法2:
通过tab视图获得当前登录用户所有表和视图,通过tabletype过滤获得所有表
- SQL> SELECT * FROM tab WHERE tabtype = 'TABLE';
- TNAME TABTYPE CLUSTERID
- ------------------------------ ------- ----------
- DEPT TABLE
- EMP TABLE
- BONUS TABLE
- SALGRADE TABLE
SQL> SELECT * FROM tab WHERE tabtype = 'TABLE'; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE
方法3:
根据user_tables表获得当前用户拥有所有表
- SQL> SELECT table_name FROM user_tables;
- TABLE_NAME
- ------------------------------
- DEPT
- EMP
- BONUS
- SALGRADE
SQL> SELECT table_name FROM user_tables; TABLE_NAME ------------------------------ DEPT EMP BONUS SALGRADE
方法4:
根据sys表空间下all_object表获得指定用户指定类型对象(表)
- SQL> SELECT object_name FROM sys.all_objects WHERE owner='SCOTT' AND object_type='TABLE';
- OBJECT_NAME
- ------------------------------
- DEPT
- EMP
- BONUS
- SALGRADE
SQL> SELECT object_name FROM sys.all_objects WHERE owner='SCOTT' AND object_type='TABLE'; OBJECT_NAME ------------------------------ DEPT EMP BONUS SALGRADE
以上4中方式可以根据实际情况随意使用,已达到使用目的。