DBMS_CLOUD 用于批量文件管理

DBMS_CLOUD 软件包中用于批量文件操作的子程序。

子程序 说明
BULK_COPY 过程

此过程将文件从一个云对象存储存储桶复制到另一个存储桶。

BULK_DELETE 过程

该过程从云对象存储存储桶或文件夹中删除文件。

BULK_DOWNLOAD 过程

此过程将文件从 Cloud Object Store 存储桶下载到 Autonomous Database 中的目录。

BULK_MOVE 过程

此过程将文件从一个云对象存储存储桶移至另一个存储桶。

BULK_UPLOAD 过程

此过程将文件从 Autonomous Database 中的目录上载到 Cloud Object Storage。

Prerequisites

作为开发人员,您可以将 DBMS_CLOUD 过程与部署在 Oracle Public CloudMulticloudExadata Cloud@Customer 上的 Autonomous Database 结合使用。

根据部署选择,必须满足以下先决条件,才能将 DBMS_CLOUD 过程与 Amazon S3Azure Blob StorageGoogle Cloud Storage 服务提供商一起使用。

您的组管理员必须使用 NAT 网关配置出站连接,如下所述:
  • 按照 Oracle Cloud Infrastructure 文档中的创建 NAT 网关中的说明,在 Autonomous Database 资源所在的虚拟云网络 (Virtual Cloud Network,VCN) 中创建 NAT 网关。
  • 创建 NAT 网关后,向 每个子网(在 VCN 中)添加路由规则和出站安全规则,Autonomous Database 资源位于其中,以便这些资源可以使用网关从 Azure AD 实例获取公钥:
    1. 转到子网的子网详细信息页。
    2. 子网信息选项卡中,单击子网的路由表的名称以显示其路由表详细信息页。
    3. 在现有路由规则表中,检查是否已存在具有以下特征的规则:
      • 目标:0.0.0.0/0
      • 目标类型:NAT 网关
      • 目标:刚在 VCN 中创建的 NAT 网关的名称

      如果不存在此类规则,请单击添加路由规则并添加具有这些特征的路由规则。

    4. 返回到子网的子网详细信息页。
    5. 在子网的安全列表表中,单击子网的安全列表的名称以显示其安全列表详细信息页。
    6. 在侧边菜单的资源下,单击出站规则
    7. 在现有出站规则表中,检查是否已存在具有以下特征的规则:
      • 目标类型: CIDR
      • 目标:0.0.0.0/0
      • IP 协议: TCP
      • 源端口范围: 443
      • 目标端口范围:全部

      如果不存在此类规则,请单击添加出站规则并添加具有这些特征的出站规则。

环境中的 HTTP 代理设置必须允许数据库访问云服务提供商。

这些设置由组管理员在创建 Exadata Cloud@Customer 基础结构时定义,如 Using the Console to Provision Exadata Database Service on Cloud@Customer 中所述。

注意:

只有在 Exadata 基础结构处于 Requires Activation 状态之前,才能编辑包括 HTTP 代理的网络配置。一旦激活,就无法编辑这些设置。

为已预配的 Exadata 基础结构设置 HTTP 代理需要在 My Oracle Support 中创建服务请求 (SR)。有关详细信息,请参见在 My Oracle Support 中创建服务请求

BULK_COPY 过程

此过程会将文件从一个云对象存储桶批量复制到另一个云对象存储桶。使用重载的表单可以使用 operation_id 参数。

您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来过滤要删除的文件列表。

源和目标存储桶或文件夹可以位于相同或不同的云对象存储提供程序中。

当源和目标位于不同的对象存储中或者具有具有相同云提供商的不同账户时,您可以为源和目标位置提供单独的身份证明名称。

默认情况下,源身份证明名称也由目标位置使用。

语法

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

参数

Parameter (参数) 说明

source_credential_name

用于访问云对象存储的身份证明的名称。

如果未提供 source_credential_name 值,则将 credential_name 设置为 NULL

source_location_uri

指定指向源对象存储存储桶或文件夹位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

target_location_uri

指定需要复制文件的目标对象存储存储桶或文件夹的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

target_credential_name

用于访问目标云对象存储位置的身份证明的名称。

如果未提供 target_credential_name 值,则将 target_location_uri 设置为 source_credential_name 值。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果未提供 regex_filter 值,则将 regex_filter 设置为 NULL

