【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这个权限最好不要轻易赋予普通用户

目录
相关文章
|
6月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL Oracle 关系型数据库
[oracle]使用impdp导入数据时卡在视图
[oracle]使用impdp导入数据时卡在视图
210 2
|
4月前
|
Oracle 安全 关系型数据库
|
5月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之oracle无主键的表支持同步吗如何实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
44 3
|
6月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
Oracle 关系型数据库 Java
Oracle 19c 查看隐含参数视图
Oracle 19c 查看隐含参数视图
95 7
|
6月前
|
SQL Oracle 关系型数据库
【ORACLE】 事务 | 锁 | 约束 | 权限、角色与用户管理
【ORACLE】 事务 | 锁 | 约束 | 权限、角色与用户管理
69 1
|
6月前
|
SQL 存储 Oracle
Oracle中的Dual表:数据世界的“神奇小盒子”
【4月更文挑战第19天】Oracle的Dual表是一个虚拟表,仅含一行一列,常用于执行SQL函数、数据类型转换、测试语句和动态SQL。它是测试和便捷操作的工具,如获取当前日期(`SELECT SYSDATE FROM DUAL`)、数字转字符串(`SELECT TO_CHAR(12345) FROM DUAL`)。在存储过程、函数和触发器中也发挥重要作用,是数据库管理员的得力助手。
|
6月前
|
存储 SQL Oracle
Oracle系列十二:视图、记录、同义词、序列
Oracle系列十二:视图、记录、同义词、序列