目录
- 用户数据库对象
- 用户权限查询
- 查询约束
- 查看过程、函数、触发器
用户数据库对象
USER_TABLES select table_name, tablespace_name from user_tables; USER_OBJECTS select object_name, object_type, status from user_objects; USER_CATALOG select * from catalog;
显示所有用户数据字典视图 select view_name from all_views where view_name like 'USER%';
用户权限查询
与权限有关的数据字典 SESSION_PRIVS //用户当前会话拥有的系统权限 USER_ROLE_PRIVS //用户被授予的角色 ROLE_SYS_PRIVS //用户当前拥有的角色的系统权限 USER_SYS_PRIVS //直接授予用户的系统权限
USER_TAB_PRIVS //授予用户的对象权限 包含了当前用户给其他用户的对象权限和其他用户给当前用户的对象权限 ROLE_TAB_PRIVS //授予角色的表的权限
USER_TAB_PRIVS_RECD //其他用户给当前用户的对象权限 USER_TAB_PRIVS_MADE //当前用户给其他用户的对象权限 USER_COL_PRIVS_MADE //在用户对象列一级上被分配的对象权限 USER_COL_PRIVS_RECD //在指定列上分配给用户的对象权限
直接赋予的系统权限 当前用户
select * from user_sys_privs; USERNAME PRIVILEGE ADMIN_OPT
--------------- ------------------------- ---------
SCOTT CREATE VIEW NO
SCOTT UNLIMITED TABLESPACE NO
或 切到sys用户下 select * from dba_sys_privs where grantee='SCOTT';
用户所拥有的角色 select * from user_role_privs; USERNAME GRANTED_ROLE ADMIN_OPT DEFAULT_R OS_GRANTE --------------- ------------------------------ --------- --------- --------- SCOTT CONNECT NO YES NO SCOTT PLUSTRACE NO YES NO SCOTT RESOURCE NO YES NO
当前登录用户所拥有角色包含的权限 select * from role_sys_privs; ROLE PRIVILEGE ADMIN_OPT ------------------------------ ------------------------- --------- RESOURCE CREATE TRIGGER NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TYPE NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE CLUSTER NO CONNECT CREATE SESSION NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE TABLE NO
查询约束
查询当前用户拥有的约束 USER_CONSTRAINTS select constraint_name,constraint_type,table_name , R_CONSTRAINT_NAME from user_constraints where owner='SCOTT' / 如果是外键约束,R_CONSTRAINT_NAME列会显示对应的主键约束
查询与约束相关的列 USER_CONS_COLUMNS select constraint_name, table_name, column_name from user_cons_columns /
有两个数据字典视图提供了约束的详细信息。USER_CONSTRAINTS和USER_CONS_COLUMNS. 一张表可能有也可能没有约束,对于一张表的每一个约束在USER_CONSTRAINTS中都有一条记录描述这个约束。包括约束应用到的表名称。如果你知道约束名想知道约束类型,查询USER_CONSTRAINTS表。这个视图描述了约束的定义。它不提供约束定义在哪些字段名称上。 在USER_CONS_COLUMNS视图中显示约束的字段名称。如果主键是个联合主键,这个视图中将有这个约束的两条记录。联合主键的每一个字段对应一条记录。每一条记录通过POSITION(在联合主键中的位置)来区别。
USER_CONSTRAINTS 和USER_CONS_COLUMNS都有字段CONSTRAINT_NAME 和TABLE_NAME. --------------------------------------------------------------------- USER_CONSTRAINTS USER_CONST_COLUMNS --------------------------------------------------------------------- CONSTRAINT_NAME CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME TABLE_NAME COLUMN_NAME POSITION ----------------------------------------------------------------------
查看过程、函数、触发器
通过user_objects视图查看已存在的对象 select object_name,object_type,status from user_objects where object_type='PROCEDURE' / object_type='PROCEDURE' 查看已存在的过程 object_type='FUNCTION' 查看已存在的函数
通过对象名称查看USER_SOURCE视图,查看对象源代码 SELECT text FROM User_Source WHERE NAME='INSERTDEPT' / 如果对象状态为无效,查看User_Errors视图 SELECT line, position, text FROM User_Errors WHERE NAME='INSERTDEPT' / 在数据字典USER_TRIGGERS中查看触发器 set long 200 SELECT trigger_name,(DESCRIPTION),trigger_body FROM user_triggers /