11_Oracle_Admin_数据字典和动态性能表概述

一、数据字典

Data Dictionary 存储的是控制信息:如有多少张表,表的结构等等

Performance tables: 也称为DynamicPerformance tables,即动态性能表,反应了系统的性能特征,是动态的,以表的形式展示,但实际上展示的是内存信息。

PL/SQL packages:帮助完成数据库日常管理的程序。

Database event triggers:事件触发器,如插入数据时会触发相应的事件。

任何数据库都会有一个SYSTEM tablespace10g以后的数据库还必须有一个表空间叫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不会发生改变。

DDView主要有三类:

_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开头的主要用来创建数据字典;以DBMSPRVT开头的包都是用来增强数据库功能的包;UTL开头的脚本是一些工具包。


本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1557529

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。