以v_$mystat和v$mystat具体说明
grant语句中使用的v_$mystat和test用户访问的v$mystat不一样
这里说一下 v$mystat 和 v_$mystat 的区别
初始状态下
SQL>  conn test/test
Connected.
SQL> select sid from v$mystat where rownum=1;
select sid from v$mystat where rownum=1
*
ERROR at line 1:
ORA-00942: table or view does not exist
没有赋权限的情况下, 提示访问的表或者视图不存在,当sys用户给test用户授权后
SQL> conn / as sysdba
Connected.
SQL> grant select on v_$mystat to test;
Grant succeeded.
SQL> conn test/test
Connected.
SQL> select sid from v$mystat where rownum=1;
SID
----------
15
test用户就可以访问了,大家注意到上面两个语句中执行的对象并不一样,要访问的是v$mystat,而授权的是v_$mystat,如果我们直接给v$mystat授权
SQL> grant select on v$mystat to test;
grant select on v$mystat to test
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
说明这里授权的v$mystat不是固有视图,不能直接授权,实际这里test访问的v$mystat是一个同义词,sys不能给同义词授权,只能授权给固定的表或视图,同义词在Oracle中可以理解为一个对象的别名,有私有和共用之分,每个用户都可以给自己的对象创建自己的同义词,这样创建的同义词只能自己使用。
 
查询V$MYSTAT的说明
SQL>  select * from dict where table_name='V$MYSTAT';

TABLE_NAME                     COMMENTS
------------------------------ ------------------------------
V$MYSTAT Synonym for V_$MYSTAT
V$MYSTAT是一个同义词是V_$MYSTAT的同义词,再在库中的同义词数据字典中查找这个同义词
SQL> select * from dba_synonyms where SYNONYM_NAME='V$MYSTAT';

OWNER                          SYNONYM_NAME                    TABLE_OWNER                    TABLE_NAME                 DB_LINK
-------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------ -----------------
PUBLIC V$MYSTAT SYS V_$MYSTAT
 
说明V$MYSTAT是SYS用户的V_$MYSTAT视图的共用同义词,查询V_$MYSTAT视图的定义
SQL> select OWNER,VIEW_NAME,TEXT from dba_views where view_name = 'V_$MYSTAT';

OWNER                          VIEW_NAME                           TEXT
------------------------------ ------------------------------
SYS V_$MYSTAT select "SID","STATISTIC#","VALUE" from v$mystat
也可以通过dbms_metadata.get_ddl查询V_$MYSTAT视图的定义,dbms_metadata.get_ddl返回的是long类型的结果,long型数据为可变长字符串,最大长度限制是2GB,sqlplus处理long型数据非常困难,因为里面存的数据一般都很长,sqlplus显示时一般只能显示出来一部分,所以想显示完整的long型数据,要先给sqlplus环境设置LONG参数
 
SQL> SET LONG 9999
SQL> select dbms_metadata.get_ddl('VIEW','V_$MYSTAT') from dual; DBMS_METADATA.GET_DDL('VIEW','V_$MYSTAT')
-------------------------------------------------------------------------------- CREATE OR REPLACE FORCE VIEW "SYS"."V_$MYSTAT" ("SID", "STATISTIC#", "VALUE")
AS
select "SID","STATISTIC#","VALUE" from v$mystat
查询V$MYSTAT的定义
SQL> select * from v$fixed_view_definition where VIEW_NAME = 'V$MYSTAT';

VIEW_NAME                      VIEW_DEFINITION
------------------------------ ------------------------------------------------------------------------------------------
V$MYSTAT select SID , STATISTIC# , VALUE from GV$MYSTAT where inst_id = USERENV('Instance')
说明有一个固定视图也叫V$MYSTAT它来源于GV$MYSTAT,经过查找和分析,GV$MYSTAT同样有一个同名的PUBLIC同义词和一个固定视图,而且也有一个关联的GV_$MYSTAT视图PUBLIC同义词,V$MYSTAT来自于GV_$MYSTAT,而GV_$MYSTAT又产生自固定视图GV$MYSTAT
再看一下固定视图GV$MYSTAT的定义
SQL> select * from v$fixed_view_definition where VIEW_NAME = 'GV$MYSTAT';

VIEW_NAME                      VIEW_DEFINITION
------------------------------ ------------------------------------------------------------------------------------------
GV$MYSTAT select inst_id,ksusenum,ksusestn,ksusestv from x$ksumysta where bitand(ksspaflg,1)!=0 and
bitand(ksuseflg,1)!=0 and ksusestn<(select ksusgstl from x$ksusgif)
说明固定视图GV$MYSTAT来自于x$ksumysta,这里x$ksumysta表中的信息是Oracle实例当前会话的状态信息,可以从v$fixed_table继续查到x$ksumysta和结果中出现的x$ksusgif的信息
SQL> SELECT * FROM v$fixed_table WHERE NAME in ('X$KSUMYSTA','X$KSUSGIF');

