打印本文 打印本文  关闭窗口 关闭窗口  
实例讲解如何查找某个对象的定义情况
作者:佚名  文章来源:不详  点击数  更新时间:2008/3/28 16:34:54  文章录入:杜斌  责任编辑:杜斌

  在实际的工作中,我们经常需要查找某个对象的定义的情况,本文中我们将针对不同类型的对象分别进行讲解:

  一、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          NOLUNAR       RESOURCE     NO           YES          NOPUBLIC      PLUSTRACE    NO           YES          NOSQL> select count(*) from v$fixed_table;select count(*) from v$fixed_tableORA-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(*)----------       912SQL> select count(*) from v_$fixed_table;select count(*) from v_$fixed_tableORA-00942: 表或视图不存在SQL> select count(*) from sys.v_$fixed_table;  COUNT(*)----------       912SQL>
打印本文 打印本文  关闭窗口 关闭窗口