开发者社区> bisal> 正文

【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.
+关注继续查看
执行

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。

文章中介绍需要sys账户将数据字典的访问权限赋予star用户,但这里还要注意的是V$SESSION是一个public的同义词,根据前几篇博客介绍的方法,可以看到它封装的是x$ksuse这个表,好像没看到过将这种表赋予用户权限的?


这个问题的解决方法是赋予用户select any dictionary的权限。但除此之外是否还有其它方法?请高手指点!



>经过高手指教,这个问题最简单的方法就是用sys账户登录,grant select on v_$statname ... to user,将v$引用的v_$权限赋予用户,就可以了。select any dictionary这个权限最好不要轻易赋予普通用户

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle各种版本下“示例数据库的创建”的创建
Oracle各种版本下“示例数据库的创建”的创建
105 0
Oracle OS认证与密码文件认证(操作系统认证、口令文件认证、创建密码文件)
Oracle OS认证与密码文件认证(操作系统认证、口令文件认证、创建密码文件)
255 0
oracle学习71-oracle之创建和管理表之练习题
oracle学习71-oracle之创建和管理表之练习题
58 0
oracle学习82-VMware出现配置文件 .vmx 是由VMware产品创建,但该产品与此版 VMware workstation 不兼容,因此无法使用(VMware版本不兼容问题)
oracle学习82-VMware出现配置文件 .vmx 是由VMware产品创建,但该产品与此版 VMware workstation 不兼容,因此无法使用(VMware版本不兼容问题)
154 0
Oracle 11G 手动创建EMDC
Oracle 11G 手动创建EMDC
89 0
Oracle学习(九):创建和管理表
本文主要讲Oracle创建和管理表
85 0
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
158 0
Oracle数据库新建用户并为其创建一个视图(示例)
Oracle数据库新建用户并为其创建一个视图(示例)
355 0
+关注
bisal
Oracle ACE,腾讯云TVP,墨天轮MVP,Oracle 10g/11g OCP,11g OCM,Exin DevOps Master,OCMU成员,Oracle YEP成员,微信公众号:bisal的个人杂货铺
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
迁移 ORACLE 最佳实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多
相关镜像