网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 体系架构 > 实例讲解如何查找某个对象的定义情况-体系架构  

实例讲解如何查找某个对象的定义情况-体系架构

2008-03-13  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  在实际的工作中,我们经常需要查找某个对象的定义的情况,本文中我们将针对不同类型的对象分别进行讲解:
 
  一、V$视图和X$视图
 
  普通的用户不能访问V$视图:
 
 SQL> conn lunar/lunar@test1
已连接。
SQL> select * from user_sys_privs;

USERNAME       PRIVILEGE   ADMIN_OPTION
---------- -------------- ------------

SQL> select * from user_role_privs;

USERNAME      GRANTED_ROLE   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
----------- --------------- ------------ ------------ ----------
LUNAR       CONNECT      NO           YES          NO
LUNAR       RESOURCE     NO           YES          NO 中国网管联盟bitsCN.com
PUBLIC      PLUSTRACE    NO           YES          NO

SQL> select count(*) from v$fixed_table;

select count(*) from v$fixed_table

ORA-00942: 表或视图不存在

必须授权:
SQL> conn /@test1 as sysdba
已连接。
SQL> grant select on v_$fixed_table to lunar;

授权成功。
SQL> conn lunar/lunar@test1
已连接。
SQL>

 
  我们可以发现,得到授权的普通用户仍然只能访问V$开头的视图,而不能直接访问V_$开头的视图,因为实际上V$视图是V_$视图的公有同义词(PUBLIC SYNONYM)要想访问V_$必须带上SYS.V_$.
 
  例如:
 
  
 SQL> select count(*) from v$fixed_table;

  COUNT(*)
----------
       912

网管联盟bitsCN@com



SQL> select count(*) from v_$fixed_table;

select count(*) from v_$fixed_table

ORA-00942: 表或视图不存在

SQL> select count(*) from sys.v_$fixed_table;

  COUNT(*)
----------
       912

SQL>
 
  与此同时,也可以授予用户SELECT any table权限,这样这个用户就可以访问所有的V$视图:
 
  
 SQL> grant select any table to lunar;

授权成功。

SQL> select * from user_role_privs;

USERNAME         GRANTED_ROLE       ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------ --------------------- ------------ ------------ ----------
LUNAR            CONNECT             NO           YES          NO 网管bitscn_com
LUNAR            RESOURCE            NO           YES          NO
PUBLIC           PLUSTRACE           NO           YES          NO

SQL> select * from user_sys_privs;

USERNAME         PRIVILEGE           ADMIN_OPTION
------------ ----------------------- ------------
LUNAR            SELECT ANY TABLE       NO

SQL> select count(*) from v$fixed_table;

  COUNT(*)
----------
       912 中国网管论坛bbs.bitsCN.com

SQL> select * from v$fixed_table where rownum<2;

NAME       OBJECT_ID TYPE   TABLE_NUM
---------- ---------- ----- ----------
X$KQFTA    4294950912 TABLE     0

SQL> select * from v_$fixed_table where rownum<2;

select * from v_$fixed_table where rownum<2

ORA-00942: 表或视图不存在

SQL> select * from sys.v_$fixed_table where rownum<2;

NAME       OBJECT_ID  TYPE   TABLE_NUM
---------- ---------- ----- ----------
X$KQFTA    4294950912 TABLE      0

SQL>


 
  通过查询V$FIXED_TABLE视图,我们可以看到大部分V$视图和一些X$视图(还有一些Oracle未公开的视图不在其中)。

中国网管联盟bitsCN.com

网管联盟bitsCN_com


TAGs
 上一篇:深入讲解"database link"的设置和使用-体系架构   下一篇:深入讲解"alert log"过大时的处理方法-体系架构
实例讲解如何查找某个对象的定义情况-体系架构 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: