You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

咨询Oracle中创建唯一约束与主键约束所需的权限

解决创建带主键/唯一键的表时出现的ORA-01031权限不足问题

嘿,我来帮你搞定这个权限坑!你遇到的ORA-01031: insufficient privileges错误,根源藏在Oracle的约束创建逻辑里:当你给表添加主键或唯一约束时,Oracle会自动在当前用户的schema下生成对应的唯一索引,而你给tuser1的权限里刚好缺少了创建自身schema索引的必要权限。

权限分析

你之前给tuser1授权了CREATE ANY INDEX,但这个权限是允许用户在其他用户的schema下创建索引;而用户在自己的schema里建表时,由约束自动触发的索引创建操作,需要的是CREATE INDEX权限——这是针对自身schema的索引创建权限,和CREATE ANY INDEX是两个不同的权限。

解决方案

SYS用户重新连接数据库,执行以下授权语句,补上缺失的CREATE INDEX权限:

GRANT CREATE SESSION, CREATE TABLE, CREATE INDEX, CREATE ANY INDEX, CREATE INDEXTYPE, UNLIMITED TABLESPACE TO tuser1;

验证操作

授权完成后,切换回tuser1,重新执行你的建表语句:

CREATE TABLE tab1 ( atomic INT UNIQUE, symbol VARCHAR2(2) UNIQUE, name CHAR(15) );
CREATE TABLE tab2 (empno NUMBER, name VARCHAR2(30), sal NUMBER, CONSTRAINT pk_tab2 PRIMARY KEY (empno));

这时候应该就能顺利执行,不会再弹出权限不足的错误了。

内容的提问来源于stack exchange,提问作者bprasanna

火山引擎 最新活动