我想使用Oracle SODA,但是由于安全原因,从java应用程序连接到DB的用户不能修改表。
我确实将"SODA_APP“授予了模式,因此SODA java可以工作(它调用SODA pl/sql函数),但显然无法使用”不足的权限“创建集合。
我可以在测试DB中创建集合,并复制表结构。但我也必须复制元数据。
我知道这是因为医生说:
不使用SQL删除作为集合基础的数据库表。除了存储在其表中的文档外,集合还具有元数据,这些元数据也保存在Oracle数据库中。删除集合表也不会删除关联的元数据。
参考文献:https://docs.oracle.com/cd/E56351_01/doc.30/e58124/soda_for_java.htm#ADSDA111
有人知道集合的元数据位于哪里吗?我如何手动创建(或复制)?
谢谢。
发布于 2021-07-13 13:50:59
因此,元数据位于本表中:
XDB.JSON$COLLECTION_METADATA
有当前用户的视图。
SELECT *来自XDB.JSON$USER_COLLECTION_METADATA
它看起来与文档中的"user_soda_collections“视图相同。
发布于 2021-09-03 14:04:51
是的,正确。USER_SODA_COLLECTIONS字典视图报告由当前用户创建的集合。
如果要避免复制,可以将集合“映射”到现有的集合。
如果您想要在预先存在的集合上创建一个集合,您应该能够使用创建集合的“MAP”模式。SODA创建集合,将其映射到现有模式中的表。为此,在创建集合时,需要在元数据中指定"schemaName"和"tableName"。
{
"schemaName": "<SCHEMA_NAME_OF_EXISTING_TABLE>",
"tableName": "<EXISTING_TABLE_NAME>",
...your other fields in metadata...
}此外,如果希望此集合不可变,则可以在元数据中使用"readOnly"字段(将其设置为TRUE)。
希望这能有所帮助
https://stackoverflow.com/questions/68317661
复制相似问题