在实际的工作中,我们经常需要查找某个对象的定义的情况,本文中我们将针对不同类型的对象分别进行讲解: 一、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> |