分享
 
 
 

走近Oracle数据字典(二)--动态性能视图

王朝学院·作者佚名  2009-11-14
窄屏简体版  字體: |||超大  

在上篇文章里“走近Oracle数据字典--数据字典表”,我们谈到了数据字典对于我们作为DBA对数据库维护的重要性。数据库的对象信息,比如表,用户,存储过程,函数,视图,索引等等,这些存在在数据库里的对象的信息,都是在数据字典表里进行维护的,我们可以借用一些比较好的Oracle开发工具比如PLSQL dev或者TOAD查看他们,或者直接通过对数据字典表进行sql查询,从而获得对象的信息。 不过在数据库的meta信息里,除了这些对象静态对象的这些信息以为,数据库运行是的一些信息对于我们来说也是非常有帮助的,也更为有意义。 比如,有多少个session,有什么样的process在实例里运行,系统的状态现在是如何的, 可以看到这些信息都是实例运行时的动态信息,不是固定的信息,不同的时刻可能信息也是不一样的, Oracle为了进行维护的时候能够得知这些实例的这些类似状态一样的动态的信息,提供叻动态性能视图,通过这个动态性能视图我们可以了解到实例内部的一些动态变化的状态信息。

动态信息视图也是数据字典的一种,提供信息维护的作用,不过和我们上一个文章提到的“数据字典表”一样也可以在dictionary里找到,开头为v$的都是我们这里提到的动态性能视图。 一样,这个是一个public的同义词,我们以v$session这个大家比较熟悉的视图为例,一起走进去看看。

SQL> select OWNER,OBJECT_NAME, OBJECT_TYPE from all_objects where object_name = 'V$SESSION';

OWNER OBJECT_NAME OBJECT_TYPE

------------------------------ ------------------------------ -------------------

PUBLIC V$SESSION SYNONYM

SQL> select OWNER,SYNONYM_NAME,TABLE_OWNER,TABLE_NAME from dba_synonyms where synonym_name = 'V$SESSION';

OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME

------------------------------ ------------------------------ ------------------------------ ------------------------------

PUBLIC V$SESSION SYS V_$SESSION

可以看到v$session是一个同义词,指向v_$sesssion, 这个v_$sesssion才是一个视图。

动态性能视图都是以V$开头,对应是以V_$开头的视图。 我们来看看这些V_$视图的定义吧

还记得我吗上篇文章,如何来查看view的基表的语句吧

可以查询dba_views表的text字段

SQL> select view_name,text from dba_views a where a.view_name = 'V_$SESSION';

VIEW_NAME TEXT

------------------------------ --------------------------------------------------------------------------------

V_$SESSION select "SADDR","SID","SERIAL#","AUDSID","PADDR","USER#",......from v$session

这里可以看到 v_$session是一个视图,他的基表是v$session,这里要注意这个v$session不是上面的同义词了,而是一个和其名字一样的视图或者表。

既然是视图我们再用dba_views来查查这个视图是怎么定义的呀。

SQL> select view_name,text from dba_views a where a.view_name = 'V$SESSION';

VIEW_NAME TEXT

------------------------------ --------------------------------------------------------------------------------

发现并没有这个名字的视图,那么在表的里面查查

SQL> select table_name from dba_tables a where a.table_name = 'V$SESSION';

TABLE_NAME

------------------------------

也没有这个对象, 究竟是怎么回事了,这个v$session就是是何物呀, 动态性能视图和数据字典表不一样,动态性能视图不是真正的物理表,而是内存中虚拟出来的表,其实可以看作是Oracle的一部分内存,不过是用表的形式提供信息的,既然是这样的,那么这个v$session当然就不会放到真实的表和视图里了。

对于类似这样的虚拟的内存表的信息,我们可以通过v$fixed_view_defination来查询

SQL> desc v$fixed_view_definition;

Name Type Nullable Default Comments

--------------- -------------- -------- ------- --------

VIEW_NAME VARCHAR2(30) Y

VIEW_DEFINITION VARCHAR2(4000) Y

SQL> select * from v$fixed_view_definition where view_name = 'V$SESSION';

VIEW_NAME VIEW_DEFINITION

------------------------------ --------------------------------------------------------------------------------

V$SESSION select SADDR , SID , SERIAL# , AUDSID , PADDR , USER# , ..... from GV$SESSION where inst_id =USERENV('Instance')

发现这个视图由GV$session定义而成 GV$Session和v$session一样,有是一个虚拟表的视图。

SQL> select * from v$fixed_view_definition where view_name = 'GV$SESSION';

VIEW_NAME VIEW_DEFINITION

------------------------------ --------------------------------------------------------------------------------

GV$SESSION select s.inst_id,s.addr,s.indx,s.ksuseser,s.ksuudses,s.ks ..... from x$ksuse s, x$ksled e where bitand(s.ksspaflg,1)!=0 and bitand(s.ksuseflg,1)!=0 and s.ksuseopc=e.indx

终于找到最后的源头了,就是这里的X$开头的对象,这里的对象x$开头的就都是我们上面提到的虚拟表,是在内存里的部分,用表的形式展现而已。 Oracle把运行的状态直接构造在内存里,这样不必要去IO一把,而且用表的形式来表现,易于查询。 同时既然是动态部分,那么这个地方是可变化的,数据库停止的时候,这些内存表的信息也就消失叻,直到下次启动,Oracle实例再根据实时的情况进行构造。

大家可以查询一下v$fixed_table这个表,只所以在这里才给大家提出来,就是顾虑大家如果没有区别上面的v$session(synonym),v_$session, v$session, gv$session, x$ksuse的话,直接看这个视图就乱掉了,

现在大家可以查询这个视图了。 这个v$fixed_tables视图就是所有的虚拟视图和表。 也就是 v$session, gv$session, x$ksus这里的三种对象,而v$session(synonym),v_$session是实实在在的对象,所以这个视图里查不到, 这个表里table表示是虚拟表, view表示是虚拟视图。

他们一起构造出我们的性能动态视图。 为什么Oracle不直接的在这些虚拟表上直接就见synonym而是,百转千回的这样绕了一下,大家有兴趣可以思考一下,由于我这里没有确切的答案,所以这个问题仅作为讨论问题,就不在这里阐述叻。

这些动态性能视图对于我们的Oracle DBA对数据库进行管理,比较有意义。是我们DBA对Oracle的实例部分信息进行了解的一种通道。 所以掌握我们这里的重要的动态视图非常的有必要, 下一篇文章, 我将视图 给大家介绍DBA管理中常见的动态性能视图。 通过了解具体的动态视图来看看数据实例里我们关注的信息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有