e.g.
SQL > conn sys/oracle@devdb1 as sysdba
Connected.
SQL> create user leiz identified by leiz default tablespace data01;
User created.
SQL> grant connect, resource,create synonym to leiz;
Grant succeeded.
SQL> grant select on v$session to leiz;
grant select on v$session to leiz
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
Reason:
The actual view created on the dynamic performance table is named V_$(view name). The V$(view name) is only a synonym and not an actual fixed table or a view.
SQL> select OWNER, OBJECT_TYPE,OBJECT_NAME
from dba_objects
where object_name in ('V$SESSION','V_$SESSION');
OWNER OBJECT_TYPE OBJECT_NAME
---------- -------------------- --------------------
SYS VIEW V_$SESSION
PUBLIC SYNONYM V$SESSION
SQL> select * from v$fixed_view_definition c
Solution:
Granting select on the underlying V_$ view instead of the V$ synonym will allow you to grant select on the object.
SQL>grant select on v_$session to leiz;
Grant succeeded.(sys user)
SQL> connleiz/leiz@devdb1
Connected.
SQL> select count(*) from sys.v_$session;
COUNT(*)
----------
33
SQL> create synonym v$session for sys.v_$session;
Synonym created.
SQL> select count(*) from v$session;
COUNT(*)
----------
33
本文讨论了在Oracle数据库中遇到的问题,即无法授予用户对动态性能视图(如v$session)的SELECT权限。通过解析错误原因,发现实际创建的是V_$view形式的视图而非固定表或视图。为解决此问题,文章提供了正确的授权方法,即使用v_$view名称而非V_$synonym进行授权,并展示了授权成功后的操作,包括查询动态性能视图数据和创建同名视图。
1328

被折叠的 条评论
为什么被折叠?



