zoukankan      html  css  js  c++  java
  • 管理对象与数据字典

    数据字典视图:

    DICTIONARY

    USER_OBJECTS

    USER_TABLES

    USER_TAB_COLUMNS

    ……

    数据字典结构:

    基表

    用户可访问的视图

    视图前缀 含义

    USER            用户视图(自己拥有的,自己方案下的) 

    ALL 扩展的用户视图(在USER_的基础上,用户有权访问的)

    DBA 数据库管理员视图(所有方案下的)

    V$ 动态性能视图(可以理解为内存中的信息)

    中缀 COL TAB CONS ……

    后缀 CONSTRAINTS  COLUMNS  VIEW ……

    USER_CONSTRAINTS查询用户下的约束

    USER_CONS_COLUMNS查询用户下的约束和在哪些列上

    数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
      Oracle中的数据字典有静态和动态之分。静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。
    1. 静态数据字典
      这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
      user_*
        该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)

      all_*
        该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)

      dba_*
        该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
      从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同以外(因为权限不一样,所以访问对象的范围不一样),其他均具有一致性。具体来说,由于数据字典视图是由SYS(系统用户)所拥有的,所以在却省情况下,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。没有DBA权限的用户只能看到user_*和all_*视。如果没有被授予相关的SELECT权限的话,他们是不能看到 dba_*视图的。

    user_users视图
        主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。例如执行下列命令即可返回这些信息。
      select * from user_users
      user_tables视图
        主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。执行命令为:select * from user_tables
      user_objects视图
        主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。该视图比user_tables视图更加全面。例如, 需要获取一个名为“package1”的对象类型和其状态的信息,可以执行下面命令:

      select object_type,status
      from user_objects
      where object_name=upper(‘package1’);
    注意:upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。
      user_tab_privs视图
        该视图主要是存储当前用户下对所有表的权限信息。比如,为了了解当前用户对table1的权限信息,可以执行如下命令:

      select * from user_tab_privs where table_name=upper('table1')
      了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执行。
      前面的视图均为user_开头的,其实all_开头的也完全是一样的,只是列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。对于dba_开头的需要管理员权限,其他用法也完全一样,这里就不再赘述了。

      2. 动态数据字典
      Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
      Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。下面就几个主要的动态性能视图进行介绍。
      v$access
        该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
      运行如下命令:
        select * from v$access
      结果如下:(因记录较多,故这里只是节选了部分记录)

    SID

    OWNER
    OBJECT
    TYPE

    27
    DKH
    V$ACCESS
    CURSOR

    27
    PUBLIC
    V$ACCESS
    SYNONYM

    27
    SYS
    DBMS_APPLICATION_INFO
    PACKAGE

    27
    SYS
    GV$ACCESS
    VIEW

      v$session
        该视图列出当前会话的详细信息。由于该视图字段较多,这里就不列详细字段,为了解详细信息,可以直接在sql*plus命令行下键入:desc v$session即可。
      v$active_instance
        该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。
      v$context
        该视图列出当前会话的属性信息。比如命名空间、属性值等。

    SELECT * FROM DICTIONARY WHERE TABLE_NAME LIKE ‘USER\_%’ ESCAPE ‘’;

    查询数据库里都有哪些USER开头的数据字典

    SELECT VIEW_NAME FROM USER_VIEWS;查询用户下所有视图的试图名字

    DESCRIBE USER_SEQUENCES;序列字典结构

    在USER_SEQUENCES数据字典表中确认您的序列值

    SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER

    FRO USER_SEQUENCES;

    USER_INDEXES 提供关于索引的信息。

    USER_IND_COLUMNS描述索引列,包括索引和字段。

    SELECT * FROM USER_SYNONYMS;查找用户下的所有同义词的信息

    使用COMMENT命令为表和字段添加注释:

    COMMENT ON TABLE EMPLOYEES

    IS ‘EMPLOYEES INFOMATION’

    COMMENT ON COLUMN EMPLOYEES.FIRST_NAME

    IS ‘FIRST NAME OF THE EMPLOYEE’

    可以通过下列数据字典视图查看注释信息

    ALL_COL_COMMENTS

    USER_COL_COMMENTS

    ALL_TAB_COMMENTS

    USER_TAB_COMMENTS

  • 相关阅读:
    小程序 scroll-view 中文字不换行问题
    模块
    网络编程
    元类
    day24
    day23
    day22
    day21
    day18
    day17
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9038156.html
Copyright © 2011-2022 走看看