将外部文件存储附加到专用 Exadata 基础结构上的自治 AI 数据库

您可以将部署在 Oracle Cloud Infrastructure 或内部部署中的外部文件存储附加到自治 AI 数据库,前提是数据库和文件系统位于同一专用网络中。专用 Exadata 基础结构上的自治 AI 数据库默认支持 NFSv4。

这样,您可以从虚拟云网络 (Virtual Cloud Network,VCN) 中的 OCI 文件存储或内部部署数据中心中的任何其他网络文件系统加载数据。

通过支持外部文件存储,您可以执行以下操作:

外部文件存储要求

要在以下位置从文件系统访问自治 AI 数据库中的数据:

附加外部文件系统

使用 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 将文件系统附加到自治 AI 数据库中的目录。

注:DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 过程只能将专用文件存储服务附加到专用端点上的数据库。

  1. 创建目录或使用现有目录在自治 AI 数据库中附加外部文件系统。您必须对自治 AI 数据库实例上的目录对象具有 WRITE 权限,才能将文件系统附加到数据库中的目录位置。

    例如,以下命令将创建名为 FSS_DIR 的数据库目录并创建文件系统目录 fss

    CREATE DIRECTORY FSS_DIR AS 'fss';
    

    有关更多信息,请参见 Create a Directory

  2. 运行 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 的说明:

查询 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 在附加的文件系统上写入文件:

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 视图中删除有关此文件系统的信息。

相关内容

有关详细信息,请参见以下内容: