当前位置:数据库 > Oracle >>

oracle数据字典和动态性能表

oracle数据字典和动态性能表
 
重要性:
因为数据字典中有用户的信息,我们登录的时候要查询数据字典,有权限信息,我们做操作的时候也要查询数据字典,有约束信息
我们操作数据的时候也要查询数据字典,所以数据字典对于oracle数据库非常重要。
主要了解数据库的一些内建的对象,数据字典的了解和使用,数据字典的view是如何创建,学会查询这些表。
 
数据字典主要描述数据库和它的对象,包含只读表和视图,这些只读表和视图存储在system表空间中,有oracle server自动
进行维护,普通用户没有权限查看,oralce DBA也只能查看而已。 这些表的是属于sys用户的。只能select访问。
 
主要学习oralce 的数据字典 和 动态性能表部分
数据字典在oracle中有很重要的作用,是一个提供oralce信息的只读的表,数据字典包含:
一:数据字典包含什么信息
1:数据库中所有schema 对象的定义包括(tables, views, indexes, clusters, synonyms, sequences, procedures, functions, packages, triggers, and so on)
2:schema object对象已经分配了多少空间,当前使用了多少空间
3:存储了数据库结构的物理和逻辑结构
4:数据的完整性约束信息
5:用户的信息,角色信息,权限信息 以及审计 和 对象空间的分配情况。
数据字典由 表和视图构成,所有数据字典表的表和视图在存储空间由system表空间提供。
数据字典不仅对于数据库很重要,对于用户,dba 等都很重要,只能使用SQL语句访问数据字典,因为数据字典是只读的,只能通过SELECT语句访问这些表和view
 
二:数据字典的构成:
数据字典主要包含如下两个部分:
 1: Base tables 基表 
  存储数据库的描述,当执行 create database的时候就确定了。创建基表的脚本:sql.bsq 当创建数据库的时候,这个脚本会自动调用创建基表。
这个脚本在 ORACLE_HOME/rdbms/admin下面,有兴趣的可以去看看,我的oracle这个的地址为:
D:\app\topwqp\product\11.1.0\db_1\RDBMS\ADMIN
这些基表的信息比较神秘,一般不要动,即使是DBA一般也不要操作表。
2: data dictionary  views(用户可访问的views)
这些视图总结和显示数据字典的base table的信息,这些视图把base table中的信息转化为更直观更需要的信息,
大部分用户是需要访问 views 而不是base table
主要这个views的视图的创建是通过在创建视图后执行catalog.sql脚本生成的数据字典视图,
这个脚本的位置也在:D:\app\topwqp\product\11.1.0\db_1\RDBMS\ADMIN
data dictionary  view 是一个静态view 因为改动小,不是不改动,而是改动很少。
下图说明了两个分类:
 
 
什么时间数据字典会改动呢?
当使用DDL(DATA DEFINE LANGUAGE)语言的时候,ORACLE SERVER会修改数据字典的信息,比如 创建表 ,删除表,添加约束和 索引等。数据字典的owner(所有者)是SYS 用户,其他用户不能修改这个用户的信息,所以安全性很高。
注意:修改和操作数据字典表也许会长期影响数据的操作。所以需慎重。
 
三:数据字典的使用
如何使用数据字典呢?
数据字典有三个主要的用处:
1:oracle 在找用户的信息,schema对象,和存储结构的时候需要数据字典
2:每次操作DDL(Data definition language)的时候,oracle server会修改数据字典的信息
3:一些授权的oralce用户能够通过select语句查看数据字典的信息。
PS 数据字典多使用同义的别名,使用Cache 加快访问
如何使用数据字典:
所有的数据库用户能够访问数据字典view,通过SQL语句进行访问,一些视图能够被所有的 的用户访问,但是也有些视图只能被DBA访问。
当数据库是open状态的时候,数据字典就可以访问了,数据字典中包含很多views,在这些视图中大概分为3中类型的视图,不同类型的views信息有不同 的前缀。
下面是很好的说明:
Prefix Scope
USER
User's view (what is in the user's schema)
ALL
Expanded user's view (what the user can access)
DBA
Database administrator's view (what is in all users' schemas)
 
不同视图的区别:
含有USER前缀的视图通常不包含 OWNER这一列,这一列用户通常不能看到。
一些DBA前缀的视图包含更多列的信息。
三个主要的区别就是部分列的信息不同。
 
USER_XXX
这个视图主要描述user关心的信息:
1:有用户自己在数据库中的私有环境,包括被用户创建的schema对象信息 和用户的权限信息。
2:显示用户和用户相关的列
3:和 ALL_XXX 的view相比没有OWNER列,其他都一致。
4:根据第三条返回的结果当然是 ALL_VIEW的子集了 subset 简直是废话;
例如:SELECT object_name, object_type FROM USER_OBJECTS; 
 
ALL_XXX
SELECT owner, object_name, object_type FROM ALL_OBJECTS; 
DBA_XXX
SELECT owner, object_name, object_type FROM SYS.DBA_OBJECTS; 
数据字典一览表: select table_name from dictionary;   
 
动态性能视图(dynamic performance V$ views)
11g联机文档参考
重要参考
动态性能视图:
1:virtural tables 数据库信息以表的形式展示出来
2:记录了数据库当前的活动情况
3:当操作的时候会时不时的更新
4:动态性能表的信息来自 内存 和 控制文件中
5:主要作用: 监控和调优数据库
6:owner 所有者 : sys用户
7: 表名开始于V$
8:动态性能表的一览表在 V$FIXED_TABLE;
 
DESC v$FIXED_TABLE
 
一些常用的动态性能表:
V$contrllfile 系统中的控制文件
v$parameter 数据库参数信息
v$spparameter 
v$SGA
V$TABLESPACE
V$THREAD
等表信息
在oracle online document中
 
动态视图对于实时的监控数据库的性能非常有用:
下面讲讨论三点:
1:动态视图的目的(为什么要有动态视图)
2:动态视图的体系
3:动态视图的使用
 
1:The purpose of the Dynamic Performance Views
动态视图能够实时监控oracle的内脏,就相当人的各部部分的健康等,监控oracle各个部分的性能。
数据字典和动态视图有什么不同呢?
这样想像一下:数据字典像一对零件,它列出了一个汽车的所有的部分,显示了这些汽车零件的在汽车中的位置这
很容易理解,如果你想替换其中的一些零件,如果你想调整汽车的速度,换零件是一个不可取的选择。
 
V$动态视图就像汽车的车速计和转速计,它将告诉我们当前汽车的速度多快,通过通过调速灯帮助我们调节速度,数据库也一样,动态视图提供了数据库各个部分状况的反馈。
 
2:动态性能视图的体系结构
动态性能视图是一种很低级的oracle视图,我们很少需要去访问它,这些视图叫做X$ ,这个视图反应了oracle内部的结构。
X$视图位于oracle的底层,一般不是高手不要访问了。V$是创建在X$之上的视图,我觉得V$视图是X$的同义,最好利用V$去查询。
 
V$视图的使用:
下面是一些使用V$视图的例子:
如果ORACLE DBA想知道 who 连接这个系统,下列查询能够满足这个要求:
[sql] 
SQL> select sid, serial#, username, osuser, machine from v$session  
  2 where username is not NULL;  
注意 这个sid ,serial#列是一个连接到oracle数据库的用户一个标示。username是连接到数据库的用户名,OSUSER列显示连接到数据库的用户的操作系统名称,
在oracle中有很多动态性能视图,提供了很多有价值的信息。
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,