跳到主要内容

Oracle数据字典视图

视图前缀作用描述常用视图示例访问权限要求
USER_显示当前用户拥有的所有对象信息USER_TABLES - 当前用户的表
USER_INDEXES - 当前用户的索引
USER_VIEWS - 当前用户的视图
USER_SEQUENCES - 当前用户的序列
USER_CONSTRAINTS - 当前用户的约束
所有用户均可访问自己的USER_视图
ALL_显示当前用户有权访问的所有对象信息ALL_TABLES - 可访问的所有表
ALL_OBJECTS - 可访问的所有对象
ALL_SYNONYMS - 可访问的所有同义词
ALL_TAB_PRIVS - 可访问的表权限
所有用户均可访问
DBA_显示数据库中所有对象的信息(DBA视图)DBA_USERS - 所有用户信息
DBA_TABLES - 所有表信息
DBA_DATA_FILES - 所有数据文件
DBA_SEGMENTS - 所有段信息
需要DBA权限
V$动态性能视图 - 显示实例运行时的性能信息和状态V$DATABASE - 数据库信息
V$SESSION - 当前会话信息
V$SQL - SQL执行统计
V$SYSSTAT - 系统统计信息
需要特定权限(通常为SELECT_CATALOG_ROLE)
GV$全局动态性能视图 - 在RAC环境中显示所有实例的信息GV$INSTANCE - 所有实例信息
GV$SESSION - 所有实例的会话
GV$LOCK - 所有实例的锁信息
需要特定权限
SESSION_显示当前会话的特定信息SESSION_PRIVS - 会话权限
SESSION_ROLES - 会话角色
所有用户均可访问

详细分类说明

1. 对象信息视图

视图类别视图名称主要作用
表相关USER_TABLES
ALL_TABLES
DBA_TABLES
查看表的基本信息(表名、表空间、存储参数等)
列信息USER_TAB_COLUMNS
ALL_TAB_COLUMNS
DBA_TAB_COLUMNS
查看表的列定义(列名、数据类型、长度等)
索引相关USER_INDEXES
ALL_INDEXES
DBA_INDEXES
USER_IND_COLUMNS
查看索引信息及索引对应的列
视图相关USER_VIEWS
ALL_VIEWS
DBA_VIEWS
查看视图定义
序列相关USER_SEQUENCES
ALL_SEQUENCES
DBA_SEQUENCES
查看序列信息

2. 约束和依赖关系

视图名称作用
USER_CONSTRAINTS查看表的约束(主键、外键、检查约束等)
USER_CONS_COLUMNS查看约束涉及的列
USER_DEPENDENCIES查看对象间的依赖关系
USER_TRIGGERS查看触发器信息

3. 权限和角色

视图名称作用
USER_SYS_PRIVS查看系统权限
USER_TAB_PRIVS查看表级权限
USER_ROLE_PRIVS查看角色权限
USER_ROLE_PRIVS_MADE查看授予角色的权限
SESSION_PRIVS查看当前会话的有效权限

4. 存储和空间管理

视图名称作用
USER_SEGMENTS查看段(表、索引等)的存储信息
USER_EXTENTS查看区的分配情况
USER_FREE_SPACE查看表空间的空闲空间
USER_TS_QUOTAS查看表空间配额

5. 关键动态性能视图 (V$视图)

视图名称作用
V$DATABASE数据库信息和控制文件详情
V$INSTANCE当前实例状态信息
V$SESSION当前所有会话信息
V$PROCESS数据库进程信息
V$SQL / V$SQLAREASQL语句执行统计信息
V$SYSSTAT系统统计信息
V$LOCK锁信息
V$TEMPFILE临时文件信息
V$LOGFILE重做日志文件信息
V$PARAMETER初始化参数设置

实用查询示例

1. 查看当前用户的所有表

SELECT table_name, tablespace_name, num_rows 
FROM user_tables;

2. 查看表的列信息

SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns
WHERE table_name = 'EMPLOYEES';

3. 查看当前会话信息

SELECT sid, serial#, username, status, program
FROM v$session
WHERE username IS NOT NULL;

4. 查看数据库存储空间使用情况

SELECT tablespace_name, 
SUM(bytes)/1024/1024 total_mb,
SUM(bytes)/1024/1024 - SUM(NVL(free_bytes,0))/1024/1024 used_mb
FROM dba_data_files
GROUP BY tablespace_name;

5. 查看SQL执行统计

SELECT sql_text, executions, buffer_gets, disk_reads
FROM v$sql
WHERE executions > 0
ORDER BY buffer_gets DESC;

访问权限说明

  • 普通用户:可以访问所有USER_ALL_视图,以及部分V$视图
  • DBA用户:可以访问所有视图,包括DBA_视图
  • 特殊权限:访问V$视图通常需要SELECT ANY DICTIONARY权限或SELECT_CATALOG_ROLE角色