Oracle查看权限

时间:2012-08-02 15:22:39

标签: oracle

在Oracle中,我尝试创建这样的视图

create view ddd as
  select * 
    from myschema1.t1 
         join myschema2.t2 
....

当我运行此语句时,出现错误ORA-01031 : insufficient privileges。但是,如果我只是在Query Worksheet中执行查询,它就可以工作。

为什么我的CREATE VIEW语句失败,我需要什么权限才能使语句成功?

2 个答案:

答案 0 :(得分:2)

为了创建引用myschema1.t1myschema2.t2的视图,拥有该视图的用户必须直接访问这两个表,而不是通过角色。我的第一个猜测是,您已通过角色授予基础表的权限。您可以通过禁用角色并重新运行查询来验证SQL * Plus中的内容。如果你这样做

SQL> set role none;
SQL> select * 
       from myschema1.t1 
            join myschema2.t2 ...

查询是否有效?如果没有,那么您只能通过角色直接授予权限。请注意,如果您希望能够授予其他用户访问您的视图的权限,则需要授予对象WITH GRANT OPTION的权限。

GRANT SELECT ON myschema1.t1 TO <<user that will own the view>> WITH GRANT OPTION;
GRANT SELECT ON myschema2.t2 TO <<user that will own the view>> WITH GRANT OPTION;

如果问题不在于底层对象的特权,则问题很可能是您未被授予CREATE VIEW特权。

答案 1 :(得分:1)

听起来你没有CREATE VIEW特权。如果您无权访问表格,则应获得ORA-00942: table or view does not exist