关于查询远程目录和数据库

在本章中,您将学习使用以下格式的 SQL 语法查询外部数据:[schema].object@catalog_name

此处的语法 [schema].object@catalog_name 表示访问数据库对象

此表介绍了语法中使用的参数及其说明:

表 16-2 语法中使用的参数和说明

参数 说明
方案

此字段是可选的,默认为当前用户。方案是目录中的名称空间,用于组织相关的数据库对象,例如表、视图、过程或函数。它充当这些对象的逻辑容器。

对象 此字段表示方案中包含的任何数据库对象,例如表、视图、过程或函数。
目录 目录字段显示具有参考表的目录的名称。您可以使用 Data Studio 工具套件的 DBMS_CATALOG 程序包或目录工具创建和管理目录。

注意:

您也可以将目录替换为 dbLinks

访问远程表

要使用目录从远程方案访问表,必须执行以下步骤:
  1. 挂载目录:首先通过任何受支持类型的数据存储(例如 Iceberg、Delta Lake 等)挂载目录。挂载目录会标准化元数据,从而使对外部数据的 SQL 访问权限,就像它是目录中某个方案中的表一样。有关挂载目录的详细步骤,请参阅管理目录。装载目录并标准化元数据后,可以使用 SQL 直接查询外部数据。即使外部数据实际上并不作为传统表存在,目录也会将其抽象为表格格式,以便于查询。
  2. 引用表:挂载后,可以通过使用以下语法指定方案和目录(如果适用)后跟表名来引用远程表:[remote_schema].table@catalog

此标识符中的 schema 是包含远程表的远程方案。在这种情况下,Table 是远程目录中的表名。

注意:

用户必须具有适当的身份证明才能访问特定表和目录。

要考虑的要点

  • 该功能使用 ADB-S 环境中安装的 DBMS_CATALOG 软件包进行设计。
  • 不允许通过目录对远程数据库执行 DDL 操作(例如 CREATE, ALTER, DROP)。如果执行此操作,可能会遇到 "ORA-02021: DDL operations are not allowed on a remote database"(远程数据库不允许执行 DDL 操作)错误。
  • 相同名称限制:此功能强制指定用户不能存在具有相同名称的数据库链接和目录。

您将使用 Database Actions 的 SQL 工作表编辑器来运行 SQL 查询。必须先连接到 Database Actions 实例,然后选择 Development(开发)菜单下的 SQL

先决条件:

您需要 OCI 账户。

DBlink 与目录有何不同?

DBLinks :它们主要用于直接使用语法连接和查询另一个数据库。

例如:
SELECT *FROM <schema_name>.<table_name>@<dblink_name>;

通过 DBLink 在另一个数据库上挂载目录时,无需在目录中单独定义元数据,因为 DBLink 语法直接访问远程数据库对象。从本质上讲,DBLink 充当与远程数据库的透明连接,允许查询像本地数据一样运行。

目录:它们用作元数据层,可以挂载在不同类型的数据存储上,不仅通过 DBLink 连接的数据库,还可以挂载外部数据目录或数据共享,例如 Delta Share 或 Live Share 提供程序。通过非数据库存储挂载目录时,@catalog 语法将调整查询以生成内嵌外部表,从而无需 DBLink 即可访问外部数据。这意味着目录对元数据管理进行抽象,并提供一个统一的接口来查询各种数据源,包括外部数据源。