a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

走近Oracle數據字典(二)--動態性能視圖

2024-08-29 13:53:44
字體:
來源:轉載
供稿:網友
在上篇文章里“走近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管理中常見的動態性能視圖。  通過了解具體的動態視圖來看看數據實例里我們關注的信息。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色网站在线免费观看 | 精品在线一区二区 | 黄页免费看| 日韩精品www | 极品白嫩少妇无套内谢 | 国产日韩一区二区 | 成人免费视频播放 | 精品视频久久 | 久草在线青青草 | 国产精品午夜电影 | 欧美视频一区二区三区在线观看 | 99精品99| 国产精品高清在线 | 欧美精品1区2区3区 亚洲区在线 | 中文字幕在线第一页 | 一区二区三区四区精品 | 瑟瑟网站在线观看 | 精品久久久久久久久久久久久久 | 色综久久 | 不卡在线| 污视频网站在线观看免费 | 国产视频91在线 | 男女靠逼小视频 | 久久久天堂| 黄色一级毛片 | 偷拍亚洲视频 | 欧美日韩一区二区在线播放 | 成人免费视频在线看 | 中国一级大黄大黄大色毛片 | 欧美成人二区 | 五月婷婷综合激情 | 免费精品毛片 | 国产真实乱全部视频 | 99精品视频在线 | 久久亚 | 国产特黄| 国产v日产∨综合v精品视频 | 亚色在线 | 中文字幕精品一区 | 国产视频一区二区 | 青楼18春一级毛片 |