当前位置:数据库 > Oracle >>

【Oracle】-【ORA-01031】-创建基于数据字典表的视图无权限的问题

【Oracle】-【ORA-01031】-创建基于数据字典表的视图无权限的问题
 
执行
SQL> create or replace view redo_size as 

  2  select name, value from v$statname n, v$sesstat t, v$session s 

  3  where s.audsid = sys_context('USERENV','SESSIONID')

  4    and t.sid = s.sid

  5    and n.statistic#=t.statistic#

  6    and n.name = 'redo size';

select name, value from v$statname n, v$sesstat t, v$session s

                                                   *

ERROR at line 2:

ORA-01031: insufficient privileges

 

 
但单独执行
 
SQL> select name, value from v$statname n, v$sesstat t, v$session s 

  2  where s.audsid = sys_context('USERENV','SESSIONID')

  3    and t.sid = s.sid

  4    and n.statistic#=t.statistic#

  5    and n.name = 'redo size';

NAME          VALUE

redo size      2452

 

 
是可以的。
 
 
当前用户的权限包括:
 
ALTER SESSION

CREATE SESSION

UNLIMITED TABLESPACE
 
网上有帖子说:
 
1、赋予此方案对象SELECT ANY TABLE 的权限。-这里尝试后依旧报错。
 
2、使用
grant select on v$statname to star
,尝试后也是报错。
 
3、
grant select any dictionary to test;
-需l给用户授权查看任何字典的权限。尝试后可以建立。
 
 
我的理解:star这个用户可以单独访问v$statname、v$sesstat、v$session这些字典表,但CREATE VIEW时不行,根据惜分飞的文章介绍,有可能是因为是因为不同schema的问题,总结的:
 
1)在同一个schema下,有查询权限,就可以创建视图。
 
2)在不同schema下,即使有了查询权限,创建视图,还是会提示ORA-01031。
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,