DBMS_DCAT 程序包

DBMS_DCAT 程序包提供了功能和过程,可帮助自治 AI 数据库用户利用 OCI Data Catalog 的数据发现和集中元数据管理系统。

注:从版本 19.30 开始,Oracle AI Database 19c 以及从版本 23.26.1 开始的 Autonomous AI Database 26ai 支持 DBMS_DCAT。

数据目录从数据湖的对象存储资产中获取元数据。收集过程创建逻辑实体,可以将其视为包含列和关联数据类型的表。DBMS_DCAT 过程和函数将自治 AI 数据库连接到数据目录,然后将资产与数据库同步,从而创建受保护方案和外部表。然后,您可以使用这些外部表查询对象存储,从而轻松地将外部数据与存储在自治 AI 数据库中的数据联接起来。这极大地简化了管理流程;在多个 OCI 服务(包括自治 AI 数据库)之间共享一个集中管理的元数据存储。此外,还提供了自治 AI 数据库字典视图,可用于使用 SQL 检查数据目录的内容,并向您展示这些数据目录实体如何映射到自治 AI 数据库方案和表。

数据目录用户和角色

DBMS_DCAT 软件包支持同步的用户/方案、dcat_admin 用户和本地用户。用户必须具有 dcat_sync 角色才能使用此程序包。

数据目录用户

数据目录角色

所需的身份证明和 IAM 策略

本主题介绍向 Autonomous AI Database 用户授予管理数据目录和从对象存储读取的权限所需的 Oracle Cloud Infrastructure Identity and Access Management (IAM) 用户身份证明和策略。

OCI 数据目录身份证明和策略要求:

AWS Glue 数据目录身份证明和策略要求

为自治 AI 数据库用户授予访问 Amazon Web Services (AWS) Glue Data Catalogs 和从 S3 对象存储读取的权限时,需要以下用户身份证明和策略:

示例:创建 OCI 本机验证身份证明对象

在此示例中,创建可在创建数据目录或对象存储身份证明对象时使用的 OCI 本机验证身份证明。有关更多详细信息,请参见 DBMS_DCAT。SET_DATA_CATALOG_CREDENTIAL 过程和 DBMS_DCAT.SET_OBJECT_STORE_CREDENTIAL 过程分别。

在 OCI 本机验证中,DBMS_CLOUD.CREATE_CREDENTIAL 过程包括以下参数:credential_name、user_ocid、tenancy_ocid、private_key 和 fingerprint。有关此过程的完整说明,请参见 DBMS_CLOUD CREATE_CREDENTIAL Procedure 。

credential_name 是身份证明对象的名称。user_ocid 和 tenancy_ocid 参数分别对应于用户的 OCID 和租户的 OCID。

private_key 参数以 PEM 格式指定生成的私钥。不支持使用口令短语创建的私钥。因此,我们需要确保生成一个没有口令短语的密钥。有关如何创建不带口令短语的私钥的更多详细信息,请参见 How to Generate an API Signing Key 。此外,我们为此参数提供的私钥只能包含密钥本身,而不能包含任何页眉或页脚(例如‘—– BEGIN RSA PRIVATE KEY ——’,‘—– END RSA PRIVATE KEY —–’)。

fingerprint 参数指定在将公钥上载到控制台或使用 OpenSSL 命令后获取的指纹。有关获取指纹的更多详细信息,请参见 How to Upload the Public Key 和 How to Get the Key’s Fingerprint 。

收集所有必要的信息并生成私钥后,我们就可以运行以下 CREATE_CREDENTIAL 过程:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL (
    credential_name => 'OCI_NATIVE_CRED',
    user_ocid              => 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq',
    tenancy_ocid           => 'ocid1.tenancy.oc1..aaaaaaaapwkfqz3upqklvmelbm3j77nn3y7uqmlsod75rea5zmtmbl574ve6a',
    private_key            => 'MIIEogIBAAKCAQEA...t9SH7Zx7a5iV7QZJS5WeFLMUEv+YbYAjnXK+dOnPQtkhOblQwCEY3Hsblj7Xz7o=',
    fingerprint            => '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a');
END;
/

创建身份证明对象后,它将显示在 dba_credentials 表中:

SELECT owner, credential_name
FROM dba_credentials
WHERE credential_name LIKE '%NATIVE%';
OWNER CREDENTIAL_NAME
----- ---------------
ADMIN OCI_NATIVE_CRED

示例:使用用户主体

在此示例中,user1 是组 adb-admins 的成员。向该组的所有成员授予了管理 mycompartment 中的所有数据目录以及从 mycompartment 中的对象存储读取的权限。

  1. 允许属于 adb-admins 的用户管理 mycompartment 中的所有数据目录。

    allow group adb-admins to manage data-catalog-family in compartment mycompartment
  2. 允许作为 adb-admins 成员的用户读取 mycompartment 内任何存储桶中的任何对象。

    allow group adb-admins to read objects in compartment mycompartment