代码改变世界

初识数据字典【weber出品必属精品】

2014-08-24 16:57  yaoweber  阅读(182)  评论(0编辑  收藏  举报
  1. 数据字典结构

    有两部分组成:

    1. 基表:以$结尾的系统表,在创建数据库的时候,oracle自动创建的表

    2. 用户可以访问的视图

  2.  数据字典的种类

    DICTIONARY:简称DICT,所有的数据字典,都可以通过DICT查看

    1.  DBA开头的:sys用户所拥有的,普通用户默认不能访问,只有sys授权,才能访问,存储了全部的相关信息
      查看DBA开头的数据字典:
      select table_name from dict where table_name like 'DBA%';

      TABLE_NAME
      ------------------------------
      DBA_ROLES
      DBA_PROFILES
      DBA_CATALOG
      DBA_CLUSTERS
      DBA_CLU_COLUMNS
      DBA_COL_COMMENTS
      DBA_COL_PRIVS
      DBA_ENCRYPTED_COLUMNS

      。。。。。。。。

      525 rows selected.

      SQL> select owner,table_name from dba_tables where owner='SCOTT';

      OWNER TABLE_NAME
      ------------------------------ ------------------------------
      SCOTT DEPT
      SCOTT EMP
      SCOTT BONUS
      SCOTT SALGRADE

    2. ALL开头的:当前用户可以访问的数据,可以分为两部分数据:一部分是当前用户自己的数据,一部分是其他用户的数据,但是当前用户有访问的权限,普通用户可以访问
      比如:ALL_TABLES:查看当前用户可以访问的表
      SQL> select owner,table_name from all_tables order by 1;

      OWNER TABLE_NAME
      ------------------------------ ------------------------------
      WMSYS AQ$_WM$EVENT_QUEUE_TABLE_S
      WMSYS AQ$_WM$EVENT_QUEUE_TABLE_T
      WMSYS AQ$_WM$EVENT_QUEUE_TABLE_H
      WMSYS SYS_IOT_OVER_10282

      。。。。。。。。。。。。。。。。。。。。。。。

      1576 rows selected.

      conn hr/hr
      
      grant select on employees to scott;
      
      conn scott/tiger
      
      SQL> select owner,table_name from all_tables order by 1;--employees表将显示出来,因为scott有访问的权限
    3. USER开头的:当前用户自己的数据

      比如USER_TABLES:当前用户自己的表

      SQL> conn scott/tiger
      Connected.
      SQL> select user,table_name from user_tables ;
      
      USER                   TABLE_NAME
      ------------------------------ ------------------------------
      SCOTT                   DEPT
      SCOTT                   EMP
      SCOTT                   BONUS
      SCOTT                   SALGRADE
    4.  V$开头的:动态性能视图
      v$fixed_table:可以查看数据库中所有v$开头的动态性能视图
      USER is "SYS"
      SQL> desc v$fixed_table
       Name                                   Null?    Type
       ----------------------------------------------------------------- -------- --------------------------------------------
       NAME                                        VARCHAR2(30)
       OBJECT_ID                                    NUMBER
       TYPE                                        VARCHAR2(5)
       TABLE_NUM                                    NUMBER

      动态性能视图的内容:

      1. 控制文件的内容

      2. 内存中的数据

      3. 动态性能视图反映出数据库的性能

      4. 由于内存中的数据时刻在改变,所以动态性能视图中的数据时随着内存和数据库的状态的改变而改变

      SQL> shutdown abort
      ORACLE 例程已经关闭。
      SQL> startup nomount
      ORACLE 例程已经启动。
      
      Total System Global Area  608174080 bytes
      Fixed Size                  1275128 bytes
      Variable Size             184552200 bytes
      Database Buffers          419430400 bytes
      Redo Buffers                2916352 bytes
      SQL> select status from v$instance;
      
      STATUS
      ------------------------------------
      STARTED
      
      SQL> alter database mount;
      
      数据库已更改。
      
      SQL> select status from v$instance;
      
      STATUS
      ------------
      MOUNTED
      
      SQL> alter database open;
      
      数据库已更改。
      
      SQL> select status from v$instance;
      
      STATUS
      ------------
      OPEN

      什么时候访问动态性能视图?

      1. 当数据库出现性能问题的时候

      2. 访问控制文件的内容