oracle 10g中的权限不足

时间:2015-11-19 08:22:17

标签: sql oracle

我创建了一个如下表格。

enter image description here

表的结构如下:

Create Table advanced
 (Id  varchar(15),
 Name varchar(20),
 Dept  varchar(15),
 Cgpa  float,
 Birth_date date,
 Mob_no  int,
 Dist varchar(20),
 Salary  number(8));

当我想按如下方式创建视图时,sql plus会给我错误'权限不足' 。

Create View advanced_data as
(
select name,dept,dist,salary from advanced
);

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

看来,您的用户无权创建视图。

要解决此问题,请按以下步骤操作: 由sys用户以sysdba身份登录sqlplus,然后运行此命令。

GRANT CREATE VIEW TO <user Name>;
GRANT CREATE ANY VIEW TO <user Name>;

Oracle DBA Blog ORA-01031:&#34;特权不足&#34;当您尝试执行尚未被授予适当权限的程序或功能时,会发生错误。

对于DBA,如果目标OS可执行文件没有读取和执行权限(例如,UNIX / Linux中的(770)),则可能发生ORA-01031,并确保oracle用户是dba组的成员(例如/ etc / group)。 Windows注册表中有类似的权限。

在Oracle内部,&#34; ORA-01031:权限不足&#34;登录&#34; as sysdba&#34;可以避免错误具有无限的数据库权限。

答案 1 :(得分:1)

来自here

  

要创建视图,您必须满足以下要求:

     

您必须已获得CREATE VIEW(在您的视图中创建视图)   schema)或CREATE ANY VIEW(在另一个用户的模式中创建视图)   系统特权,显式或通过角色。

     

您必须已明确授予SELECT,INSERT,UPDATE或   删除视图或底层所有基础对象的对象权限   SELECT ANY TABLE,INSERT ANY TABLE,UPDATE ANY TABLE或DELETE   任何TABLE系统权限。你可能没有获得这些   通过角色享有特权。

     

此外,为了让其他用户可以访问您的视图,您也可以   必须已经使用了对象基础对象接收了对象特权   GRANT OPTION选项或具有ADMIN的适当系统特权   选项选项。如果您还没有,受助者无法访问您的观点。“

因此,您需要执行以下查询以获取用户创建视图的权限:

@RequestMapping(
            value="/api/greeting",
            method=RequestMethod.GET,
            produces=MediaType.APPLICATION_JSON_VALUE
            )
public ResponseEntity<Greeting> createGreeting(@RequestBody Greeting greeting){

    Greeting savedGreeting = save(greeting);
    return new ResponseEntity <Greeting> (savedGreeting, HttpStatus.CREATED);
    }

Oracle docs也明确指出:

  

包含视图的架构的所有者必须具有权限   从所有人中选择,插入,更新或删除行所必需的   视图所基于的表或视图。 所有者必须是   直接授予这些权限,而不是通过角色。