zoukankan      html  css  js  c++  java
  • <转> plsql dev中Dynamic Performance Tables not accessible分析解决

    相信很多使用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表(登录时不会提示,只有用户执行了查询或者相关类此操作时候才会提示)
    Dynamic Performance Tables not accessible

    二、解决问题
    根据警告提示,可以有两种方法解决这种警告
    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选项看用户统计信息
    通过plsql dev中的session选项看用户统计信息
    图2:通过sql语句查询用户统计信息
    通过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#;
  • 相关阅读:
    python3中try异常调试 raise 异常抛出
    基于 k8s-搭建 Kubernetes 的 web 管理界面
    PostgreSQL SERIAL创建自增列
    C++之同名覆盖、多态
    golang实现路由中间件middleware
    fastjson源码分析之序列化
    AJPFX实践 java实现快速排序算法
    AJPFX关于IO流的简单总结
    AJPFX关于多态中的动态绑定和静态绑定的总结
    关于java的arrays数组排序示例AJPFX的分享
  • 原文地址:https://www.cnblogs.com/zhangxiaoxia/p/9590310.html
Copyright © 2011-2022 走看看