Oracle用户获权后跨模式建表成功但创建索引提示权限不足
跨模式建表成功却无法创建索引(ORA-01031)的问题解决
场景还原
管理员授权操作
GRANT CREATE ANY TABLE TO APP_DBA_ROLE WITH ADMIN OPTION; Grant succeeded GRANT CREATE ANY INDEX TO APP_DBA_ROLE WITH ADMIN OPTION; Grant succeeded GRANT ALTER ANY TABLE TO APP_DBA_ROLE WITH ADMIN OPTION; Grant succeeded GRANT ALTER ANY INDEX TO APP_DBA_ROLE WITH ADMIN OPTION; GRANT APP_DBA_ROLE TO JOE; Grant succeeded
用户JOE的执行结果
CREATE TABLE FDS_MAINT.LOG (LOG_ID NUMBER) successfully created CREATE UNIQUE INDEX FDS_MAINT.LOG ON FDS_MAINT.LOG (LOG_ID); ORA-01031: insufficient privileges
问题原因
这是Oracle的误导性报错——你试图创建的索引名称和同模式下的表名完全重复。Oracle要求同一模式下,表、索引、视图等对象的名称必须唯一,即便权限足够,命名冲突也会触发这个权限不足的错误提示。
解决方法
修改索引名称,确保它和FDS_MAINT模式下的LOG表名不重复即可,例如:
CREATE UNIQUE INDEX FDS_MAINT.LOG_PK ON FDS_MAINT.LOG (LOG_ID);
内容的提问来源于stack exchange,提问作者Chad
相关产品推荐
相关产品推荐

