对于v$mystat,我们可能最常用的就是用这个视图来查询当前session的sid(seelct * from v$mystat where rownum=1),不过它的功能可不止简单提供一个sid,它实际上提供了当前session各项统计数据。
1. v$mystat提供了session各项指标值(指标: STATISTIC# ,值:value)
SQL> select * from v$mystat;
SID STATISTIC# VALUE
---------- ---------- ----------
136 0 1
136 1 1
136 2 57
136 3 2
136 4 0
136 5 0
136 6 26
136 7 907
136 8 10
136 9 304
136 10 0
2. 各个指标代表的含义:
SQL> select statistic#,NAME from v$statname;
STATISTIC# NAME
---------- ----------------------------------------------------------------
0 logons cumulative
1 logons current
2 opened cursors cumulative
3 opened cursors current
4 user commits
5 user rollbacks
6 user calls
7 recursive calls
8 recursive cpu usage
9 session logical reads
10 session stored procedure space
3. 举个例子,看session产生的redo有多少
SELECT c.VALUE FROM v$mystat c,v$statname b
WHERE c.STATISTIC#=b.STATISTIC# AND b.NAME='redo size' ;
VALUE
-----------------
624 -------执行DML操作之前的redo量
SQL> set autotrace trace stat;
SQL> update a set object_id=99;
49792 rows updated.
Statistics
----------------------------------------------------------
231 recursive calls
56603 db block gets
14531 consistent gets
1 physical reads
17910064 redo size ---------执行这次操作产生的redo量
669 bytes sent via SQL*Net to client
561 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
49792 rows processed
SQL> set autotrace off;
SELECT c.VALUE FROM v$mystat c,v$statname b
WHERE c.STATISTIC#=b.STATISTIC# AND b.NAME='redo size' ;
VALUE
--------------------
17910688 -----执行DML操作之后的redo量
可以看到 17910688 - 624 = 17910064 跟统计数据完全吻合。同理session的各项指标都可以通过v$mystat来获取,所以千万别小看v$mystat呀,功能还是蛮强大滴。。。。。。。。