相信很多使用plsql dev的朋友多遇到过类此如下面的提示:

Dynamic Performance Tables not accessible,
Automatic Statistics Disabled for this session
 
You can disable statistics in the preference menu,or obtanin select
priviliges on the v$session,v$sesstat and v$statname tables

一、产生该提示原因
plsql dev在用户运行过程中,要收集用户统计信息,但是由于你现在登录的用户没有访问v$session,v$sesstat and v$statname视图的权限,所以不能收集当前用户的统计信息,和plsql dev工具中配置的Automatic Statistics相冲突,所以就出现了这个提示,试验验证:

[oracle@xifenfei ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.3.0 Production on Thu Nov 10 04:31:57 2011
 
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
sys@XFF>create user chf identified by xifenfei;
 
User created.
 
sys@XFF>grant create session,resource to chf;
 
Grant succeeded.
 
sys@XFF>conn chf/xifenfei
Connected.
chf@XFF>select * from session_privs;
 
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
 
10 rows selected.
 
chf@XFF>SELECT TABLE_NAME FROM USER_TAB_PRIVS;
 
no rows selected

创建一个chf用户,授权create session,resource,无v$session,v$sesstat and v$statname视图访问权限,使用plsql dev登录并查询user_tables表(登录时不会提示,只有用户执行了查询或者相关类此操作时候才会提示)

二、解决问题
根据警告提示,可以有两种方法解决这种警告
1、关闭plsql dev统计功能
在 Tools->Preferences->Options里 把Automatic Statistics前的那个勾子去掉,保存
2、给访问用户授权访问相关视图
授权访问v_$session,v_$sesstat,v_$statname,注意不能直接对v$视图进行授权

chf@XFF>conn / as sysdba
Connected.
sys@XFF>grant select on v_$session to chf;
 
Grant succeeded.
 
sys@XFF>grant select on v_$sesstat to chf;
 
Grant succeeded.
 
sys@XFF>grant select on v_$statname to chf;
 
Grant succeeded.
 
sys@XFF>conn chf/xifenfei
Connected.
 
chf@XFF>SELECT TABLE_NAME FROM USER_TAB_PRIVS;
 
TABLE_NAME
------------------------------
V_$SESSION
V_$SESSTAT
V_$STATNAME

三、问题分析
通过上面的解决方法,为什么授权访问v$session,v$sesstat and v$statname视图就可以Statistics用户的信息了呢?请见下面的两张图
图1:通过plsql dev中的tools–>session选项看用户统计信息

图2:通过sql语句查询用户统计信息

通过两张图的比较可能会发现,他们的数值有一点点出入,那是因为我先通过tools查询出用户统计信息,再通过sql查询,所以图1中的数据有些选项会比图2小那么一点点,通过对v$session,v$sesstat and v$statname视图分析,发现其实plsql dev就是通过下面sql实现统计功能,也从而进一步说明了,为什么plsql dev收集统计信息需要对v$session,v$sesstat and v$statname视图授于访问权限

SELECT C.NAME, B.STATISTIC#, B.VALUE
  FROM V$SESSION A, V$SESSTAT B, V$STATNAME C
 WHERE A.SID = B.SID
   AND A.AUDSID = USERENV('SESSIONID')
   AND B.STATISTIC# = C.STATISTIC#
   ORDER BY C.STATISTIC#;

最新文章

  1. php.ini 配置详解【转载】
  2. C++中static数据成员详解
  3. MIUI系统安全中心之自启动管理解密
  4. 推荐几款自己写博客使用的Ubuntu软件
  5. django 操作 下载 excel xls xlsx csv
  6. BZOJ 1008 题解
  7. 萤火虫算法-python实现
  8. 控件ListView
  9. OPTICS光学算法
  10. C++14介绍
  11. 必学100个常用linux命令大全
  12. 浅谈hadoop中mapreduce的文件分发
  13. 经典的C++库【转帖】
  14. Wix打包系列(五) 部署数据库
  15. java基础回顾(一)
  16. 02_Action
  17. Mybatis第一天
  18. vue 项目实战 (生命周期钩子)
  19. Database学习 - mysql 数据库 多表/复合/子 查询
  20. sshpass 配置密码登录ssh

热门文章

  1. 在Scrapy中使用selenium
  2. C与指针练习题4.14.1
  3. 百度前端代码规范:HTML
  4. day04列表
  5. Jekins学习
  6. 转载:python list和set的性能比较+两者转换
  7. ScriptManager 发送错误到客户端
  8. 使用golang 编写postgresql 扩展
  9. rsync的daemon模式
  10. delphi XML简单处理