天天看点

Oracle经常查询的数据字典目录用户数据库对象用户权限查询查询约束查看过程、函数、触发器

目录

  • 用户数据库对象
  • 用户权限查询
  • 查询约束
  • 查看过程、函数、触发器

用户数据库对象

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 /