19c自治数据库授予analyst用户CTXSYS权限失败,需调整管理员权限?
解决Oracle 19c自治数据库中授权CTXSYS包权限失败的问题
问题原因
在Oracle自治数据库中,默认管理员账号(如ADMIN)虽拥有大部分管理权限,但对于CTXSYS用户下的部分对象,仅具备EXECUTE权限而无转授权限(WITH ADMIN OPTION),因此无法将这些对象的执行权限授予其他用户(如analyst),触发ORA-01031权限不足错误。
解决方案
需先为管理员账号补充对应CTXSYS对象的转授权限,或授予更宽泛的对象权限转授能力,具体操作如下:
1. 检查管理员当前权限(可选)
先确认管理员对失败的CTXSYS包是否拥有转授权限:
SELECT grantee, privilege, grantable FROM dba_tab_privs WHERE owner = 'CTXSYS' AND table_name IN ('CTX_CLS', 'CTX_DOC', 'CTX_QUERY', 'CTX_REPORT') AND grantee = 'ADMIN'; -- 替换为你的管理员账号
若grantable列值为NO,说明管理员无转授权限,需执行后续步骤。
2. 补充转授权限
两种方式可选:
方式一:单独授予指定CTXSYS包的转授权限(最小权限原则)
执行以下SQL(需以拥有足够权限的用户执行,如ADMIN若能操作则直接执行,否则需通过Oracle Cloud控制台的SQL Developer Web以SYS身份执行):
GRANT EXECUTE ON CTXSYS.CTX_CLS TO ADMIN WITH ADMIN OPTION; GRANT EXECUTE ON CTXSYS.CTX_DOC TO ADMIN WITH ADMIN OPTION; GRANT EXECUTE ON CTXSYS.CTX_QUERY TO ADMIN WITH ADMIN OPTION; GRANT EXECUTE ON CTXSYS.CTX_REPORT TO ADMIN WITH ADMIN OPTION;
方式二:授予宽泛的对象权限转授能力(适合频繁授权场景)
若需要管理员能转授任意对象权限,可执行:
GRANT GRANT ANY OBJECT PRIVILEGE TO ADMIN;
注意:此权限范围较大,仅在必要时使用。
3. 重新执行原授权语句
完成上述权限调整后,重新执行你原来给analyst用户的授权语句,即可成功授予之前失败的4项CTXSYS包执行权限。
内容的提问来源于stack exchange,提问作者Robert Orlando
相关产品推荐
相关产品推荐

