将外部文件存储附加到专用 Exadata 基础结构上的自治 AI 数据库
您可以将部署在 Oracle Cloud Infrastructure 或内部部署中的外部文件存储附加到自治 AI 数据库,前提是数据库和文件系统位于同一专用网络中。专用 Exadata 基础结构上的自治 AI 数据库默认支持 NFSv4。
这样,您可以从虚拟云网络 (Virtual Cloud Network,VCN) 中的 OCI 文件存储或内部部署数据中心中的任何其他网络文件系统加载数据。
通过支持外部文件存储,您可以执行以下操作:
-
从传统应用连接到自治 AI 数据库实例,并使用文件系统加载和卸载数据。
-
在自治 AI 数据库中分析来自不同来源的数据。
-
从内部部署数据中心或专用 VCN 中的文件系统安全地访问自治 AI 数据库中的数据。
外部文件存储要求
要在以下位置从文件系统访问自治 AI 数据库中的数据:
-
内部部署数据中心:设置 FastConnect 或站点到站点 VPN 以连接到内部部署数据中心。有关详细信息,请参阅 FastConnect 和 Site-to-Site VPN 。
-
Oracle Cloud Infrastructure
-
为 OCI 文件存储服务 (FSS) 访问创建虚拟云网络 (VCN) 安全规则:在挂载文件存储之前,必须配置安全规则以允许使用特定协议和端口将流量传输到挂载目标的 VNIC。安全规则为以下项启用流量:
-
Open Network Computing Remote Procedure Call (ONC RPC) rpcbind 实用程序协议
-
网络文件系统 (Network File System,NFS) 协议
-
网络文件系统 (MOUNT) 协议
-
Network Lock Manager (NLM) 协议
有关详细信息,请参阅为文件存储配置 VCN 安全规则。
-
-
在 OCI FSS 中创建文件系统:使用 OCI 控制台创建文件系统。为文件系统配置装载目标详细信息时,请选择部署数据库的 VCN 和该 VCN 的专用子网,并提供主机名以自动生成全限定域名 (Fully Qualified Domain Name,FQDN)。有关更多信息,请参见 Creating File Systems 。
-
获取装载目标的 FQDN:从 OCI 控制台查看文件系统装载目标的详细信息,如查看装载目标的详细信息中所述,以获取其 FQDN。
-
附加外部文件系统
使用 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 将文件系统附加到自治 AI 数据库中的目录。
注:DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 过程只能将专用文件存储服务附加到专用端点上的数据库。
-
创建目录或使用现有目录在自治 AI 数据库中附加外部文件系统。您必须对自治 AI 数据库实例上的目录对象具有
WRITE权限,才能将文件系统附加到数据库中的目录位置。例如,以下命令将创建名为
FSS_DIR的数据库目录并创建文件系统目录fss:CREATE DIRECTORY FSS_DIR AS 'fss';有关更多信息,请参见 Create a Directory 。
-
运行
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM以将文件系统附加到自治 AI 数据库中的目录。要运行此过程,您必须以 ADMIN 用户身份登录,或者对DBMS_CLOUD_ADMIN具有EXECUTE权限。-
缺省情况下,
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM使用 NFSv3。但是,您可以选择显式使用params参数并指定值为 3 的nfs_version以指定 NFSv3。BEGIN DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM ( file_system_name => 'FSS', file_system_location => 'myhost.sub000445.myvcn.oraclevcn.com:/results', directory_name => 'FSS_DIR', description => 'Source FSS for sales data' );END; / -
要使用 NFSv4,请将
params参数与DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM结合使用,并指定值为 4 的nfs_version以指定 NFSv4。BEGIN DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM ( file_system_name => 'FSS', file_system_location => 'myhost.sub000445.myvcn.oraclevcn.com:/results', directory_name => 'FSS_DIR', description => 'Source FSS for sales data', **params => JSON_OBJECT('nfs_version' value 4)** ); END; /
此示例将
file_system_name参数中指定的网络文件系统附加到自治 AI 数据库。file_system_location参数指定文件系统的位置。为file_system_location提供的值包含全限定域名 (Fully Qualified Domain Name,FQDN) 和文件路径,格式为:FQDN:file_path 。例如:-
FQDN:
myhost.sub000445.myvcn.oraclevcn.com -
文件路径:
/results
directory_name参数指定要在其中附加文件系统的自治 AI 数据库中的目录名称。这是您在步骤 1 或之前创建的其他目录中创建的目录。description参数指定任务的描述。 -
有关使用 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 的说明:
-
Oracle Cloud Infrastructure File Storage 使用 NFS 版本 3 进行共享。有关更多信息,请参见 File Storage 概述。
-
如果连接到非 Oracle Cloud Infrastructure File Storage 系统,则该过程支持 NFSv3 和 NFSv4。
-
如果连接的 NFS 服务器使用 NFSv3,且 NFS 版本在 NFS 服务器中更新为 NFSv4,则必须使用
params参数运行DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM,然后运行DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM,并将nfs_version设置为 4。这将通过匹配协议附加 NFS,以便自治 AI 数据库可以访问 NFSv4 服务器。如果不分离,然后重新连接,NFS 服务器将无法访问,您可能会看到以下错误:"Protocol not supported"。
查询 DBA_CLOUD_FILE_SYSTEMS
附加文件系统后,可以查询 DBA_CLOUD_FILE_SYSTEMS 视图以检索有关附加文件系统的信息。
例如:
SELECT file_system_name, file_system_location, directory_path
FROM dba_cloud_file_systems
WHERE file_system_name = 'FSS';
此查询返回 FSS 文件系统名称的详细信息。有关详细信息,请参阅 DBMS_CLOUD_FILE_SYSTEMS 视图。
使用附加的文件系统,您可以使用接受目录名称的任何 PL/SQL API 在附加的文件系统上读取和写入文件。例如,可以使用以下任何方法来处理连接的 FSS 目录:
-
UTL_FILE软件包。 -
数据泵导出和导入实用程序。
-
与目录(如
DBMS_CLOUD.LIST_FILES和DBMS_CLOUD.PUT_OBJECT)一起使用的DBMS_CLOUDAPI。
示例显示了使用 UTL_FILE 在附加的文件系统上写入文件:
DECLARE
l_file UTL_FILE.FILE_TYPE;
l_location VARCHAR2(100) := 'FSS_DIR';
l_filename VARCHAR2(100) := 'test.csv';
BEGIN
-- Open the file.
l_file := UTL_FILE.FOPEN(l_location, l_filename, 'w');
UTL_FILE.PUT(l_file, 'Scott, male, 1000');
-- Close the file.
UTL_FILE.FCLOSE(l_file);
END;
/
示例显示了使用 UTL_FILE 在附加的文件系统上读取文件:
DECLARE
l_file UTL_FILE.FILE_TYPE;
l_location VARCHAR2(100) := 'FSS_DIR';
l_filename VARCHAR2(100) := 'test.csv';
l_text VARCHAR2(32767);
BEGIN
-- Open the file.
l_file := UTL_FILE.FOPEN(l_location, l_filename, 'r');
UTL_FILE.GET_LINE(l_file, l_text, 32767);
-- Close the file.
UTL_FILE.FCLOSE(l_file);
END;
/
使用 DBMS_CLOUD.LIST_FILES 显示附加文件系统上的列表文件的示例:
SELECT object_name FROM DBMS_CLOUD.LIST_FILES('FSS_DIR');
DBMS_CLOUD_FILE_SYSTEMS 视图
DBA_CLOUD_FILE_SYSTEMS 视图列出附加到数据库中的目录位置的外部文件系统的相关信息。
| 列 | 数据类型 | 说明 |
|---|---|---|
FILE_SYSTEM_NAME |
VARCHAR2(128) |
文件系统名称 |
FILE_SYSTEM_LOCATION |
VARCHAR2(4000) |
文件系统地点 |
DIRECTORY_NAME |
VARCHAR2(128) |
附加的目录名称 |
DIRECTORY_PATH |
VARCHAR2(4000) |
附加的目录路径 |
NFS_VERSION |
NUMBER |
NFS 版本 |
DESCRIPTION |
VARCHAR2(4000) |
运行 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 时为说明参数提供的值 |
CREATION_TIME |
TIMESTAMP(6) WITH TIME ZONE |
创建时间戳 |
UPDATE_TIME |
TIMESTAMP(6) WITH TIME ZONE |
更新时间戳 |
分离外部文件系统
使用 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程从自治 AI 数据库中的目录分离文件系统。
注:DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程只能将专用文件存储服务与专用端点上的数据库分离。
必须对目录对象具有 WRITE 权限才能将文件系统从目录位置分离。
运行 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程以将文件系统从自治 AI 数据库中的目录位置分离。要运行此过程,您必须以 ADMIN 用户身份登录,或者对 DBMS_CLOUD_ADMIN 具有 EXECUTE 权限。
BEGIN
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
file_system_name => 'FSS'
);
END;
/
此示例将 file_system_name 参数中指定的网络文件系统与自治 AI 数据库分离。您必须为此参数提供值。将从 DBA_CLOUD_FILE_SYSTEMS 视图中删除有关此文件系统的信息。
相关内容
有关详细信息,请参见以下内容: