0

我想使用 Oracle SODA,但出于安全原因,从 java 应用程序连接到数据库的用户无法修改表。

我确实将“SODA_APP”授予模式,所以 SODA java lib 工作(它调用 SODA pl/sql 函数),但显然无法创建“权限不足”的集合

我可以在测试数据库中创建集合,并复制表结构。但我还必须复制元数据。

我知道这一点,因为医生说:

不要使用 SQL 删除作为集合基础的数据库表。除了存储在其表中的文档之外,集合还有元数据,这些元数据也保存在 Oracle 数据库中。删除集合表不会同时删除关联的元数据。

参考: https ://docs.oracle.com/cd/E56351_01/doc.30/e58124/soda_for_java.htm#ADSDA111

有谁知道集合的元数据在哪里/我如何手动创建(或复制)它?

谢谢。

4

2 回答 2

0

是,对的。USER_SODA_COLLECTIONS当前用户创建的字典视图报告集合。

https://docs.oracle.com/en/database/oracle/simple-oracle-document-access/adsdi/overview-soda.html#GUID-AFA0FE26-415B-4BC0-8545-06C38855D54C

如果您想避免复制,可以将集合“映射”到现有集合。

如果您想在现有的集合上创建一个集合,您应该能够使用创建集合的“MAP”模式。SODA 创建一个集合,将其映射到现有模式中的表。为此,您需要在创建集合时在元数据中指定"schemaName"和。"tableName"

{
  "schemaName": "<SCHEMA_NAME_OF_EXISTING_TABLE>",
  "tableName": "<EXISTING_TABLE_NAME>",
    ...your other fields in metadata...
}

此外,如果您希望此集合不可变,则可以使用"readOnly"元数据中的字段(将其设置为TRUE)。

希望这可以帮助

于 2021-09-03T14:04:51.023 回答
0

因此,元数据位于此表中:

XDB.JSON$COLLECTION_METADATA

当前用户有一个视图

选择 * 从 XDB.JSON$USER_COLLECTION_METADATA

它看起来与记录的“user_soda_collections”视图相同。

于 2021-07-13T13:50:59.287 回答