Oracle SODA映射集合插入失败:OWNER/USER架构权限问询
问题解答:Oracle SODA跨Schema集合访问权限问题
结论
这种OWNER schema持有集合、USER schema通过映射集合执行CRUD的模式完全支持,问题出在权限授予不完整——仅授予表的CRUD权限不足以让USER正常操作SODA映射集合。
缺失的权限补充
除已授予的表权限外,OWNER需额外给USER授予以下权限,可通过两种方式实现:
方式1:使用SODA内置存储过程(推荐)
在OWNER schema下执行以下代码,自动授予SODA集合操作所需的全部权限:
BEGIN DBMS_SODA.grant_permission( collection_name => 'TESTCOLLECTION1', grantee => 'USER', permissions => DBMS_SODA.PERMISSION_READ_WRITE ); END; /
方式2:手动授予权限
若无法使用内置存储过程,可手动授予以下权限:
- 访问SODA集合元数据的权限:
GRANT SELECT ON OWNER.SODA_COLLECTIONS TO USER; GRANT SELECT ON OWNER.SODA_COLLECTION_METADATA TO USER;
- 表触发器执行权限(SODA集合会自动创建维护
LAST_MODIFIED、VERSION等列的触发器):
-- 触发器名称可通过查询USER_TRIGGERS获取,替换为实际名称 GRANT EXECUTE ON OWNER."TESTCOLLECTION1_TRG" TO USER;
验证
补充权限后,重新执行USER schema下的插入和查询代码即可正常工作:
- 插入文档后,
l_status会返回1(表示插入成功) - 查询代码能正常输出文档内容
内容的提问来源于stack exchange,提问作者Kartik
相关产品推荐
相关产品推荐

