Oracle常用视图总结

日常使用Oracle的过程中,总是免不了要对各种表进行查询。在Oracle数据库中,通常通过查询视图来代替物理表的查询。视图是基于数据表创建的一种逻辑上的虚拟表结构,通过将一些常用的表结构和查询操作通过联合而形成的,在使用过程中使用视图代替数据表的查询可以使一些常见的查询操作事倍功半。

这里简单描述下视图数据表之间的关系

  • 数据表: 是物理上的结构,存储在底层的硬盘上,占用实际硬盘的物理空间;
  • 视图: 是逻辑上的结构,是表与表之间的一种或多种逻辑映射,存储在数据字典里,不占用实际的物理硬盘空间;

进入数据库,通过 all_views 视图查看数据库的所有视图

> select OWNER,VIEW_NAME from all_views;   /* 视图中的字段会很多,使用`desc {view_name}`查看视图的字段名选择可用的字段名 */

数据库常用视图

  • USER_TABLES: 当前用户下的所有数据表
/* 查询表名称及所属表空间 */
> select TABLE_NAME,TABLESPACE_NAME from USER_TABLES;
  • ALL_TABLES: 所有用户的数据表
/* 查询表所属用户、表名称及所属表空间 */
> select OWNER,TABLE_NAME,TABLESPACE_NAME from ALL_TABLES;
  • DBA_TABLES: DBA用户可以访问的数据表
/* 查询表所属用户、表名称及所属表空间 */
> select OWNER,TABLE_NAME,TABLESPACE_NAME from DBA_TABLES;
  • ALL_INDEXES: 存放数据表索引的视图
/* 查询索引对应名称、类型、及对应的表空间*/
> select OWNER,INDEX_NAME,INDEX_TYPE,TABLE_NAME,TABLESPACE_NAME from ALL_INDEXES;
  • USER_EXTENTS: 存放用户所拥有对象的段的视图
/* 查询用户拥有的段中的段名称、分区名、段类型、表空间及所占用的字节数 */
> select SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,BYTES from USER_EXTENTS;
  • DBA_EXTENTS: 数据库中所有段包含的区的视图
/* 查询所有用户拥有的段中的段名称、分区名、段类型、表空间及所占用的字节数 */
> select OWNER,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,BYTES from DBA_EXTENTS;
  • DBA_DATA_FILES: 数据库中所有数据文件相关的视图
/* 查询数据文件大小、名称、对应表空间及是否自动增长 */
> select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024/1024,STATUS,AUTOEXTENSIBLE from DBA_DATA_FILES;

FILE_NAME                            TABLESPACE_NAME      BYTES/1024/1024/1024 STATUS    AUT
------------------------------------------------------------ -------------------- -------------------- --------- ---
+DATADG/RAC/system01.dbf                     SYSTEM             1.03515625 AVAILABLE YES
+DATADG/RAC/sysaux01.dbf                     SYSAUX             21.1035156 AVAILABLE YES
  • V_$LOG: Redo日志相关视图
/* 查询REDO日志相关组及日志大小 */
> select GROUP#,THREAD#,BYTES/1024/1024/1024,MEMBERS,ARCHIVED,STATUS from V_$LOG;

    GROUP#    THREAD# BYTES/1024/1024/1024    MEMBERS ARC STATUS
---------- ---------- -------------------- ---------- --- ----------------
     9      1           10      1 NO  CURRENT
    23      2           10      1 NO  CURRENT
  • V_$LOGFILE: REDO日志文件视图
/* 查看redo日志组成员 */
> select GROUP#,MEMBER,TYPE from V_$LOGFILE;

    GROUP# MEMBER                                                           TYPE
---------- -------------------------------------------------- -------
     6    +LOGDG/RAC/ONLINELOG/group_6.261.1095247683         ONLINE
     7    +LOGDG/RAC/ONLINELOG/group_7.262.1095247717         ONLINE
  • V_$CONTROLFILE: 控制文件视图
/* 查询数据库所使用的控制文件 */
> select STATUS,NAME,BLOCK_SIZE from V_$CONTROLFILE;

STATUS  NAME                   BLOCK_SIZE
------- ------------------------------ ----------
    +DATADG/RAC/control01.ctl       16384
    +DATADG/RAC/control02.ctl       16384
  • GV_$CONTROLFILE: 集群级别的控制文件视图
> select INST_ID,STATUS,NAME,BLOCK_SIZE from GV_$CONTROLFILE;

   INST_ID STATUS  NAME                           BLOCK_SIZE
---------- ------- -------------------------------------------------- ----------
     1     +NVMEDG/RAC/control01.ctl                   16384
     2     +NVMEDG/RAC/control02.ctl                   16384
  • DBA_DIRECTORIES: 存放数据库所有用户可以访问的数据字典
> select OWNER,DIRECTORY_NAME,DIRECTORY_PATH from DBA_DIRECTORIES;

OWNER    DIRECTORY_NAME            DIRECTORY_PATH
------- -------------------------- ------------------------ 
SYS      DBMS_OPTIM_LOGDIR         /****/12.2.0/cfgtoollogs
  • DBA_SEGMENTS: 数据库所有的段视图
/* 查询表空间索引占用的空间情况 */
> select OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,sum(BYTES/1024/1024/1024) from dba_segments where OWNER='SOE' group by OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME;

