兩個簡單的動態視圖:v$statname、v$mystat的一點說明

關於Oracle錯誤:動態執行表不可訪問,本會話自動統計被禁止,關閉自動統計之後的問題:
 
    在v$session,v$statname,v$sesstat和v$mystat四個動態執行表中沒有select權限導致我每次執行語句時會提示,告訴我會話的自動統計被禁止。
 
解決方法:
 
用SYS登錄,授權給相應的用戶,用下面的語句,
grant select on v_$statname to user;
自動統計功能可以關掉。
最後的這個,超時斷開問題,可以設置USER_PROFILES裏面看到的IDLE_TIME值,
首先查看你的當前用戶的PROFILE是哪個,
select profile from dba_users where username='SCOTT' ;
假如是DEFAULT這個PROFILE,那麼修改IDLE_TIME這個值
alter profile default limit idle_time unlimited ;
必要時創建新的PROFILE。
 
v$statname是對統計信息的說明,STATISTIC#相當於編號,NAME就是統計量的名稱。
sys@OCP10G> desc v$statname;  
 名稱                          是否爲空?                       類型
---------------------------------------------------------------------------------------
STATISTIC#                                NUMBER
NAME                                   VARCHAR2(64)
CLASS                                   NUMBER
STAT_ID                                  NUMBER
 

sys@OCP10G> select * from v$statname;

STATISTIC#
 NAME                                      CLASS                                 STAT_ID
---------------------------------------------------------------------------------------
0 logons cumulative                     1                                 2666645286
1 logons current                           1                                 3080465522
2 opened cursors cumulative        1                                85052502
3 opened cursors current             1                                2301954928
    ....
314 OTC commit optimization hits          1                    284064864054
315 OTC commit optimization failure - setup      1       28 3633344886

 
v$mystat字面來說就是當前用戶的各種統計信息,sid就是session的id(也就是當前用戶),STATISTIC#就是統計量的編號(用來唯一確定統計量

的名稱),value是統計量的值。
sys@OCP10G> show user

USER 爲 "SYS"

sys@OCP10G> select sid,username from v$session where username='SYS';
       SID                 USERNAME
------------------------------------------------------------------
       138                      SYS

sys@OCP10G> desc v$mystat;

名稱                    是否爲空?                    類型
--------------------------------------------------------------------------------------
SID                                                             NUMBER
STATISTIC#                                                NUMBER
VALUE                                                         NUMBER

sys@OCP10G> select * from v$mystat where rownum<10;

       SID       STATISTIC#         VALUE
------------------------------------------------------------------------
       138            0                       1
       138            1                       1
       138            2                      54
       138            3                       1
        ...
       138          314                    0
       138          315                     0
 
小結:
v$statname視圖獲取系統的統計量的說明
v$mystat視圖獲取當前用戶的在v$statname中的每個統計量的值
兩個視圖按STATISTIC#連接,可以得到當前用戶的sid,統計量的編號,統計量的名稱,和統計值.

select b.sid,a.STATISTIC#,a.name,b.value from v$statname a,v$mystat b 

where a.STATISTIC#=b.STATISTIC#;

   SID      STATISTIC#                  NAME                                 VALUE
---------------------------------------------------------------------------------------
   138             0                    logonscumulative          1
   138             1                      logons current           1
   138             2               opened cursors cumulative      56
   138             3                 opened cursors current       1
        ...
   138            314           OTC commit optimization hits     0
   138            315       OTC commit optimization failure - setup 0
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章