首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建视图时的ORA-01031

创建视图时的ORA-01031
EN

Stack Overflow用户
提问于 2013-12-09 15:11:11
回答 1查看 1.7K关注 0票数 2

我开始阅读Tom的书,并立即遇到了一个问题:) - sql执行得很好,但是基于这个sql返回ORA-01031创建视图。

以下命令是代表"system“用户执行的:

代码语言:javascript
复制
create or replace view stats
as select 'STAT...' || a.name name, b.value
      from v$statname a, v$mystat b
     where a.statistic# = b.statistic#
    union all
    select 'LATCH.' || name,  gets
      from v$latch
    union all
    select 'STAT...Elapsed Time', hsecs from v$timer;

第3行错误: ORA-01031:权限不足

但是,执行sql不会出现错误:

代码语言:javascript
复制
select 'STAT...' || a.name name, b.value
      from v$statname a, v$mystat b
     where a.statistic# = b.statistic#
    union all
    select 'LATCH.' || name,  gets
      from v$latch
    union all
    select 'STAT...Elapsed Time', hsecs from v$timer;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-09 15:36:41

system用户缺乏select any dictionary权限,也没有直接授予的select on [v_$mystat|v_$statname | v_$latch]对象权限(不是通过dba角色授予的),而不是create view权限。这就是您不能在系统架构中创建该视图的主要原因。一旦您将上述特权之一授予system用户,您将能够成功地创建您的视图,但是,尝试在系统模式中创建从不创建用户对象,无论是sys还是system。创建单独的用户,授予适当的权限,并做任何您想做的事情。

代码语言:javascript
复制
SQL> show user;
USER is "SYSTEM"

SQL> create or replace view v_1 as
  2    select *
  3      from v$mystat;

from v$mystat
         *
ERROR at line 3:
ORA-01031: insufficient privileges 


SQL> conn / as sysdba
Connected.

SQL> grant select any dictionary to system;

Grant succeeded.

SQL> conn system/pwd -- connect as system

Connected.

SQL> create or replace view v_1 as
  2    select *
  3      from v$mystat;

View created.

SQL> drop view v_1;

View dropped.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20473934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档