Oracle之数据字典

数据字典的生成

  1. 数据字典是在数据库创建时,由Oracle数据库服务器自动创建的,存放在数据文件中,包括基表和视图两部分。
  2. 基表无法直接阅读,是在create database时创建,Oracle使用数据字典视图收集基表的信息以供用户阅读。
  3. 数据字典数据只有Oracle数据库服务器能修改
  4. 在数据库运行期间,数据库结构或其他对象的变化信息会及时地记录在数据字典基表中,用户可通过动态性能视图查看(注意与下面的静态数据字典视图区分)

数据字典的内容

  1. 所有模式对象的定义,包括表,视图,索引,族,同义词,序列号,存储过程,函数触发器等
  2. 数据库的逻辑结构和物理结构,如数据文件和重做文件的信息等。
  3. 所有模式对象被分配多少存储空间,以及当前使用的空间
  4. 默认列的值
  5. 对象完整性约束信息
  6. 用户信息
  7. 用户或角色的特权信息
  8. 审计信息,如那个用户具有访问或者修稿某些模式对象的权利

数据字典视图的分类

数据字典视图包含静态数据字典视图和动态性能视图,其中静态的数据字典视图又分为三类,以不同前缀相互区分

  1. DBA_***     该视图包含数据库整个对象信息,只能由数据库管理员查看
  2. ALL_***     包含某个用户所能看到的全部数据库信息
  3. USER_***   包含当前用户访问的数据库对象信息

实践:

C:\Users\LENOVO>sqlplus /nolog
SQL> conn / as sysdba   //以管理员身份连接数据库
SQL> desc dba_objects;  //查询dba_objects视图的列定义
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 OWNER                                              VARCHAR2(30)
 OBJECT_NAME                                        VARCHAR2(128)
 SUBOBJECT_NAME                                     VARCHAR2(30)
 OBJECT_ID                                          NUMBER
 DATA_OBJECT_ID                                     NUMBER
 OBJECT_TYPE                                        VARCHAR2(19)
 CREATED                                            DATE
 LAST_DDL_TIME                                      DATE
 TIMESTAMP                                          VARCHAR2(19)
 STATUS                                             VARCHAR2(7)
 TEMPORARY                                          VARCHAR2(1)
 GENERATED                                          VARCHAR2(1)
 SECONDARY                                          VARCHAR2(1)
 NAMESPACE                                          NUMBER
 EDITION_NAME                                       VARCHAR2(30)

                通过数据字典视图dba_objects查看SCOTT用户的数据库对象信息,对于另外两类视图也是类似做法

 

  • SQL> col owner for a20    ////指定列的输出格式为20个字符长度
    SQL> col object_name for a40   //指定列的输出格式为40个字符长度
    SQL> select owner,object_name,created
      2  from dba_objects
      3  where owner='SCOTT';  //注意用户名大小写
    
    OWNER                OBJECT_NAME                              CREATED
    -------------------- ---------------------------------------- --------------
    SCOTT                PK_DEPT                                  02-4月 -10
    SCOTT                DEPT                                     02-4月 -10
    SCOTT                EMP                                      02-4月 -10
    SCOTT                PK_EMP                                   02-4月 -10
    SCOTT                BONUS                                    02-4月 -10
    SCOTT                SALGRADE                                 02-4月 -10
    
    已选择6行。

重点介绍几个数据字典视图的常见用法

user_tables

SQL> conn scott/orcl
SQL> select table_name from user_tables; //查看scott用户所拥有的表

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE

              user_catalog

SQL> select * from user_catalog;  //查看scott用户拥有的所有表名和类型

TABLE_NAME                     TABLE_TYPE
------------------------------ -----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
SALGRADE                       TABLE

            动态性能视图

还有一类数据字典视图:动态性能视图,动态性能视图只存在于运行的数据库中,只有数据库管理员可以查询,以v$为前缀,如v$controlfile包含了控制文件存储目录和文件名信息,v$datafile包含了数据库文件信息,v$fixed_table视图包含了当前所有动态性能视图,v$datafile包含了当前所有动态性能视图。

实践:

SQL> conn / as sysdba
已连接。
SQL> select *
  2  from v$fixed_table
  3  where name like 'V$LOG%'; //查询所有和日志文件相关的动态性能视图

NAME                            OBJECT_ID TYPE   TABLE_NUM
------------------------------ ---------- ----- ----------
V$LOGFILE                      4294950935 VIEW       65537
V$LOG                          4294951049 VIEW       65537
V$LOGHIST                      4294951051 VIEW       65537
V$LOG_HISTORY                  4294951077 VIEW       65537
V$LOGMNR_CONTENTS              4294951541 VIEW       65537
V$LOGMNR_LOGS                  4294951543 VIEW       65537
V$LOGMNR_DICTIONARY            4294951545 VIEW       65537
V$LOGMNR_PARAMETERS            4294951547 VIEW       65537
V$LOGMNR_LOGFILE               4294951643 VIEW       65537
SQL> select group#,members,archived,status
  2  from v$log;  //查看当前正在使用的重做日志组,current说明正在使用

    GROUP#    MEMBERS ARC STATUS
---------- ---------- --- ----------------
         1          1 NO  CURRENT
         2          1 NO  INACTIVE
         3          1 NO  INACTIVE
SQL> col member for a40
SQL> select * from v$logfile; //查看重做日志文件信息

    GROUP# STATUS  TYPE    MEMBER                                   IS_
---------- ------- ------- ---------------------------------------- ---
         3         ONLINE  F:\APP\LENOVO\ORADATA\ORCL\REDO03.LOG    NO
         2         ONLINE  F:\APP\LENOVO\ORADATA\ORCL\REDO02.LOG    NO
         1         ONLINE  F:\APP\LENOVO\ORADATA\ORCL\REDO01.LOG    NO
SQL> col instance_name for a20
SQL> col host_name for a10
SQL> select instance_name,host_name,version,startup_time,logins
  2  from v$instance;  //查看实例信息

INSTANCE_NAME        HOST_NAME  VERSION           STARTUP_TIME   LOGINS
-------------------- ---------- ----------------- -------------- ----------
orcl                 LAPTOP-NV0 11.2.0.1.0        06-10月-18     ALLOWED
                     FE7G7
SQL> col name for a10
SQL> select name,created,log_mode
  2  from v$database;  //查看当前数据库信息

NAME       CREATED        LOG_MODE
---------- -------------- ------------
ORCL       06-10月-18     NOARCHIVELOG

猜你喜欢

转载自blog.csdn.net/username__sunny/article/details/82958443