一、数据字典
Data Dictionary 存储的是控制信息:如有多少张表,表的结构等等
Performance tables: 也称为DynamicPerformance tables,即动态性能表,反应了系统的性能特征,是动态的,以表的形式展示,但实际上展示的是内存信息。
PL/SQL packages:帮助完成数据库日常管理的程序。
Database event triggers:事件触发器,如插入数据时会触发相应的事件。
任何数据库都会有一个SYSTEM tablespace,10g以后的数据库还必须有一个表空间叫SYSAUS(系统辅助空间),为SYS用户所拥有,由OracleServer直接管理,是只读的,即不能插入修改删除数据。
Base Table(基表)是核心,用户通常只和Views(视图)打交道。
[oracle@localhost ~]$ cd$ORACLE_HOME/rdbms/admin
[oracle@localhost admin]$ ls
a0902000.sql dbmsxpln.sql prvthesh.plb dbmsfspi.sql prvtbfut.plb sql.bsq … dbmsxmlu.sql prvthdm.plb
基表由sql.bsq 这个脚本创建
[oracle@localhost admin]$ vimsql.bsq
rem rem $Header: rdbms/admin/sql.bsq /main/606 2008/07/1417:25:59 vliang Exp $ sql.bsq rem MODIFIED rem huagli 06/09/08 - add ddst.bsq rem dvoss 01/03/07 - add dlmnr.bsq … dlmnr.bsq ddst.bsq
视图由catalog.sql创建
Catproc.sql是用来创建一些OracleServer所需要的包。
DD存储了数据库能够运行的核心信息,其重要性不言而喻。
数据字典由Oracle Server 自动维护,它在执行DDL语句时会发生改变,如CREATETABLE创建了表,那么DD就会发生改变;而INSERT 语句不会改变表的结构,因此DD不会发生改变。
DD的View主要有三类:
_USER:存储了本用户数据库结构中的表、索引信息;
_ALL:除了用户自己建立的schema,还包括该用户被授权允许访问的所有表,索引,视图等;
_DBA:整个数据库范围内存储的信息。
这三类视图大体结构都相似,只有一些细微差别,关于这三类的详细信息,可以查阅联机文档Reference的相关章节:
SQL> desc user_tables;
Name Null? Type ------------------------------------------------- ------------------- TABLE_NAME NOT NULLVARCHAR2(30) TABLESPACE_NAME VARCHAR2(30) CLUSTER_NAME VARCHAR2 ... READ_ONLY VARCHAR2(3) SEGMENT_CREATED VARCHAR2(3) RESULT_CACHE VARCHAR2
SQL> desc all_tables;
Name Null? Type ------------------------------------------------- -------------- OWNER NOT NULLVARCHAR2(30) -- ALL_TABLES比USER_TABLES多了一列OWNER,以指明该表属于哪个用户 -- 但除此以外表机构几乎一致 TABLE_NAME NOT NULLVARCHAR2(30) TABLESPACE_NAME VARCHAR2(30) CLUSTER_NAME VARCHAR2 ... READ_ONLY VARCHAR2(3) SEGMENT_CREATED VARCHAR2(3) RESULT_CACHE VARCHAR2
SQL> select table_namefrom dictionary;
... TABLE_NAME ------------------------------ GV$_LOCK DBA_HISTOGRAMS DBA_APPLY_VALUE_DEPENDENCIES DBA_APPLY_OBJECT_DEPENDENCIES DICT
DICTIONAL, DICT_COLUMS, DBA_TABLES, DBA_INDEXES,DBA_TAB_COLUMNS, DBA_CONSTRAINTS, DBA_SEGMENTS, DBA_EXTENTS, DBA_TABLESPACES,DBA_DATA_FILES这些表相对而言比较重要,建议查阅联机文档Reference相关章节以获取详细信息。
二、动态性能表
DD数据字典也是动态变化的,如用户的增加或减少,表的创建和删除等,但它的变化并不频繁。与之相对应的是动态性能表(DynamicPerformance Tables),它存储的是实时变化的数据,如有多少用户登陆了,有多少个活动的事物(Transaction),有多少commit的事物,多少rollback的事物等等。
动态性能表有以下特性:
1. 记录数据库当前的状态;
2. 数据库运行时会实时更新;
3. 它的信息来自于内存和控制文件;
4. 它主要用来监控和调优数据库;
5. 它的所有者是SYS;
6. 动态信息表的别名通常以V$开头
SQL> desc V$FIXED_TABLE;
Name Null? Type ------------------------------------------------- ------------------- NAME VARCHAR2(30) OBJECT_ID NUMBER TYPE VARCHAR2(5) TABLE_NUM NUMBER
SQL> select * fromv$fixed_table;
NAME OBJECT_ID TYPE TABLE_NUM ------------------------------ ---------- ----- ---------- GV$SQLCOMMAND 4294953192 VIEW 65537 V$SQLCOMMAND 4294953193 VIEW 65537 ... X$JOXMEX 4294952376 TABLE 65537
这些信息只能被具有SYSDBA权限的用户查询,普通用户是无法查询的:
SQL> conn hr
Enter password: Connected.
SQL> desc v$fixed_table;
ERROR: ORA-04043: object "SYS"."V_$FIXED_TABLE"does not exist -- 普通用户无法查看v$fixed_table
V$SPPARAMETER中存储了初始化参数信息,如果没有定义启动数据库的参数,则启动数据库时会使用V$SPPARAMETER中的默认值。
V$PARAMETER存储的是内存中的参数信息。
SQL> desc v$controlfile
Name Null? Type ------------------------------------------------- ------------------ STATUS VARCHAR2(7) NAME VARCHAR2(513) IS_RECOVERY_DEST_FILE VARCHAR2(3) BLOCK_SIZE NUMBER FILE_SIZE_BLKS NUMBER
SQL> select * fromv$controlfile
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS ----------- ---------------------------------------------------- --- /oracle/oradata/orcl/control01.ctl NO 16384 594 /oracle/flash_recovery_area/orcl/control02.ctl NO 16384 594
作为一个熟练的DBA,建议记住一些常用的动态性能表的作用和结构。
手动创建数据库时曾执行过一些脚本,这些脚本是数据库管理脚本,存放在$ORACLE_HOME/rdbms/admin中,联机文档Reference中对这些脚本有比较相信的介绍:
这些脚本的信息是可以分类的,其中以CAT开头的主要用来创建数据字典;以DBMS和PRVT开头的包都是用来增强数据库功能的包;UTL开头的脚本是一些工具包。
本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1557529