ITPub博客

首页 > 数据库 > Oracle > 两个简单的动态视图:v$statname、v$mystat的一点说明

两个简单的动态视图:v$statname、v$mystat的一点说明

Oracle 作者:小小黄-812 时间:2014-05-07 10:31:32 0 删除 编辑
关于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就是统计量的名称。
Sql代码 复制代码 收藏代码
  1. sys@OCP10G> desc v$statname;
  2. 名称 是否为空? 类型
  3. ---------------------------------------------------------------------------------------
  4. STATISTIC#                                NUMBER
  5. NAME                                   VARCHAR2(64)
  6. CLASS                                   NUMBER
  7. STAT_ID                                  NUMBER


Sql代码 复制代码 收藏代码
  1. sys@OCP10G> select * from v$statname;
  2. STATISTIC#
  3. NAME CLASS STAT_ID
  4. ---------------------------------------------------------------------------------------
  5. 0 logons cumulative 1 2666645286
  6. 1 logons current 1 3080465522
  7. 2 opened cursors cumulative 1 85052502
  8. 3 opened cursors current 1 2301954928
  9. ....
  10. 314 OTC commit optimization hits 1 284064864054
  11. 315 OTC commit optimization failure - setup 1 28 3633344886

v$mystat字面来说就是当前用户的各种统计信息,sid就是session的id(也就是当前用户),STATISTIC#就是统计量的编号(用来唯一确定统计量

的名称),value是统计量的值。
Sql代码 复制代码 收藏代码
  1. sys@OCP10G> show user
  2. USER"SYS"
  3. sys@OCP10G> select sid,username from v$session where username='SYS';
  4. SID USERNAME
  5. ------------------------------------------------------------------
  6. 138 SYS
  7. sys@OCP10G> desc v$mystat;
  8. 名称 是否为空? 类型
  9. --------------------------------------------------------------------------------------
  10. SID NUMBER
  11. STATISTIC# NUMBER
  12. VALUE NUMBER
  13. sys@OCP10G> select * from v$mystat where rownum<10;
  14. SID STATISTIC# VALUE
  15. ------------------------------------------------------------------------
  16. 138 0 1
  17. 138 1 1
  18. 138 2 54
  19. 138 3 1
  20. ...
  21. 138 314 0
  22. 138 315 0

小结:
v$statname视图获取系统的统计量的说明
v$mystat视图获取当前用户的在v$statname中的每个统计量的值
两个视图按STATISTIC#连接,可以得到当前用户的sid,统计量的编号,统计量的名称,和统计值.

Sql代码 复制代码 收藏代码
  1. select b.sid,a.STATISTIC#,a.name,b.value from v$statname a,v$mystat b
  2. where a.STATISTIC#=b.STATISTIC#;
  3. SID STATISTIC# NAME VALUE
  4. ---------------------------------------------------------------------------------------
  5. 138 0 logonscumulative          1
  6. 138 1 logons current           1
  7. 138 2 opened cursors cumulative      56
  8. 138 3 opened cursors current       1
  9. ...
  10. 138 314 OTC commit optimization hits     0
  11. 138 315 OTC commit optimization failure - setup 0

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

下一篇: 聚簇表简介
请登录后发表评论 登录
全部评论

注册时间:2013-08-26

  • 博文量
    18
  • 访问量
    119043