您的位置:首页 > 其它

如何查找某个对象的定义(V$_X$_DBA)

2008-04-26 20:16 369 查看
经常遇到需要查找某个对象定义的情况,下面针对不同类型的对象分别讨论:

一、V$视图和X$视图

普通用户不能访问V$视图:
SQL>connlunar/lunar@test1
已连接。
SQL>select*fromuser_sys_privs;

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

SQL>select*fromuser_role_privs;

USERNAME GRANTED_ROLE ADMIN_OPTIONDEFAULT_ROLEOS_GRANTED
----------------------------------------------------------------------------------------------
LUNAR CONNECT NO YES NO
LUNAR RESOURCE NO YES NO
PUBLIC PLUSTRACE NO YES NO

SQL>selectcount(*)fromv$fixed_table;

selectcount(*)fromv$fixed_table

ORA-00942:表或视图不存在

必须授权:
SQL>conn/@test1assysDBA
已连接。
SQL>grantselectonv_$fixed_tabletolunar;

授权成功。
SQL>connlunar/lunar@test1
已连接。
SQL>
得到授权的普通用户仍然只能访问V$开头的视图,而不能直接访问V_$开头的视图,
因为实际上V$视图是V_$视图的公有同义词(PUBLICSYNONYM)
要想访问V_$必须带上SYS.V_$,例如
SQL>selectcount(*)fromv$fixed_table;

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

SQL>selectcount(*)fromv_$fixed_table;

selectcount(*)fromv_$fixed_table

ORA-00942:表或视图不存在

SQL>selectcount(*)fromsys.v_$fixed_table;

COUNT(*)
----------1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: