Oracle授予CREATE ANY TABLE仍无法建表报ORA-01031需额外哪些权限
Oracle跨schema建含IDENTITY列表的权限配置方案
问题根因
你遇到的ORA-01031报错是建表语句中的GENERATED ... AS IDENTITY自增列属性导致的:Oracle 处理IDENTITY列时,会自动在目标schema(此处为OTHER)下创建一个和该列绑定的隐式序列,你已授予的CREATE ANY TABLE、CREATE ANY INDEX权限仅覆盖普通表和索引的跨schema创建,不包含序列的跨schema创建权限。之前授予GRANT ALL PRIVILEGES能解决问题,是因为全权限默认包含了序列相关的授权。
最小权限补充方案
你只需额外给TEST用户授予CREATE ANY SEQUENCE权限即可,使用SYSTEM用户执行以下语句:
GRANT CREATE ANY SEQUENCE TO TEST;
若授权后仍报错,需确认目标用户OTHER在其默认表空间上有足够的存储配额,可执行以下语句配置(按需替换<表空间名>为OTHER用户的默认表空间名称):
ALTER USER OTHER QUOTA UNLIMITED ON <表空间名>;
内容的提问来源于stack exchange,提问作者Jens Schauder
相关产品推荐
相关产品推荐

