【问题标题】:What is the privilege required to create unique/primary key constraint in Oracle?在 Oracle 中创建唯一/主键约束需要什么权限?
【发布时间】:2018-03-23 17:57:55
【问题描述】:

虽然感觉就像在没有太多研究的情况下问了一个非常基本的问题,但在 Oracle 论坛、AskTom、Oracle Docs 和 SOF 中进行了大量搜索后,在此处发布了这个问题。我正在尝试缩小创建唯一键约束或主键约束所需的权限。这是因为尝试创建具有唯一/主键的简单表会因权限不足而失败。

SQL> connect sys/syspass
Connected.
SQL> show user
USER is "SYS"
SQL> grant create session, create table, create any index, 
     create indextype, unlimited tablespace to tuser1;

Grant succeeded.

SQL> 
SQL> connect tuser1/tuserp1
Connected.
SQL> create table tab1 (
atomic          int unique,
symbol          varchar2(2) unique,
name            char(15)
);  2    3    4    5  
create table tab1 (
*
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> create table tab2 (empno number, name varchar2(30), sal number,
constraint pk_tab2 primary key (empno));  2  
create table tab2(empno number, name varchar2(30), sal number,
*
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> 

请帮我找出在这种情况下可能缺少的权限吗?

【问题讨论】:

  • 您可能会在@dba.stackexchange.com 找到更好的听众来回答这个问题
  • 你能在没有任何约束的情况下创建表吗?尝试在此处发布答案 - 无论哪种方式都会有所帮助。
  • @mathguy 是的,我可以创建表格

标签: sql oracle constraints oracle12c privileges


【解决方案1】:

授予resource 必须解决问题:

SQL> conn tuser1/tuserp1
Connected.
SQL> create table tab2 (empno number, name varchar2(30), sal number,
constraint pk_tab2 primary key (empno));    
create table tab2 (empno number, name varchar2(30), sal number,
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn / as sysdba
Connected.
SQL> grant resource to hr;

Grant succeeded.

SQL> conn tuser1/tuserp1
Connected.
SQL> create table tab2 (empno number, name varchar2(30), sal number,
constraint pk_tab2 primary key (empno));    

Table created.

【讨论】:

  • 是的,使用资源也会遇到同样的问题。
  • @learningloop 我在我的媒体中测试过没有问题。 (当我 revoke resource from myschema 时)创建表 DDL 也说 ERROR at line 1: ORA-01031: insufficient privileges。
  • 感谢您验证您的解决方案。终于缩小了问题的原因。 dba 通过禁止除rely 约束之外的约束,在数据库上设置了lockdown 配置文件。另外,发现unique和primary键所需的权限是unlimited tablespace。我很抱歉造成混乱。想删除这个问题,但想传达这个发现。
  • @learningloop 也谢谢你。我认为不需要删除,为了resource :)
  • 自 Oracle 11 起不鼓励使用 resource 角色
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多