学习《Expert Oracle Database Architecture 2nd Edition》,Runstats第一段演示脚本,创建stats视图,如下:
liyan@TEST> create or replace view stats
2 as select 'STAT...' || a.name name, b.value
3 from v$statname a, v$mystat b
4 where a.statistic# = b.statistic#
5 union all
6 select 'LATCH.' || name, gets
7 from v$latch;
说明:用户liyan由sys用户创建,并授予dba角色。
执行后出现如下报错:
from v$statname a, v$mystat b
*
ERROR at line 3:
ORA-01031: insufficient privileges
用户具有dba权限,且单独执行语句中查询部分,可正常返回结果,亦可创建视图。出现上述问题的原因为:具有dba角色的用户可以创建视图也可以查看其它视图,但是如果该用户想要基于一个视图创建一个视图,那么必须显式为该用户授予select 该视图的权限。
授权中再次出现报错:
liyan@TEST> conn / as sysdba
Connected.
sys@TEST> grant select on v$statname to liyan;
grant select on v$statname to liyan
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
错误原因: v$statname只是v_$statname的同义词,应改为
sys@TEST> grant select on v_$statname to liyan;
Grant succeeded.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28554493/viewspace-754132/
,如需转载,请注明出处,否则将追究法律责任。