我创建了一个如下表格。
表的结构如下:
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
);
我该如何解决这个问题?
答案 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也明确指出:
包含视图的架构的所有者必须具有权限 从所有人中选择,插入,更新或删除行所必需的 视图所基于的表或视图。 所有者必须是 直接授予这些权限,而不是通过角色。