我有一个模式(owner_schema),它能够使用SODA API PL/SQL创建集合。现在我想有另一个schema(user_schema)来访问由owner_schema创建的集合,并能够插入/读取/删除文档:user_schema不能是集合的所有者,并且不能具有任何CREATE特权(CREATE_TABLE等)。
问题是,即使user_schema具有SODA_APP角色,他也无法看到owner_schema创建的集合。我已经尝试过在后台表上向user_schema授予select权限,但它不起作用(user_schema调用openCollection,所以我猜授予权限必须是在集合上,而不是在表上)。我看到查询JSON$USER_COLLECTION_METADATA视图时,owner_schema看到了集合,user_schema将此视图设置为空。我还尝试给予COLLECTION_METADATA表授予user_schema,但没有成功。我读到了关于Map集合的内容,但是它假设user_schema运行create_collection proc,这需要CREATE_TABLE priv.
一个模式是否可能在不拥有它的情况下对另一个模式创建的集合进行操作,也不具有任何像CREATE_TABLE这样的特权?
1条答案
按热度按时间qgzx9mmu1#
也许在所有者模式中创建一个DBMS_SODA Package 器包(作为定义者运行)...例如OWNER_SODA...DBMS_SODA程序/函数。还可以将SODA_APP角色权限直接授予OWNER(PL/SQL包不使用定义者的角色)。