内置(Built-In)数据库对象
- 与数据库一起创建的内置对象:
数据字典
性能表
PL/SQL 软件包
数据库事件触发器
数据字典简介
- 数据字典(Data Dictionary)
是每个数据库的中心
包括了只读的系统表和视图
描述了数据库和数据库对象的信息
由 Oracle 服务器来创建和维护
存储在SYSTEM 表空间中
其所有者为 SYS用户
可利用SELECT语句来访问 - 基表(Base tables)
存储数据库的描述
Oracle服务器在数据库创建时通过运行sql.bsq来自动生成
在任何数据库中,基表永远是被最先创建的对象 - 数据字典视图(Data dictionary views)
用来简化基表中的信息
通过公共同义词来访问
通过运行catalog.sql 脚本文件创建的
创建数据字典
这些脚本文件存储在$ORACLE_HOME\RDBMS\ADMIN目录下。
数据字典的内容
- 数据字典提供了与下面有关的信息:
数据库的逻辑结构和物理结构
数据库对象定义和磁盘空间分配的信息
Oracle用户
每个用户所授予的权限和角色
完整性约束的信息
列的默认值
审计信息等
如何使用数据字典
-
Oracle服务器通过访问基表可获得如用户(Users)、模式对象(Schema objects)和存储结构(Storage
structures)等方面的信息,并利用这些信息进行所需的数据库的管理和维护。 -
在Oracle数据库运行期间,如果数据库的结构发生了变化,Oracle服务器会及时修改相应的数据字典以记录这种变化。
-
能引起Oracle服务器修改数据字典的SQL语句包括:
DDL语句
DCL语句
某些DML语句,如引起表的磁盘存储空间扩展的插入(insert)或修改(update)语句
如何使用数据字典
- 通常只有Oracle服务器可以修改数据字典中的数据。
- 任何用户包括数据库管理员(DBA)都不能直接使用DML语句修改数据字典中的内容。
- 所有用户和数据管理员(DBA)只能使用SELECT语句从数据字典(视图)中得到数据库的相关信息。
数据字典视图
- 数据字典视图包括:
(静态)数据字典视图
动态性能表(视图)
--以SYSTEM用户登录,查看所有数据字典视图。
select * from dictionary;
静态数据字典视图
- 静态数据字典视图:
提供用户对于数据字典信息的访问
在创建数据库时由$ORACLE_HOME\RDBMS\ADMIN\category.sql脚本创建
当数据库发生变化时,Oracle服务器并不及时地刷新这些视图中的信息
只有当执行了Oracle的ANALYZE命令后才会被刷新,也可以通过运行DBMS_STATS软件包来刷新 - 分为三大类,用前缀来区别:
USER_:有关用户所拥有的对象的信息
ALL_:有关用户可以访问的对象的信息
DBA_*:有关整个数据库中的对象的信息(必须以DBA用户连接数据库才可以访问) - 静态数据字典视图包含了以下信息:
对象的属主(在USER_*视图中没有OWNER列)
用户所拥有的权限
对象的创建时间
对象存储参数的设置
对象存储空间的使用情况等 - 以SCOTT用户登录数据库
--查看当前用户拥有哪些表。
SELECT table_name FROM user_tables;
--查看当前用户有哪些表可用。
select table_name, owner from all_tables;
- 以SYSTEM用户登录数据库
--查看整个数据库中有哪些表。
select table_name, owner from dba_tables;
--查看当前用户所拥有对象名称和类型。
select * from user_catalog;
常用的数据字典视图
-
通用概要类型: DICTIONARY、 DICT_COLUMNS
-
模式对象: DBA_TABLES、 DBA_INDEXES、DBA_TAB_COLUMNS、DBA_CONSTRAINTS
-
磁盘空间分配: DBA_SEGMENTS、DBA_EXTENTS
-
数据库的结构: DBA_TABLESPACES、DBA_DATA_FILES
动态性能表(视图)
- 动态性能表:
是一组虚表(Virtual tables)
其信息来自内存和控制文件
记录了当前数据库的活动
实时反映了数据库运行的状态
通常用于监督和调优数据库
其拥有者是SYS用户
名字以V$开头 - 利用动态性能表可以获得如下信息:
会话活动的信息
对象打开或关闭的信息
对象在线或离线的信息等 - V$FIXED_TABLE
存储Oracle的基表
只列出所有动态数据字典(系统表)的信息
包含4个字段:name、object_id、type、table_num
--查看所有动态性能表的名称和类型等信息。
select * from v$fixed_table;
常用的动态性能表
- 关于数据库、实例等:V D A T A B A S E 、 V DATABASE、V DATABASE、VINSTANCE、V V E R S I O N 、 V VERSION、V VERSION、VPARAMETER、V S P P A R A M E T E R 、 V SPPARAMETER、V SPPARAMETER、VSESSION、V P R O C E S S 、 V PROCESS、V PROCESS、VSGA
- 关于磁盘文件等:V C O N T R O L F I L E 、 V CONTROLFILE、V CONTROLFILE、VDATAFILE、V L O G F I L E 、 V LOGFILE、V LOGFILE、VTABLESPACE