NAME                            OBJECT_ID TYPE   TABLE_NUM
------------------------------ ---------- ----- ----------
X$KSUSGIF 4294951930 TABLE 42
X$KSUMYSTA 4294951106 TABLE 44
这是固定表,不用再继续找了,一般用户使用的V$MYSTAT是一个共用同义词,它的来源渠道追溯过程是:V$MYSTAT共用同义词,来自于V_$MYSTAT视图、V$MYSTAT固定视图、GV$MYSTAT、固定表X$KSUMYSTA,所以V$MYSTAT最终来自于固定表X$KSUMYSTA。
 
前面查询中用到的dict实际也是个共用同义词,SYS用户的DICTIONARY视图有两个共用同义词DICT和DICTIONARY,我们使用了DICT同义词,DICTIONARY是一个数据字典,官方描述是:DICTIONARY contains descriptions of data dictionary tables and views. 就是DICTIONARY是个数据字典,内容中包含Oracle系统中所有数据字典,包括所有数据字典表和数据字典视图的名称和说明

Oracle v_$和v$的解释的更多相关文章

  1. oracle中imp命令具体解释

    oracle中imp命令具体解释 Oracle的导入有用程序(Import utility)同意从数据库提取数据,而且将数据写入操作系统文件.imp使用的基本格式:imp[username[/pass ...

  2. oracle在imp订单具体解释

    oracle在imp订单具体解释 Oracle导入实用程序(Import utility)同意从数据库中提取数据,和写入数据到一个操作系统文件项目.imp所用的基本格式:imp[username[/p ...

  3. INS-20802 Oracle Cluster Verification Utility failed解释说明

    背景:安装RAC,安装GI集群管理软件时,在最后快结束时,总是报如上INS-错误 #官方文档:error 说明;字符串解析失败 INS-20802: string failed. Cause: The ...

  4. Oracle Explain Plan,hint解释与示例

    Oracle 专业dba博客:http://blog.csdn.net/tianlesoftware Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响S ...

  5. Oracle imp exp命令具体解释

    怎样在oracle中导入dmp数据库文件? oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令能够把数据从远程数据库server导出到本地的dmp文件,imp命令能够 ...

  6. Oracle SQL Developer中查看解释计划Explain Plan的两种方法

    方法一: 比如要查看解释计划的SQL是:select * from hy_emp 那么在输入窗口输入: EXPLAIN PLAN FOR select * from hy_emp 之后执行,输出窗口会 ...

  7. oracle系统视图V$

    --数据字典表select * from v$fixed_table;select * from v$fixed_view_definition;select * from dictionary; - ...

  8. Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码

    前言:上学期GIS空间数据库课程设计时,老师让实现Shp-栅格图形文件的读取与显示,外加shp转WKB格式存入oracle,不使用第三方类库,花了一天时间在网上找了一些资料,实现了一个简单的栅格图形文 ...

  9. Oracle 11gR2 Database UNDO表空间使用率居高不下-转载

    客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的 ...

随机推荐

  1. vue基于 element-ui 实现菜单动画效果,任意添加 li 个数均匀撑满 ul 宽度

    %)%)%%%))) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .% %% %deg);}

  2. 【t046】牛跳

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] John的奶牛们计划要跳到月亮上去.它们请魔法师配制了P(1 <= P <=150,000 ...

  3. C# 从零开始写 SharpDx 应用 绘制基础图形

    本文告诉大家通过 SharpDx 画出简单的 2D 界面 本文属于 SharpDx 系列 博客,建议从头开始读 本文分为两步,第一步是初始化,第二步才是画界面 初始化 先创建 RenderForm 用 ...

  4. jQuery 工具类函数-字符串操作函数

    调用名为$.trim的工具函数,能删除字符串中左右两边的空格符,但该函数不能删除字符串中间的空格,调用格式为: $.trim (str); 参数str表示需要删除左右两边空格符的字符串. <bo ...

  5. 消息驱动Bean

    消息驱动bean是专门用来处理基于消息请求的组件.MDB负责处理消息,而EJB容器则负责处理服务(事务,安全,并发,消息确认等),使Bean的开发者集中精力在处理消息的业务逻辑上. 消息驱动Bean. ...

  6. Linux 内核USB 驱动

    通用串行总线(USB)是一个在主机和许多外设之间的连接. 最初它被创建来替代许多慢速和不同的总线- 并口, 串口, 和键盘连接--有一个单个的所有设备都可以连接的总线类型.[45] USB 已经成长超 ...

  7. CF 453C. Little Pony and Summer Sun Celebration

    CF 453C. Little Pony and Summer Sun Celebration 构造题. 题目大意,给定一个无向图,每个点必须被指定的奇数或者偶数次,求一条满足条件的路径(长度不超\( ...

  8. 解决css布局时两个div一个宽度固定另一个占满剩余宽度的问题

    /*左侧div*/ .left-div{width: 220px;height: 100%;position: fixed;background: #FFFFFF;} /*右侧div*/ .right ...

  9. MyBatis原理-注意点

    一.${}和#{}的区别 #{}:占位符号,好处防止sql注入 ${}:sql拼接符号 动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.mybatis 在 ...

  10. 浅析Java hashCode()方法

      散列码(hash code)是由对象导出的一个整数值. 散列码没有规律,两个不同的对象x和y,x.hashCode()与y.hashCode()基本上不会相同. public static voi ...