OWNER    SEGMENT_NAME        SEGMENT_TYPE    TABLESPACE_NAME      SUM(BYTES/1024/1024/1024)
------- -------------------- -------------- -------------------- -------------------------
SOE     PRODUCT_DESCRIPTIONS TABLE            SOE                .000305176

  • DBA_FREE_SPACE: 数据库剩余表空间统计视图
/* 查询数据库已使用表空间并根据表空间名称分组 */
> select TABLESPACE_NAME,sum(BYTES/1024/1024/1024) from DBA_FREE_SPACE group by TABLESPACE_NAME;

TABLESPACE_NAME      SUM(BYTES/1024/1024/1024)
-------------------- -------------------------
SYSTEM                  4.99133301
UNDOTBS2                136.481812
  • V_$SQL_PLAN: 实例级别的sql执行计划
/* 查询sql执行语句的ID */
> select SQL_ID,PLAN_HASH_VALUE,TIMESTAMP,OBJECT# from V_$SQL_PLAN;

SQL_ID        PLAN_HASH_VALUE TIMESTAMP          OBJECT#
------------- --------------- ------------------- ----------
94qn6y14kw01g      1388734953 2022-03-01 16:25:37
94qn6y14kw01g      1388734953 2022-03-01 16:25:37

ASM常用视图

  • V$ASM_DISK: ASM磁盘组中关于磁盘的详细信息
/* 查询磁盘组中磁盘名称及状态大小 */
> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,STATE,NAME,TOTAL_MB from V$ASM_DISK;

GROUP_NUMBER DISK_NUMBER MOUNT_STATUS   HEADER_STATUS        STATE        NAME                 TOTAL_MB
------------ ----------- -------------- ------------------------ ---------------- ------------------------------ ----------
       1           2 CACHED     MEMBER           NORMAL       LOGDG_0002                 204800
       3           1 CACHED     MEMBER           NORMAL       OCRVOTE_0001                 6144
  • V$ASM_DISKGROUP: ASM磁盘组视图
/* 查询asm中所有磁盘组的信息 */
> select GROUP_NUMBER,NAME,ALLOCATION_UNIT_SIZE,STATE,TYPE,TOTAL_MB/1024 from V$ASM_DISKGROUP;

GROUP_NUMBER NAME               ALLOCATION_UNIT_SIZE STATE          TYPE             TOTAL_MB/1024
------------ ------------------------------ -------------------- ---------------------- -------------------- -------------
       1 LOGDG                   1048576 MOUNTED        NORMAL                 600
       3 OCRVOTE                     4194304 MOUNTED        NORMAL              18
  • V$ASM_OPERATION: ASM磁盘组磁盘重平衡视图
/* 查询磁盘组重平衡进度 */
> select GROUP_NUMBER,OPERATION,STATE,POWER,ACTUAL,EST_WORK,EST_RATE,EST_MINUTES from V$ASM_OPERATION;

GROUP_NUMBER OPERATION  STATE         POWER ACTUAL   EST_WORK   EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- ---------- -----------
       2 REBAL  WAIT         11     11      0      0           0
       2 REBAL  WAIT         11     11      0      0           0
       2 REBAL  RUN      11     11    2025371      72715          12
       2 REBAL  DONE         11     11      0      0           0
  • V$ASM_FILE: 存放ASM磁盘组中的文件信息
/* 查询ASM数据文件大小及类型*/
> select GROUP_NUMBER,FILE_NUMBER,SPACE/1024/1024/1024,TYPE,REDUNDANCY from V$ASM_FILE;

GROUP_NUMBER FILE_NUMBER SPACE/1024/1024/1024 TYPE         REDUNDANCY
------------ ----------- -------------------- -------------------- ------------
       1         256       .395507813 ONLINELOG        MIRROR
       1         257       .395507813 ONLINELOG        MIRROR
  • V$ASM_CLIENT: ASM实例及数据库实例信息相关的视图
/* 查询ASM实例及数据库实例名称及版本信息 */
> select GROUP_NUMBER,INSTANCE_NAME,DB_NAME,CLUSTER_NAME,STATUS,SOFTWARE_VERSION from V$ASM_CLIENT;

GROUP_NUMBER INSTANCE_NAME    DB_NAME      CLUSTER_NAME     STATUS           SOFTWARE_VERSION
------------ -------------------- ---------------- -------------------- ------------------------ --------------------
       1 rac1         rac          oracle       CONNECTED        19.0.0.0.0
       2 rac1         rac          oracle       CONNECTED        19.0.0.0.0
       3 +ASM1        +ASM         oracle       CONNECTED        19.0.0.0.0
       3 node1        _OCR         oracle       CONNECTED        -
  • V$ASM_ALIAS: ASM磁盘组别名
> select * from V$ASM_ALIAS;

NAME                   GROUP_NUMBER FILE_NUMBER FILE_INCARNATION ALIAS_INDEX ALIAS_INCARNATION PARENT_INDEX REFERENCE_INDEX AL SY     CON_ID
------------------------------ ------------ ----------- ---------------- ----------- ----------------- ------------ --------------- -- -- ----------
RAC                   1  4294967295       4294967295       0             1     16777216    16777269 Y  N       0
redo01.log                1     256       1095246583      53             1     16777269    33554431 N  N       0
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容