关于查询远程目录和数据库
在本章中,您将学习使用以下格式的 SQL 语法查询外部数据:[schema].object@catalog_name。
此处的语法 [schema].object@catalog_name 表示访问数据库对象
此表介绍了语法中使用的参数及其说明:
表 16-2 语法中使用的参数和说明
| 参数 | 说明 |
|---|---|
| 方案 |
此字段是可选的,默认为当前用户。方案是目录中的名称空间,用于组织相关的数据库对象,例如表、视图、过程或函数。它充当这些对象的逻辑容器。 |
| 对象 | 此字段表示方案中包含的任何数据库对象,例如表、视图、过程或函数。 |
| 目录 | 目录字段显示具有参考表的目录的名称。您可以使用 Data Studio 工具套件的 DBMS_CATALOG 程序包或目录工具创建和管理目录。
|
注意:
您也可以将目录替换为 dbLinks 。
访问远程表
- 挂载目录:首先通过任何受支持类型的数据存储(例如 Iceberg、Delta Lake 等)挂载目录。挂载目录会标准化元数据,从而使对外部数据的 SQL 访问权限,就像它是目录中某个方案中的表一样。有关挂载目录的详细步骤,请参阅管理目录。装载目录并标准化元数据后,可以使用 SQL 直接查询外部数据。即使外部数据实际上并不作为传统表存在,目录也会将其抽象为表格格式,以便于查询。
- 引用表:挂载后,可以通过使用以下语法指定方案和目录(如果适用)后跟表名来引用远程表:
[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 即可访问外部数据。这意味着目录对元数据管理进行抽象,并提供一个统一的接口来查询各种数据源,包括外部数据源。
父主题:查询远程目录和数据库