将外部文件存储附加到专用 Exadata 基础结构上的 Autonomous Database

您可以将部署在 Oracle Cloud Infrastructure 或本地的外部文件存储附加到 Autonomous Database ,前提是数据库和文件系统位于同一专用网络中。默认情况下,Autonomous Database on Dedicated Exadata Infrastructure 支持 NFSv4。

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

通过支持外部文件存储,您可以执行以下操作:
  • 从传统应用程序连接到 Autonomous Database 实例,并使用文件系统加载和卸载数据。
  • an Autonomous Database 中分析来自不同来源的数据。
  • 从内部部署数据中心或专用 VCN 中的文件系统安全地访问 an Autonomous Database 中的数据。

外部文件存储要求

要从以下文件系统中访问 an Autonomous Database 中的数据:
  • 内部部署数据中心:设置 FastConnect 或站点到站点 VPN 以连接到内部部署数据中心。有关更多信息,请参见 FastConnectSite-to-Site VPN

  • Oracle Cloud Infrastructure
    • 为 OCI 文件存储服务 (File Storage Service,FSS) 访问创建虚拟云网络 (Virtual Cloud Network,VCN) 安全规则:您必须先配置安全规则,以允许使用特定协议和端口流入装载目标的 VNIC。安全规则为以下项启用流量:
      • Open Network Computing Remote Procedure Call (ONC RPC) rpcbind 实用程序协议
      • 网络文件系统 (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 将文件系统附加到 Autonomous Database 中的目录。

注意:

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 过程只能将专用文件存储服务附加到位于专用端点上的数据库。
  1. 创建目录或使用现有目录在 Autonomous Database 中附加外部文件系统。必须对 Autonomous Database 实例上的目录对象具有 WRITE 权限,才能将文件系统附加到数据库中的目录位置。

    例如,以下命令创建名为 FSS_DIR 的数据库目录并创建文件系统目录 fss
    CREATE DIRECTORY FSS_DIR AS ‘fss’;

    有关更多信息,请参见创建目录

  2. 运行 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 以将文件系统附加到 Autonomous Database 中的目录。要运行此过程,您必须以 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 参数中指定的网络文件系统附加到 Autonomous Database

    file_system_location 参数指定文件系统的位置。file_system_location 提供的值由全限定域名 (Fully Qualified Domain Name,FQDN) 和文件路径组成,格式为:FQDN:file_path 。例如:

      • 常见问题:myhost.sub000445.myvcn.oraclevcn.com
      • 文件路径:/results

    directory_name 参数指定要在其中附加文件系统的 Autonomous Database 中的目录名称。这是您在步骤 1 中创建的目录,或者是您以前创建的另一个目录。

    description 参数指定任务的说明。

有关使用 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 的说明:
  • Oracle Cloud Infrastructure 文件存储使用 NFS 版本 3 进行共享。有关更多信息,请参见 Overview of File Storage (文件存储概述)。

  • 如果您连接到非 Oracle Cloud Infrastructure 文件存储系统,则该过程支持 NFSv3 和 NFSv4。
  • 如果连接的 NFS 服务器使用 NFSv3,并且 NFS 版本在 NFS 服务器中更新为 NFSv4,则必须先运行 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM,然后运行 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM(使用 params 参数,并将 nfs_version 设置为 4)。这将附加具有匹配协议的 NFS,以便 Autonomous Database 可以访问 NFSv4 服务器。如果不分离,然后重新连接,NFS 服务器将无法访问,您可能会看到以下错误:"Protocol not supported"

有关更多信息,请参见ATTACH_FILE_SYSTEM Procedure

查询 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 软件包。

  • Data Pump Export and Import 实用程序。

  • 使用目录(如 DBMS_CLOUD.LIST_FILESDBMS_CLOUD.PUT_OBJECT)的 DBMS_CLOUD API。

示例:使用 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 过程将文件系统与 Autonomous Database 中的目录分离。

注意:

DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程只能将专用文件存储服务与位于专用端点上的数据库分离。

必须对目录对象具有 WRITE 特权,才能将文件系统从目录位置分离。

运行 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程以将文件系统与 Autonomous Database 中的目录位置分离。要运行此过程,您必须以 ADMIN 用户身份登录,或者对 DBMS_CLOUD_ADMIN 具有 EXECUTE 特权。
BEGIN
  DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
    file_system_name      => 'FSS'                                       
  );END;                                                                          
/    

此示例将 file_system_name 参数中指定的网络文件系统与 Autonomous Database 分离。必须为此参数提供值。有关此文件系统的信息将从 DBA_CLOUD_FILE_SYSTEMS 视图中删除。

有关更多信息,请参见DETACH_FILE_SYSTEM Procedure