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$SQLAREA | SQL语句执行统计信息 |
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角色