有关更多信息,请参见REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:
  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_COPY,缺省 logprefix 值为 COPYOBJ

  • priority:它接受一个字符串值,用于确定同时执行的文件操作数。

    优先级较高的操作会消耗更多的数据库资源,并且应该更快地运行。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数处理的并行文件数(如果数据库使用 OCPU,则为 OCPU 计数

    • MEDIUM:使用中型服务的并发限制确定同时进程的数量。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果未提供 format 值,则将 format 设置为 NULL

operation_id

使用此参数以 USER_LOAD_OPERATIONS 视图中的相应 ID 跟踪加载操作的进度和最终状态。

使用说明

  • 源 URI 和目标 URI 指向同一对象存储存储桶或文件夹时出错。

范例

BEGIN 
DBMS_CLOUD.BULK_COPY (
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format       => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/

BULK_DELETE 过程

此过程从云对象存储批量删除文件。使用重载的表单可以使用 operation_id 参数。您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来过滤要删除的文件列表。

语法

 DBMS_CLOUD.BULK_DELETE(
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DELETE (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明

credential_name

用于访问云对象存储的身份证明的名称。

如果未提供 credential_name 值,则将 credential_name 设置为 NULL

location_uri

指定指向 Autonomous Database 中对象存储位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果未提供 regex_filter 值,则将 regex_filter 设置为 NULL

有关更多信息,请参见REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:
  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_DELETE,缺省 logprefix 值为 DELETE

  • priority:它接受一个字符串值,用于确定同时执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源并更快完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数处理的并行文件数(如果数据库使用 OCPU,则为 OCPU 计数

    • MEDIUM:使用中型服务的并发限制确定同时进程的数量。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果未提供 format 值,则将 format 设置为 NULL

operation_id

使用此参数以 USER_LOAD_OPERATIONS 视图中的相应 ID 跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_DELETE (    
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL')
);
END;
/

BULK_DOWNLOAD 过程

此过程将文件从云对象存储下载到 Autonomous Database 目录中。使用重载的表单可以使用 operation_id 参数。您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式过滤要下载的文件列表。

语法

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明

credential_name

用于访问云对象存储的身份证明的名称。

如果未提供 credential_name 值,则将 credential_name 设置为 NULL

location_uri

指定指向 Autonomous Database 中对象存储位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

directory_name

Autonomous Database 上要从其中下载文件的目录的名称。

此参数是必需的。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果未提供 regex_filter 值,则将 regex_filter 设置为 NULL

有关更多信息,请参见REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:
  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。对于 BULK_DOWNLOAD,缺省 logprefix 值为 DOWNLOAD

    操作类型是默认值。

  • priority:它接受一个字符串值,用于确定同时执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源并更快完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数处理的并行文件数(如果数据库使用 OCPU,则为 OCPU 计数

    • MEDIUM:使用中型服务的并发限制确定同时进程的数量。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果未提供 format 值,则将 format 设置为 NULL

operation_id

使用此参数以 USER_LOAD_OPERATIONS 视图中的相应 ID 跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (    
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
 );
END;
/

BULK_MOVE 过程

此过程批量将文件从一个云对象存储存储桶或文件夹移动到另一个云对象存储桶或文件夹。使用重载的表单可以使用 operation_id 参数。

您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来过滤要删除的文件列表。

源和目标存储桶或文件夹可以位于相同或不同的云对象存储提供程序中。

当源和目标位于不同的对象存储中或者具有具有相同云提供商的不同账户时,您可以为源和目标位置提供单独的身份证明名称。

默认情况下,在未提供目标身份证明名称时,目标位置也会使用源身份证明名称。

移动文件的第一步是将文件复制到目标位置,然后在成功复制源文件后将其删除。

如果对象存储允许在源位置和目标位置之间重命名操作,则重命名对象而不是移动对象。

语法

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

参数

Parameter (参数) 说明

source_credential_name

用于访问源云对象存储的身份证明的名称。

如果未提供 source_credential_name 值,则将 credential_name 设置为 NULL

source_location_uri

指定指向源对象存储存储桶或文件夹位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

target_location_uri

指定需要将文件移动到的目标对象存储存储桶或文件夹的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

target_credential_name

用于访问目标云对象存储位置的身份证明的名称。

如果未提供 target_credential_name 值,则将 target_location_uri 设置为 source_credential_name 值。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果未提供 regex_filter 值,则将 regex_filter 设置为 NULL

有关更多信息,请参见REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:
  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_MOVE,缺省 logprefix 值为 MOVE

  • priority:它接受一个字符串值,用于确定同时执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源并更快完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数处理的并行文件数(如果数据库使用 OCPU,则为 OCPU 计数

    • MEDIUM:使用中型服务的并发限制确定同时进程的数量。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果未提供 format 值,则将 format 设置为 NULL

operation_id

使用此参数以 USER_LOAD_OPERATIONS 视图中的相应 ID 跟踪加载操作的进度和最终状态。

范例

BEGIN 
DBMS_CLOUD.BULK_MOVE (    
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format                 => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/

注意:

源 URI 和目标 URI 指向同一对象存储存储桶或文件夹时出错。

BULK_UPLOAD 过程

此过程将文件从 Autonomous Database 目录复制到 Cloud Object Storage 中。使用重载的表单可以使用 operation_id 参数。

语法

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明

credential_name

用于访问云对象存储的身份证明的名称。

如果未提供 credential_name 值,则将 credential_name 设置为 NULL

location_uri

指定指向要上载文件的对象存储位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

directory_name

从中上载文件的 Autonomous Database 上的目录的名称。

此参数是必需的。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果未提供 regex_filter 值,则将 regex_filter 设置为 NULL

有关更多信息,请参见REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项有:
  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_UPLOAD,缺省 logprefix 值为 UPLOAD

  • priority:它接受一个字符串值,用于确定同时执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源并更快完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数处理的并行文件数(如果数据库使用 OCPU,则为 OCPU 计数

    • MEDIUM:使用中型服务的并发限制确定同时进程的数量。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果未提供 format 值,则将 format 设置为 NULL

operation_id

使用此参数以 USER_LOAD_OPERATIONS 视图中的相应 ID 跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_UPLOAD ( 
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD')
 );
END;
/