ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 动态性能视图基础

动态性能视图基础

原创 Linux操作系统 作者:pingley 时间:2012-02-21 10:46:40 0 删除 编辑
动态性能视图基础
     oracle维护了一组的虚拟表记录数据库的各种活动,称作动态性能表(dynamicperformance tables),动态性能视图(dynamic performance views)是建立在这些动态性能表上的视图,因为其中记录的信息在实例启动以后持续的更新。动态性能视图也称为V$视图或者固化视图,因为动态性能视图是不能够被数据库管理员修改或者删除的。
动态性能视图包括了以下信息:
1、系统和会话参数。
2、内存使用与分配。
3、文件(包括RMAN 备份文件)状态。
4、jobs执行的进度。
5、SQL的执行信息。
6、各种各样的统计信息与度量信息。
动态性能视图的主要用途:
1、OEM使用这些视图获得数据库的各种信息。
2、DBA使用这些视图进行性能监控与排错。
注意:这里所说的动态性能视图并不是通常所说的视图,实际上的动态性能视图是通过V_$前缀来标识的,V$前缀的动态性能视图实际上是这些V_$视图的公共同义词(publicsynonyms)。动态性能视图的定义与公共同义词是由创建数据库的时候的脚本:catalog.sql
创建的。下面是catalog.sql脚本中的几行代码:
Rem     aho        01/03/95 -  add synonym for v$instance, v$mystat,
Rem                            v$sqltext, and v$shared_pool_reserved
Rem     jbellemo   09/02/94 -  add synonym for v$pwfile_users
动态性能视图并不保证读一致性,因为其中的信息是动态更新的。动态视图基于的虚表并不存储在数据库中,位于实例的内存中。所以动态性能视图将会在实例启动的时候初始化,在实例关闭的时候删除.动态性能视图中的数据会在实例启动以后不断积累,更新。
sys是动态性能视图的拥有者,只有sys才能查询动态性能视图。
SQL> show user
USER is "PUBLIC"
SQL> select * from V$instance;
select * from V$instance
              *
ERROR at line 1:
ORA-00942: table or view does not exist
对动态性能视图的查询权限只能由sys行使,不能授权给其他用户。
SQL> grant select on v$instance to hr;
grant select on v$instance to hr
                *
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
[oracle@zeng ~]$ oerr ora 02030
02030, 00000, "can only select from fixed tables/views"
// *Cause:  An attempt is being made to perform. an operation other than
//         a retrieval from a fixed table/view.
// *Action:  You may only select rows from fixed tables/views.
你仅仅能查询固化表或者视图,不能执行其他操作。
SQL> delete from V$instance;
delete from V$instance
            *
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
当实例启动以后,就有部分动态性能视图可用,这部分动态性能视图的信息来源于oracle数据库实例的信息(在内存中)。部分动态性能视图要等到数据库mount以后才可以使用,这部分动态性能视图的信息来自control files。部分动态性能视图要等到数据库open以后才可以使用.
在nomount阶段就可用的动态性能视图,比如V$instance,V$sysstat,V$bgprocess
SQL> startup nomount
ORACLE instance started.
Total System Global Area  305508352 bytes
Fixed Size                  1336120 bytes
Variable Size             138415304 bytes
Database Buffers          159383552 bytes
Redo Buffers                6373376 bytes
SQL> select instance_name,version,status
  2  from V$instance;
INSTANCE_NAME    VERSION           STATUS
---------------- ----------------- ------------
oracle           11.2.0.1.0        STARTED
在mount阶段可用的动态性能视图比如V$database,V$datafile,V$logfile
SQL> select * from V$database;
select * from V$database
              *
ERROR at line 1:
ORA-01507: database not mounted
SQL> alter database oracle mount;
Database altered.
SQL> select name,created,log_mode,database_role
  2  from V$database;
NAME      CREATED   LOG_MODE     DATABASE_ROLE
--------- --------- ------------ ----------------
ORACLE    05-FEB-12 NOARCHIVELOG PRIMARY
还有一些动态性能视图要等到数据库open以后才能“访问”。比如V$waitstat.
下面是V$waitstat视图查询的其中一条记录。
SQL> select * from v$waitstat;
CLASS                   COUNT       TIME
------------------ ---------- ----------
data block                  0          0
SQL> alter database oracle open;
Database altered.
SQL> select * from v$waitstat;
CLASS                   COUNT       TIME
------------------ ---------- ----------
data block                  3         15
虽然在mount状态也可查询V$waitstat,但是没有意义,其中的记录的各项值
都是0.等到open以后往动态性能视图中视图填充值,这时候的查询才是有意义的。
     几乎每一个V$视图都对应一个GV$(global V$)视图,在oracle RAC环境下用于查询RAC中各个实例的V$视图信息,所以在GV$视图中添加了额外的一列inst_id(number 类型).该列指示GV$中的信息来至于那个RAC实例。该列可以用在查询过滤中,以便查看对应RAC实例的V$信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-716841/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    721781