### Oracle数据字典和动态性能视图 #### 1. 数据字典概述 数据字典在Oracle数据库中扮演着至关重要的角色,它是一系列只读表和视图的集合,用以存储关于数据库结构和配置的重要信息。这些信息对于数据库管理员(DBA)和其他授权用户来说极为宝贵,因为它们提供了对数据库内部工作原理的深入了解。 - **所有者**:数据字典的所有者通常是SYS用户,这是一个拥有最高权限的内置账户。 - **存储位置**:数据字典信息通常被存储在`SYSTEM`表空间内。为了避免可能的数据字典与其他对象之间的冲突,不推荐在`SYSTEM`表空间中创建其他表、索引或簇等对象。 #### 2. 数据字典的组成 数据字典由两大部分组成:数据字典基本表和数据字典视图。 - **数据字典基本表**:这部分包含了数据库的基础信息,这些表直接由Oracle系统维护,普通用户无法直接访问。这些基础表存储的信息包括但不限于表的定义、索引信息以及约束条件等。 - **数据字典视图**:数据字典视图是基于数据字典基本表构建的视图,它们为用户提供了一个更友好、更易于理解的方式来访问数据字典中的信息。数据字典视图通常分为三类: - **USER_XXX**:仅显示当前用户拥有或可以访问的对象的信息。 - **ALL_XXX**:显示当前用户可以访问的所有对象的信息,包括那些当前用户没有直接拥有但有权限访问的对象。 - **DBA_XXX**:显示整个数据库范围内的信息,不论用户是否拥有该对象。 #### 3. 查询数据字典视图示例 下面提供了一些常见的查询数据字典视图的命令示例: - **连接到特定的数据库实例**: ```sql SQL> connect scott/tiger@kt6zt1; ``` - **显示当前用户可以访问的所有对象**: ```sql SQL> select owner, table_name from all_tables; ``` - **显示当前用户所拥有的所有对象**: ```sql SQL> select table_name from user_tables; ``` - **显示整个数据库范围内的详细系统信息**: ```sql SQL> connect sys/redbird@kt6zt1 as sysdba; SQL> select table_name from dba_tables; ``` #### 4. 数据字典内容 接下来我们将详细介绍如何利用数据字典进行不同类型的查询。 - **对象定义查询**:获取指定表的DDL定义。 ```sql SQL> set long 4000 SQL> select dbms_metadata.get_ddl('TABLE', 'EMP') ddl from dual; ``` - **查询表的列信息**:获取特定表的列信息。 ```sql SQL> select column_name, data_type, data_default 2 from user_tab_columns 3 where table_name = 'DEPT'; ``` - **查询约束信息**:了解表上的约束条件。 ```sql SQL> col constraint_name format a15 SQL> col constraint_type format a15 SQL> col column_name format a15 SQL> select a.constraint_name, a.constraint_type, 2 b.column_name, b.position 3 from user_constraints a, user_cons_columns b 4 where a.constraint_name = b.constraint_name 5 and a.table_name = 'EMP'; ``` - **查询用户名、权限和角色**:了解用户的权限和所属的角色。 ```sql SQL> connect sys/redbird@kt6zt1 as sysdba; // 查询用户或角色所具有的其他角色 SQL> select granted_role from dba_role_privs where grantee = 'SCOTT'; // 显示所有数据库用户的详细信息 SQL> select * from dba_users; // 显示用户或角色所具有的系统权限 SQL> select * from dba_sys_privs; // 显示用户或角色所具有的对象权限 SQL> select * from dba_tab_privs; // 显示用户或角色所具有的列权限 SQL> select * from dba_col_privs; ``` #### 5. 常用数据字典视图 - **DICT**:显示当前用户可访问的所有数据字典视图。 ```sql SQL> select table_name from dict where comments like '%grant%'; ``` - **DICT_COLUMNS**:显示数据字典视图每个列的作用。 ```sql SQL> select column_name, comments from dict_columns 2 where table_name = 'DICT'; ``` - **DUAL**:用于取得函数的返回值。 ```sql SQL> select user from dual; ``` - **GLOBAL_NAME**:显示当前数据库的全名。 ```sql SQL> select * from GLOBAL_NAME; ``` - **IND**:显示当前用户所拥有的所有索引和索引统计信息。 ```sql SQL> select index_name, index_type, uniqueness 2 from ind 3 where table_name = 'EMP'; ``` - **OBJ**:显示当前用户所拥有的所有对象。 ```sql SQL> select object_name, object_id, created 2 from obj 3 where object_ ``` 通过以上介绍,我们可以看到数据字典视图在Oracle数据库管理中发挥着重要作用,不仅能够帮助我们了解数据库的整体结构,还能够让我们更好地监控和维护数据库的健康状态。
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助