Subprogramas DBMS_CLOUD y API de REST

En esta sección se tratan los subprogramas DBMS_CLOUD y las API de REST que se proporcionan con Autonomous Database.

Nota

Para ejecutar subprogramas de DBMS_CLOUD con un usuario que no sea ADMIN, debe otorgar privilegios EXECUTE a ese usuario. Por ejemplo, ejecute el siguiente comando como ADMIN para otorgar privilegios a adb_user:
GRANT EXECUTE ON DBMS_CLOUD TO adb_user;

El paquete DBMS_CLOUD está formado por lo siguiente:

DBMS_CLOUD para la gestión de acceso

Los subprogramas de la gestión de credenciales en el paquete DBMS_CLOUD, que incluyen la creación, la supresión y actualización de credenciales.

Subprograma Descripción

Procedimiento CREATE_CREDENTIAL

Este procedimiento almacena credenciales del servicio en la nube en Autonomous Database.

Procedimiento DROP_CREDENTIAL

Este procedimiento elimina una credencial existente de Autonomous Database.

REFRESH_VAULT_CREDENTIAL Procedimiento

Este procedimiento refresca inmediatamente el secreto de almacén de una credencial de secreto de almacén para obtener la última versión del secreto de almacén para el credential_name especificado en Autonomous Database.

Procedimiento UPDATE_CREDENTIAL

Este procedimiento actualiza los atributos de las credenciales del servicio en la nube en Autonomous Database.

Procedimiento CREATE_CREDENTIAL

Este procedimiento almacena credenciales del servicio en la nube en Autonomous Database.

Utilice las credenciales del servicio de nube almacenadas para acceder a este servicio para cargar datos, para consultar datos externos que residen en la nube o para otros casos cuando utilice el procedimiento DBMS_CLOUD con un parámetro credential_name. Este procedimiento está sobrecargado:

  • Utilice los parámetros relacionados con Oracle Cloud Infrastructure, que incluyen: user_ocid, tenancy_ocid, private_key y fingerprint, solo cuando utilice el autenticación de claves de firma de Oracle Cloud Infrastructure.

  • Utilice el parámetro params para una de las siguientes opciones:

    • Credenciales de nombres de recursos (ARN) de Amazon

    • Credenciales de Google Analytics o Google BigQuery

    • Credenciales secretas de almacén para su uso con un almacén soportado:

      • Oracle Cloud Infrastructure Vault
      • Almacén de claves de Azure
      • AWS Secrets Manager
      • Gestor de secretos de GCP

Sintaxis

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      user_ocid         IN VARCHAR2,
      tenancy_ocid      IN VARCHAR2,
      private_key       IN VARCHAR2,
      fingerprint       IN VARCHAR2,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name  IN VARCHAR2,
      params           IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial que se va a almacenar. El parámetro credential_name debe cumplir las convenciones de nomenclatura de objetos de Oracle. El parámetro credential_name se puede definir como un identificador sin comillas o como un identificador entre comillas. Consulte Reglas de nomenclatura de objetos de base de datos para obtener más información.

username

Los argumentos username y password especifican conjuntamente las credenciales del servicio en la nube. Consulte las notas de uso sobre qué se debe especificar para username y password para diferentes servicios en la nube.

password

Los argumentos username y password especifican conjuntamente las credenciales del servicio en la nube.

comments

Especifica el texto de comentario para la credencial. Este campo puede ser útil para describir y distinguir entre credenciales.

La longitud máxima del comentario es de 3800 caracteres.

user_ocid

Especifica el OCID del usuario. Consulte Dónde obtener el OCID del arrendamiento y el OCID del usuario para obtener más información sobre cómo obtener el OCID del usuario.

tenancy_ocid

Especifica el OCID del arrendamiento. Consulte Dónde obtener el OCID del arrendamiento y el OCID del usuario para obtener más información sobre cómo obtener el OCID del arrendamiento.

private_key

Especifica la clave privada generada. Las claves privadas generadas con una frase de contraseña no están soportadas. Debe generar la clave privada sin una frase de contraseña. Consulte Cómo generar una clave de firma de API para obtener más información sobre la generación de un par de claves en formato PEM.

fingerprint

Especifica una huella. Después de cargar una clave pública generada en la cuenta del usuario, se muestra la huella en la consola. Utilice la huella mostrada para este argumento. Consulte Cómo obtener la huella de la clave y Cómo generar una clave de firma de API para obtener más información.

params

Especifica los parámetros de credencial para una de las siguientes opciones:

  • Credenciales de nombres de recursos (ARN) de Amazon

  • Credenciales de Google Analytics o Google BigQuery

  • Credenciales secretas de almacén para su uso con credenciales de tipo de nombre de usuario/contraseña en las que se almacena la contraseña en un almacén soportado:

    • Oracle Cloud Infrastructure Vault

    • Almacén de claves de Azure

    • AWS Secrets Manager

    • Gestor de secretos de GCP

    Para crear una credencial de secreto de almacén, debe tener el privilegio EXECUTE en el paquete DBMS_CLOUD.

Notas de uso

  • Esta operación almacena las credenciales en la base de datos en un formato cifrado.

  • Puede ver las credenciales en el esquema consultando la tabla user_credentials.

  • Puede ver los comentarios de credenciales en su esquema consultando la tabla user_credentials. Por ejemplo:

    SELECT comments FROM user_credentials
            WHERE credential_name = 'MY_CRED';
  • El usuario ADMIN puede ver todas las credenciales consultando la tabla dba_credentials.

  • Solo tiene que crear credenciales una vez, a menos que cambien las credenciales del servicio en la nube. Una vez almacenadas las credenciales, puede utilizar el mismo nombre que las credenciales para procedimientos DBMS_CLOUD que requieren un parámetro credential_name.

  • Este procedimiento está sobrecargado. Si proporciona uno de los atributos de autenticación basados en clave, user_ocid, tenancy_ocid, private_key o fingerprint, se asume que la llamada es una credencial basada en clave de firma de Oracle Cloud Infrastructure.

  • Puede mostrar las credenciales de la vista ALL_CREDENTIALS. Por ejemplo, ejecute el siguiente comando para mostrar las credenciales:

    SELECT credential_name, username, comments FROM all_credentials;

Credenciales de Oracle Cloud Infrastructure (tokens de autenticación)

Para Oracle Cloud Infrastructure, username es el nombre de usuario de Oracle Cloud Infrastructure. password es el token de autenticación de Oracle Cloud Infrastructure. Consulte Trabajar con token de autenticación.

Por ejemplo:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

Utilice credenciales basadas en token de autenticación al autenticar llamadas a OCI Object Storage. Para realizar llamadas a cualquier otro tipo de servicio en la nube de Oracle Cloud Infrastructure, utilice las credenciales basadas en claves de firma de Oracle Cloud Infrastructure.

Para OCI Object Storage, el valor del parámetro username debe incluir el dominio de identidad y el nombre de usuario del perfil. Puede encontrar el dominio de identidad asociado a un usuario en la consola de Oracle Cloud Infrastructure.

Por ejemplo:

oracleidentitycloudservice/adb_user@example.com

Con el dominio de identidad por defecto no es necesario incluir el nombre de dominio Default. Por ejemplo:

adb_user@example.com

Credenciales basadas en claves de firma de Oracle Cloud Infrastructure

Utilice los parámetros relacionados con la clave de firma de Oracle Cloud Infrastructure, que incluyen: user_ocid, tenancy_ocid, private_key y fingerprint, con la autenticación de claves de firma de Oracle Cloud Infrastructure.

Por ejemplo:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

Las claves privadas generadas con una frase de contraseña no están soportadas. Debe generar la clave privada sin una frase de contraseña. Consulte Cómo generar una clave de firma de API para obtener más información.

Credenciales de Oracle Cloud Infrastructure Object Storage Classic

Si los archivos de origen residen en Oracle Cloud Infrastructure Object Storage Classic, username es el nombre de usuario de Oracle Cloud Infrastructure Classic, y password es la contraseña de Oracle Cloud Infrastructure Classic.

Credenciales de Amazon Web Services (AWS)

Si los archivos de origen residen en Amazon S3 o llama a una API de AWS, username es el identificador de clave de acceso de AWS, y password es la clave de acceso secreta de AWS. Consulte AWS Identity and Access Management.

Credenciales de Microsoft Azure

Si sus archivos de origen residen en Azure Blob Storage o Azure Data Lake Storage o va a llamar a una API de Azure, username es el nombre de su cuenta de almacenamiento Azure, y password es la clave del acceso de cuenta de almacenamiento de Azure. Consulte la sección acerca de las cuentas de almacenamiento de Azure.

Credenciales compatibles con Amazon S3

Servicio Información de credenciales

Oracle Cloud Infrastructure (claves secretas de cliente)

Si los archivos de origen residen en Oracle Cloud Infrastructure, debe utilizar claves secretas de cliente con URL compatibles con S3. Consulte Trabajar con claves secretas de cliente para obtener más información.

Google Cloud Storage

Si sus archivos de origen residen en Google Cloud Storage o va a llamar a las API de Google Cloud Storage, debe definir un proyecto de Google por defecto y obtener una clave HMAC para crear credenciales que proporcionar con URL compatibles con S3 de Google Cloud Storage. Utilice el identificador de clave HMAC como nombre de usuario, y el secreto HMAC como contraseña.

Consulte la sección sobre proyectos y la sección sobre claves HMAC para obtener más información.

Wasabi Hot Cloud Storage

Si los archivos de origen residen en Wasabi Hot Cloud Storage o va a llamar a las API de Wasabi Hot Cloud Storage, necesita las claves de acceso para crear credenciales y proporcionarlas con URL compatibles con S3. Utilice la clave de acceso de Wasabi Hot Cloud Storage como nombre de usuario, y la clave secreta de Wasabi Hot Cloud Storage como contraseña.

Consulte la sección sobre creación de un juego de claves de acceso de API de Wasabi para obtener más información.

Credenciales de AWS Amazon Resource Names (ARN)

Si sus archivos de origen residen en Amazon S3 o está llamando a una API de AWS, utilice params para especificar los parámetros para los nombres de recursos de Amazon (ARN).

Parámetro Valor
aws_role_arn

Especifica el nombre de recurso de Amazon (ARN) que identifica el rol de AWS.

Si este parámetro no se proporciona al crear la credencial, se emite ORA-20041.

external_id_type

Opcionalmente, defina external_id_type para utilizar el OCID del compartimento de Autonomous Database, el OCID de la base de datos o el OCID del arrendamiento proporcionando uno de los siguientes elementos: compartment_ocid, database_ocid o tenant_ocid.

Si este parámetro no se proporciona al crear la credencial, el valor por defecto es database_ocid.

Por ejemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name      => 'MY_CRED',
        params               => JSON_OBJECT(
               'aws_role_arn'      value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
               'external_id_type'  value 'database_ocid'));
END;
/

Token de acceso personal de GitHub

Si los archivos de origen residen en un repositorio GitHub o llama a una API GitHub, username es su correo electrónico GitHub y password es su token de acceso personal GitHub. Consulte Creación de un token de acceso personal para obtener más información.

Por ejemplo:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'MY_GITHUB_CRED',
    username => 'user@example.com',
    password => 'your_personal_access_token' );
END;
/

Credenciales de Google Analytics o Google BigQuery

Si accede a Google Analytics o a Google BigQuery, utilice el parámetro params para especificar los parámetros de credenciales de Google OAuth 2.0.

Parámetro Valor
gcp_oauth2

Especifica el acceso OAuth 2.0 para Google Analytics o Google BigQuery con un objeto JSON que incluye los siguientes parámetros y sus valores:

  • client_id: consulte la consola de API de Google para obtener el ID de cliente.

  • client_secret: consulte la consola de API de Google para obtener el secreto de cliente.

  • refresh_token: un token de refrescamiento permite a la aplicación obtener nuevos tokens de acceso.

Consulte Uso de OAuth 2.0 para acceder a las API de Google para obtener más información sobre las credenciales de Google OAuth.

Por ejemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
      credential_name => 'GOOGLE_BIGQUERY_CRED',
      params => JSON_OBJECT('gcp_oauth2' value 
                                  JSON_OBJECT(
                                       'client_id'     value 'client_id',
                                       'client_secret' value 'client_secret',
                                       'refresh_token' value 'refresh_token' )));
END;
/

Credenciales secretas de almacén con Oracle Cloud Infrastructure Vault

Para crear credenciales de secreto de almacén con Oracle Cloud Infrastructure Vault, utilice el parámetro params para especificar los parámetros necesarios:

  • username: especifica el nombre de usuario de cualquier tipo de credencial de nombre de usuario/contraseña, como el nombre de usuario de la contraseña de OCI Swift. Por ejemplo, si tiene una credencial de Swift con el nombre de usuario "scott" y la contraseña "password", proporcione "scott" como parámetro username.

  • secret_id: es el ID de secreto del almacén. Especifique el valor secret_id como el OCID secreto del almacén. Consulte Visión general del almacén de claves para más información

  • region: parámetro opcional que especifica el identificador de región de oracle cloud. Cuando se especifica, la región indica la ubicación en la que se encuentra el secreto de Oracle Cloud Infrastructure Vault.

    Por defecto, CREATE_CREDENTIAL utiliza el valor region asignado desde la clave de región en secret_id. Un ejemplo de región es us-ashburn-1.

    Consulte Regiones y dominios de Disponibilidad para obtener una lista completa de las regiones.

Por ejemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OCI_SECRET_CRED',
    params => JSON_OBJECT( 
                'username'   value 'scott',
                'region'     value 'us-ashburn-1',
                'secret_id'  value 'ocid1.vaultsecret.co1.ap-mumbai-1.example..aaaaaaaauq5ok5nq3bf2vwetkpqsoa'));
END;
/

Notas sobre el uso de un secreto de Oracle Cloud Infrastructure Vault para almacenar secretos de almacén:

  • Al utilizar Oracle Cloud Infrastructure Vault, en la instancia de Autonomous Database, debe activar la autenticación de principal con DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL.
  • En Oracle Cloud Infrastructure, debe especificar una política para que la entidad de recurso acceda al secreto.

Para crear una credencial de secreto de almacén, debe tener el privilegio EXECUTE en el paquete DBMS_CLOUD.

Credenciales secretas de almacén con Azure Key Vault

Para crear credenciales de Azure Key Vault, utilice el parámetro params para especificar los parámetros necesarios:

  • username: especifica el nombre de usuario asociado a la clave.

  • secret_id: especifica el nombre del secreto.

  • azure_vault_name: especifica el nombre del almacén en el que se encuentra el secreto.

Consulte Creación de un almacén de claves para obtener más información.

Para crear una credencial de secreto de almacén, debe tener el privilegio EXECUTE en el paquete DBMS_CLOUD.

Credenciales secretas de almacén con AWS Secrets Manager

Para crear credenciales de secreto de almacén con AWS Secrets Manager, utilice el parámetro params para especificar los parámetros necesarios:

  • username: especifica la clave de acceso de AWS Secrets Manager.

  • secret_id: AWS Secrets Manager AWS ARN.

  • region: (opcional) especifica la región de servicio de AWS donde se encuentran el almacén y el secreto. Un ejemplo de la región de AWS es "us-east-2". El valor por defecto region es la región especificada con ARN en el parámetro secret_id.

    Consulte Gestión de regiones de AWS para obtener más información.

    Para crear una credencial de secreto de almacén, debe tener el privilegio EXECUTE en el paquete DBMS_CLOUD.

Credenciales secretas de almacén con GCP Secret Manager

Para crear credenciales de GCP Secret Manager, utilice el parámetro params para especificar los parámetros necesarios:

  • username: especifica el nombre de usuario asociado al secreto.

  • secret_id: es el nombre del secreto.

  • gcp_project_id: especifica el ID del proyecto en el que se encuentra el secreto.

Consulte Gestor de secretos para obtener más información.

Para crear una credencial de secreto de almacén, debe tener el privilegio EXECUTE en el paquete DBMS_CLOUD.

Procedimiento DROP_CREDENTIAL

Este procedimiento elimina una credencial existente de Autonomous Database.

Sintaxis

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial que se va a eliminar.

REFRESH_VAULT_CREDENTIAL Procedimiento

Este procedimiento refresca el secreto de almacén de una credencial de secreto de almacén.

Este procedimiento le permite refrescar inmediatamente el secreto de almacén de una credencial de secreto de almacén para obtener la última versión del secreto de almacén para el credential_name especificado.

Sintaxis

DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL (
    credential_name   IN VARCHAR2);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial que se debe refrescar.

Notas de uso

  • El usuario ADMIN puede ver todas las credenciales consultando la tabla dba_credentials.

  • Puede mostrar las credenciales de la vista ALL_CREDENTIALS. Por ejemplo, ejecute el siguiente comando para mostrar las credenciales:

    SELECT credential_name, username, comments FROM all_credentials;

Ejemplo

BEGIN
  DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL(
     credential_name => 'AZURE_SECRET_CRED'); 
END;
/

Procedimiento UPDATE_CREDENTIAL

Este procedimiento permite cambiar un atributo con un nuevo valor para un credential_name especificado.

Utilice las credenciales almacenadas para cargas de datos, para consultar datos externos en la nube o dondequiera que utilice procedimientos DBMS_CLOUD con un parámetro credential_name.

Sintaxis

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial que se va a actualizar.

attribute

Nombre del atributo que se actualizará.

Para una credencial de tipo de nombre de usuario/contraseña, los valores válidos de attribute son: USERNAME y PASSWORD.

Para una credencial para un ARN de Amazon, los valores válidos de attribute son: aws_role_arn y external_id_type.

Para una credencial para Google BigQuery o Google Analytics, los valores válidos de attribute son: client_id, client_secret y refresh_token.

Según el almacén que utilice, para las credenciales de secreto de almacén los valores attribute válidos son:
  • Oracle Cloud Infrastructure Vault: secret_id, region

  • Azure Key Vault: secret_id, azure_vault_name

  • Administrador de secretos de AWS: secret_id, region

  • Gestor de secretos de GCP: secret_id, gcp_project_id

Consulte CREATE_CREDENTIAL Procedure para obtener más información.

value

El nuevo valor del atributo especificado.

Notas de uso

  • El valor del nombre de usuario distingue entre mayúsculas y minúsculas. No puede contener comillas dobles ni espacios.

  • El usuario ADMIN puede ver todas las credenciales consultando dba_credentials.

  • Solo tiene que crear credenciales una vez, a menos que cambien las credenciales del servicio en la nube. Una vez almacenadas las credenciales, puede utilizar el mismo nombre que las credenciales para procedimientos DBMS_CLOUD que requieren un parámetro credential_name.

  • Puede mostrar las credenciales de la vista ALL_CREDENTIALS. Por ejemplo, ejecute el siguiente comando para mostrar las credenciales:

    SELECT credential_name, username, comments FROM all_credentials;

Ejemplos

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/

DBMS_CLOUD para objetos y archivos

Subprogramas de la gestión de objetos y archivos dentro del paquete DBMS_CLOUD.

Subprograma Descripción

Procedimiento COPY_COLLECTION

Este procedimiento carga datos en una recopilación de SODA existente desde Cloud Object Storage o desde archivos de un directorio.

Procedimiento COPY_DATA

Este procedimiento carga datos en tablas de Autonomous Database existentes desde Cloud Object Storage o desde archivos de un directorio.

COPY_DATA Procedimiento para archivos Avro, ORC o Parquet

Este procedimiento con el parámetro format definido en type con el valor orc, parquet o avro carga datos en tablas de Autonomous Database existentes desde archivos ORC, Parquet o Avro en la nube o desde archivos ORC, Parquet o Avro en un directorio.

De forma similar a los archivos de texto, los datos se copian del archivo de origen ORC, Parquet o Avro en la tabla interna preexistente.

COPY_OBJECT Procedimiento

Este procedimiento copia archivos de un cubo de Cloud Object Storage a otro.
CREATE_CLOUD_TABLE Procedimiento

Este procedimiento crea una tabla en la nube donde todos los datos persistentes se almacenan en el almacenamiento de objetos gestionado por Oracle.

Procedimiento CREATE_EXTERNAL_TABLE

Este procedimiento crea una tabla externa en archivos de la nube o en archivos de un directorio. Esto le permite ejecutar consultas en datos externos desde Autonomous Database.
CREATE_EXTERNAL_TABLE Procedimiento para Apache Iceberg

Este procedimiento crea tablas externas para tablas Apache Iceberg en las configuraciones soportadas.

CREATE_EXTERNAL_TABLE Procedimiento para archivos Avro, ORC o Parquet

Este procedimiento con el parámetro format type definido en el valor parquet, orc o avro crea una tabla externa con archivos de formato Parquet, ORC o Avro en la nube o en un directorio.

Esto le permite ejecutar consultas en datos externos desde Autonomous Database.

CREATE_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento crea una tabla externa particionada en los archivos de la nube. Esto le permite ejecutar consultas en datos externos desde Autonomous Database.

CREATE_EXTERNAL_TEXT_INDEX Procedimiento

Este procedimiento crea un índice de texto en los archivos del almacén de objetos.

CREATE_HYBRID_PART_TABLE Procedimiento

Este procedimiento crea una tabla particionada híbrida. Esto le permite ejecutar consultas en datos particionados híbridos desde Autonomous Database.

Procedimiento DELETE_ALL_OPERATIONS

Este procedimiento borra todas las operaciones de carga de datos registradas en la tabla user_load_operations del esquema o todas las operaciones de carga de datos del tipo especificado, según se haya indicado con el parámetro type.

Procedimiento DELETE_FILE

Este procedimiento elimina el archivo especificado del directorio especificado en Autonomous Database

Procedimiento DELETE_OBJECT

Este procedimiento suprime el objeto especificado en el almacén de objetos.

DELETE_OPERATION Procedimiento

Este procedimiento acepta un operation_id como entrada y suprime los logs asociados al operation_id especificado.

DROP_EXTERNAL_TEXT_INDEX Procedimiento

Este procedimiento borra el índice de texto en los archivos del almacén de objetos.

EXPORT_DATA Procedimiento

Este procedimiento exporta datos de Autonomous Database a archivos en la nube según el resultado de una consulta. El formulario sobrecargado permite utilizar el parámetro operation_id. Según la opción type del parámetro format especificada, el procedimiento exporta filas al almacén de objetos en la nube como texto con opciones de CSV, JSON, Parquet o XML; o bien utiliza el controlador de acceso ORACLE_DATAPUMP para escribir datos en un archivo de volcado.

GET_OBJECT Procedimiento y función

Este procedimiento está sobrecargado. El formulario del procedimiento lee un objeto de Cloud Object Storage y lo copia en Autonomous Database. El formulario de función lee un objeto de Cloud Object Storage y devuelve un valor BLOB a Autonomous Database.

Función LIST_FILES

Esta función muestra los archivos del directorio especificado. Los resultados incluyen los nombres de archivo y metadatos adicionales sobre los archivos, como el tamaño de archivo en bytes, el registro de hora de creación y el registro de hora de la última modificación.

Función LIST_OBJECTS

Esta función muestra los objetos de la ubicación especificada en el almacén de objetos. Los resultados incluyen los nombres de objetos y metadatos adicionales sobre los objetos, como el tamaño, el total de control, el registro de hora de creación y el registro de hora de la última modificación.

MOVE_OBJECT Procedimiento

Este procedimiento mueve un objeto de un cubo de Cloud Object Storage a otro.

Procedimiento PUT_OBJECT

Este procedimiento está sobrecargado. En un formulario, el procedimiento copia un archivo de Autonomous Database en Cloud Object Storage. En otro formulario, el procedimiento copia un archivo BLOB de Autonomous Database en Cloud Object Storage.

SYNC_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento simplifica la actualización de una tabla particionada externa desde archivos en la nube. Ejecute este procedimiento siempre que se agreguen nuevas particiones o cuando se eliminen particiones del origen del almacén de objetos para la tabla particionada externa.

Procedimiento VALIDATE_EXTERNAL_TABLE

Este procedimiento valida los archivos de origen para una tabla externa, genera información de log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla externa en una tabla de archivos incorrectos en Autonomous Database.

VALIDATE_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento valida los archivos del origen para una tabla externa particionada, genera información del log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla externa en una tabla archivo_error en Autonomous Database.

VALIDATE_HYBRID_PART_TABLE Procedimiento

Este procedimiento valida los archivos del origen para un tabla particionada híbrida, genera información del log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla híbrida en una tabla archivo incorrecto en Autonomous Database.

Procedimiento COPY_COLLECTION

Este procedimiento carga datos en una recopilación de SODA desde Cloud Object Storage o desde un directorio. Si la recopilación de SODA especificada no existe, el procedimiento la crea. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

Parámetros

Parámetro Descripción

collection_name

Nombre de la recopilación de SODA en la que se cargarán los datos. Si ya existe una recopilación con este nombre, se cargarán los datos especificados; de lo contrario, se creará una nueva recopilación.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Este parámetro no se utiliza al especificar un directorio con file_uri_list.

file_uri_list

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

format

Opciones que describen el formato de los archivos de origen. Estas opciones se especifican como una cadena JSON.

Los formatos soportados son: characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays, keyassignment y keypath.

Además de los formatos mencionados para datos JSON, Autonomous Database también soporta otros formatos. Para ver la lista de argumentos de formato soportados por Autonomous Database, consulte DBMS_CLOUD Package Format Options.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Ejemplo

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'  
            );
END;
/

Procedimiento COPY_DATA

Este procedimiento carga datos en tablas de la instancia de Autonomous Database existentes desde archivos de la nube o desde archivos de un directorio. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla de destino en la base de datos. Es necesario crear la tabla de destino para poder ejecutar COPY_DATA.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Este parámetro no se utiliza al especificar un directorio o una URL de hiperenlace de tabla con file_uri_list.

file_uri_list

Este parámetro especifica una de las siguientes opciones:

  • Lista delimitada por comas de los URI de archivo de origen

  • Lista delimitada por comas de URL de hiperenlace de tabla

  • Uno o más directorios y archivos de origen

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

URI de archivo de origen en la nube

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

URL de hiperenlace de tabla

Puede utilizar un hiperenlace de tabla de las siguientes formas:
  • Especifique una única URL de hiperenlace de tabla.

    Por ejemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Especifique una lista delimitada por comas de URL de hiperenlace de tabla, debe asegurarse de que todos los hiperenlaces de tabla incluidos tengan los mismos nombres de columna, orden de columna y tipos de dato de columna.

    Por ejemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Consulte Acerca de los hiperenlaces de tablas en Autonomous Database y el procedimiento CREATE_URL para obtener más información.

Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

schema_name

Nombre del esquema en el que reside la tabla de destino. El valor por defecto es NULL, lo que significa que la tabla de destino está en el mismo esquema que el usuario que ejecuta el procedimiento.

field_list

Identifica los campos en los archivos de origen y sus tipos de datos. El valor por defecto es NULL, lo que significa que los campos y sus tipos de dato están determinados por la definición de tabla de destino. La sintaxis de este argumento es la misma que la cláusula field_list de las tablas externas normales de Oracle. Para obtener más información sobre field_list, consulte Oracle® Database Utilities.

Cuando el valor de la opción type del parámetro format es json, este parámetro se ignora.

Para ver un ejemplo de uso de field_list, consulte Procedimiento CREATE_EXTERNAL_TABLE.

format

Opciones que describen el formato de los archivos origen, log y archivos incorrectos. Para obtener una lista de las opciones y cómo especificar los valores, consulte DBMS_CLOUD Package Format Options.

Para obtener información sobre las opciones de formato de archivo Avro, ORC o Parquet, consulte DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Nota de uso

El delimitador de registro predeterminado es detected newline. Con detected newline, DBMS_CLOUD intenta encontrar automáticamente el carácter de nueva línea correcto que se va a utilizar como delimitador de registro. DBMS_CLOUD busca primero el carácter de nueva línea de Windows \r\n. Si encuentra el carácter en línea nueva de Windows, este se utiliza como delimitador de registro para todos los archivos del procedimiento. If a Windows newline character is not found, DBMS_CLOUD searches for the UNIX/Linux newline character \n, and if it finds one it uses \n as the record delimiter for all files in the procedure. Si los archivos de origen utilizan una combinación de diferentes delimitadores de registros, puede encontrar un error como "KUP-04020: found record longer than buffer size supported". En este caso, debe modificar los archivos de origen para utilizar el mismo delimitador de registro o solo especificar los archivos de origen que utilizan el mismo delimitador de registro.

Consulte DBMS_CLOUD Package Format Options para obtener información sobre la opción de formato recorddelmiter.

Ejemplos

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

COPY_DATA Procedimiento para archivos Avro, ORC o Parquet

Este procedimiento con el parámetro format definido en type con el valor avro, orc o parquet carga datos en tablas de Autonomous Database existentes desde archivos Avro, ORC o Parquet en la nube o desde archivos de un directorio.

De forma similar a los archivos de texto, los datos se copian del archivo de origen Avro, ORC o Parquet en la tabla interna preexistente.

Sintaxis

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla de destino en la base de datos. Es necesario crear la tabla de destino para poder ejecutar COPY_DATA.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Este parámetro no se utiliza al especificar un directorio con file_uri_list.

file_uri_list

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

schema_name

Nombre del esquema en el que reside la tabla de destino. El valor por defecto es NULL, lo que significa que la tabla de destino está en el mismo esquema que el usuario que ejecuta el procedimiento.

field_list

Ignorado para archivos de Avro, ORC o Parquet.

Los campos del origen coinciden con las columnas de la tabla externa por nombre. Los tipos de dato de origen se convierten al tipo de dato de columna de tabla externa.

Para los archivos de ORC, consulte DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Para los archivos de Parquet, consulte DBMS_CLOUD Package Parquet to Oracle Data Type Mapping para obtener más información sobre la asignación.

Para los archivos Avro, consulte DBMS_CLOUD Package Avro to Oracle Data Type Mapping para obtener detalles sobre la asignación.

format

Opciones que describen el formato de los archivos de origen. Para los archivos Avro, ORC o Parquet, solo están soportadas dos opciones: consulte DBMS_CLOUD Package Format Options for Avro, ORC o Parquet.

Notas de uso

  • Al igual que con otros archivos de datos, las cargas de datos Avro, ORC y Parquet generan logs que se pueden ver en las tablas dba_load_operations y user_load_operations. Cada operación de carga agrega un registro a dba[usuario]_load_operations que indica la tabla que contiene los logs.

    La tabla de logs proporciona información de resumen sobre la carga.

  • Para Avro, ORC o Parquet, cuando el parámetro format type se define en el valor avro, orc o parquet, la tabla BADFILE_TABLE siempre está vacía.

    • Para los archivos Parquet, los errores de restricción PRIMARY KEY devuelven un error ORA.

    • Si los datos de una columna encuentran un error de conversión, por ejemplo, la columna de destino no es lo suficientemente grande como para contener el valor convertido, el valor de la columna se define en NULL. Esto no produce un registro rechazado.

COPY_OBJECT Procedimiento

Este procedimiento copia un objeto de un cubo o carpeta de Cloud Object Storage a otro.

La carpeta o el bloque de origen y de destino pueden estar en el mismo proveedor de almacén de objetos en la nube o en otro diferente.

Cuando el origen y el destino están en almacenes de objetos distintos o tienen cuentas diferentes con el mismo proveedor de nube, puede proporcionar nombres de credenciales independientes para las ubicaciones de origen y destino.

El nombre de credencial de origen también lo utiliza por defecto la ubicación de destino cuando no se proporciona el nombre de credencial de destino.

Sintaxis

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parámetros

Parámetro Descripción

source_credential_name

Nombre de la credencial para acceder a Cloud Object Storage de origen.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor source_credential_name, credential_name se define en NULL.

source_object_uri

Especifica el URI que apunta al cubo o la ubicación de la carpeta de Object Storage de origen.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

target_object_uri

Especifica el URI del almacén de objetos de destino.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

target_credential_name

Nombre de la credencial para acceder a la ubicación de Cloud Object Storage de destino.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor target_credential_name, target_object_uri se define en el valor source_credential_name.

Ejemplo

BEGIN 
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

CREATE_CLOUD_TABLE Procedimiento

Este procedimiento crea una tabla en la nube. Todos los datos de la tabla de nube se almacenan en el almacenamiento de objetos gestionado por Oracle (las tablas de nube solo almacenan sus metadatos en la base de datos).

Sintaxis

DBMS_CLOUD.CREATE_CLOUD_TABLE (
    table_name       IN VARCHAR2,
    column_list      IN CLOB,
    params           IN CLOB);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla de nube.

column_list

Lista delimitada por comas de nombres de columna y tipos para la tabla en la nube.

Notas de uso

  • Atributos DEFAULT: column_list puede incluir la cláusula DEFAULT, que funciona como la cláusula DEFAULT en un CREATE TABLE ordinario. Consulte CREATE TABLE para obtener información sobre el comportamiento de la cláusula DEFAULT.

  • Utilice DROP TABLE para borrar una tabla en la nube. Las tablas en la nube no soportan la papelera de reciclaje.

    Por ejemplo:

    DROP TABLE CLOUD_TAB1; 
  • Puede otorgar privilegios SELECT, INSERT y UPDATE para una tabla en la nube. No se pueden otorgar otros privilegios a una tabla en la nube.

    Consulte Configuración de Privilegios y Autorización de Roles para obtener más información.

Ejemplos

EXEC DBMS_CLOUD.CREATE_CLOUD_TABLE( 'CLOUD_TAB1', 'I INTEGER, J INTEGER' );
BEGIN
  DBMS_CLOUD.CREATE_CLOUD_TABLE(
   table_name  => 'CLOUD_TABLE_WITH_DEFAULT',
   column_list => 'I INTEGER,
                   A VARCHAR2(32) DEFAULT ''ABC''' );
END;
/

CREATE_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento crea una tabla particionada externa en archivos en la nube o desde archivos en un directorio. Esto le permite ejecutar consultas en datos externos desde Autonomous Database.

Sintaxis

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

partitioning_clause

Especifica la cláusula de partición completa, incluida la información de ubicación de las particiones individuales.

Si utiliza el parámetro partitioning_clause, no se permite el parámetro file_uri_list.

file_uri_list

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Esta opción solo está soportada con las tablas externas que se crean en un archivo de Object Storage.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Si utiliza el parámetro file_uri_list, no se permite el parámetro partitioning_clause.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

column_list

Lista delimitada por comas de nombres de columna y tipos de datos para la tabla externa. Este parámetro tiene los siguientes requisitos, según el tipo de archivos de datos especificados con el parámetro file_uri_list:

  • El parámetro column_list es necesario con archivos no estructurados. Mediante el uso de archivos no estructurados, por ejemplo, con archivos de texto CSV, el parámetro column_list debe especificar todos los nombres de columna y tipos de datos dentro del archivo de datos, así como las columnas de partición derivadas del nombre de objeto.

  • El parámetro column_list es opcional con archivos estructurados. Por ejemplo, con los archivos de datos Avro, ORC o Parquet, column_list no es necesario. Cuando no se incluye column_list, la opción partition_columns del parámetro format debe incluir especificaciones tanto para los nombres de columna (name) como para los tipos de dato (type).

field_list

Identifica los campos en los archivos de origen y sus tipos de datos. El valor por defecto es NULL, lo que significa que los campos y sus tipos de datos están determinados por el parámetro column_list. La sintaxis de este argumento es la misma que la cláusula field_list de las tablas externas normales de Oracle. Para obtener más información sobre field_list, consulte Oracle® Database Utilities.

format

La opción de formato partition_columns especifica los nombres de columna DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE y los tipos de dato de las columnas de partición cuando las columnas de partición se derivan de la ruta de archivo, según el tipo de archivo de datos, estructurado o no estructurado:

  • Cuando DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluye el parámetro column_list y los archivos de datos no están estructurados, como los archivos de texto CSV, partition_columns no incluye el tipo de dato. Por ejemplo, utilice un formato como el siguiente para este tipo de especificación partition_columns:

    '"partition_columns":["state","zipcode"]'

    El tipo de dato no es necesario porque se especifica en el parámetro DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list.

  • Cuando DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE no incluye el parámetro column_list y los archivos de datos están estructurados, como archivos Avro, ORC o Parquet, la opción partition_columns incluye tanto el nombre de columna, la subcláusula name y el tipo de dato, la subcláusula type. Por ejemplo, a continuación se muestra una especificación partition_columns:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

Si los archivos de datos no están estructurados y la subcláusula type se especifica con partition_columns, se ignora la subcláusula type.

Para los nombres de objeto que no se basan en el formato hive, el orden de las columnas especificadas partition_columns debe coincidir con el orden en que aparecen en el nombre de objeto en la ruta de archivo especificada en el parámetro file_uri_list.

Para ver todas las opciones de parámetros format que describen el formato de los archivos de origen, consulte DBMS_CLOUD Package Format Options.

Notas de uso

  • No puede llamar a este procedimiento con los parámetros partitioning_clause y file_uri_list.

  • La especificación del parámetro column_list es opcional con archivos de datos estructurados, incluidos los archivos de datos Avro, Parquet u ORC. Si no se especifica column_list, la opción partition_columns del parámetro format debe incluir name y type.

  • El parámetro column_list es necesario con archivos de datos no estructurados, como archivos de texto CSV.

  • El procedimiento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE admite archivos particionados externos en los servicios de almacenamiento de objetos en la nube soportados, incluidos:
    • Almacenamiento de objeto de infraestructura de nube de Oracle

    • Almacenamiento de bloques de Azure o almacenamiento de lago de datos de Azure

    • Amazon S3

    • Compatible con Amazon S3, que incluye: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage y Wasabi Hot Cloud Storage.

    • Repositorio de GitHub

    Consulte DBMS_CLOUD URI Formats para obtener más información.

  • El procedimiento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE admite archivos particionados externos en directorios, ya sea en un sistema de archivos local o en un sistema de archivos de red.

  • Al llamar a DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE con el parámetro file_uri_list, los tipos de columnas especificados en el nombre de archivo del almacén de objetos en la nube deben ser de uno de los siguientes tipos:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • El delimitador de registro predeterminado es detected newline. Con detected newline, DBMS_CLOUD intenta encontrar automáticamente el carácter de nueva línea correcto que se va a utilizar como delimitador de registro. DBMS_CLOUD busca primero el carácter de nueva línea de Windows \r\n. Si encuentra el carácter en línea nueva de Windows, este se utiliza como delimitador de registro para todos los archivos del procedimiento. If a Windows newline character is not found, DBMS_CLOUD searches for the UNIX/Linux newline character \n, and if it finds one it uses \n as the record delimiter for all files in the procedure. Si los archivos de origen utilizan una combinación de diferentes delimitadores de registros, puede encontrar un error como "KUP-04020: found record longer than buffer size supported". En este caso, debe modificar los archivos de origen para utilizar el mismo delimitador de registro o solo especificar los archivos de origen que utilizan el mismo delimitador de registro.

    Consulte DBMS_CLOUD Package Format Options para obtener información sobre la opción de formato recorddelmiter.

  • Las tablas particionadas externas que cree con DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluyen dos columnas invisibles file$path y file$name. Estas columnas ayudan a identificar de qué archivo procede un registro.

    • file$path: especifica el texto de la ruta de acceso del archivo hasta el principio del nombre del objeto.

    • file$name: especifica el nombre del objeto, incluido todo el texto que sigue al nombre del cubo.

Ejemplos

Ejemplo con el parámetro partitioning_clause:

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',  
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) location
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location 
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/  


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR 
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );                       
END;                     
/

Ejemplo con los parámetros file_uri_list y column_list con archivos de datos no estructurados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv', 
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)', 
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/ 

Ejemplo con file_uri_list sin el parámetro column_list con archivos de datos estructurados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          => 
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value 
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

Procedimiento CREATE_EXTERNAL_TABLE

Este procedimiento crea una tabla externa en los archivos de la nube o en los archivos de un directorio. Esto le permite ejecutar consultas en datos externos desde Autonomous Database.

Sintaxis

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Este parámetro no se utiliza al especificar un directorio o una URL de hiperenlace de tabla con file_uri_list.

file_uri_list

Este parámetro especifica una de las siguientes opciones:

  • Lista delimitada por comas de los URI de archivo de origen.

  • Lista delimitada por comas de URL de hiperenlace de tabla.

  • Uno o más directorios y archivos de origen.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Esta opción solo está soportada con las tablas externas que se crean en un archivo de Object Storage.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

URL de hiperenlace de tabla

Puede utilizar una URL de hiperenlace de tabla para crear una tabla externa de las siguientes formas:
  • Especifique una única URL de hiperenlace de tabla de Autonomous Database. También puede aplicar filtros y cláusulas en los datos al leer datos de la tabla. Por ejemplo, puede filtrar los datos mediante la cláusula WHERE u ordenarlos mediante la cláusula ORDER BY.

    Por ejemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Especifique una lista delimitada por comas de URL de hiperenlaces de tabla de Autonomous Database. Debe asegurarse de que todos los hiperenlaces de tabla incluidos deben tener los mismos nombres de columna, orden de columna y tipos de dato de columna en el mismo esquema.

    Por ejemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Nota

Las URL de hiperenlace de tabla no soportan comodines.
Consulte Acerca de los hiperenlaces de tablas en Autonomous Database y el procedimiento CREATE_URL para obtener más información.
Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

column_list

Lista delimitada por comas de nombres de columna y tipos de datos para la tabla externa.

field_list

Identifica los campos en los archivos de origen y sus tipos de datos. El valor por defecto es NULL, lo que indica que los campos y sus tipo de datos están determinados por el parámetro column_list. La sintaxis de este argumento es la misma que la cláusula field_list de las tablas externas regulares de Oracle Database. Para obtener más información sobre field_list, consulte ORACLE_LOADER Access Driver field_list en la cláusula field_definitions en Oracle Database Utilities.

format

Opciones que describen el formato de los archivos de origen. Para obtener una lista de las opciones y cómo especificar los valores, consulte DBMS_CLOUD Package Format Options.

Para los archivos con formato Avro, ORC o Parquet, consulte Procedimiento CREATE_EXTERNAL_TABLE para archivos Avro, ORC o Parquet.

Notas de uso

  • El procedimiento DBMS_CLOUD.CREATE_EXTERNAL_TABLE soporta archivos particionados externos en los orígenes de almacenamiento de objeto en la nube soportados, que incluyen:

    • Almacenamiento de objeto de infraestructura de nube de Oracle

    • Almacenamiento de bloques de Azure o almacenamiento de lago de datos de Azure

    • Amazon S3

    • Compatible con Amazon S3, que incluye: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage y Wasabi Hot Cloud Storage.

    • Repositorio de GitHub

    • Oracle Cloud Infrastructure Object Storage con URL de hiperenlace de tabla

    La credencial es una propiedad de nivel de tabla; los archivos externos deben estar en el mismo almacén de objetos.

    Consulte DBMS_CLOUD URI Formats para obtener más información.

  • El delimitador de registro predeterminado es detected newline. Con detected newline, DBMS_CLOUD intenta encontrar automáticamente el carácter de nueva línea correcto que se va a utilizar como delimitador de registro. DBMS_CLOUD busca primero el carácter de nueva línea de Windows \r\n. Si encuentra el carácter en línea nueva de Windows, este se utiliza como delimitador de registro para todos los archivos del procedimiento. If a Windows newline character is not found, DBMS_CLOUD searches for the UNIX/Linux newline character \n, and if it finds one it uses \n as the record delimiter for all files in the procedure. Si los archivos de origen utilizan una combinación de diferentes delimitadores de registros, puede encontrar un error como "KUP-04020: found record longer than buffer size supported". En este caso, debe modificar los archivos de origen para utilizar el mismo delimitador de registro o solo especificar los archivos de origen que utilizan el mismo delimitador de registro.

    Consulte DBMS_CLOUD Package Format Options para obtener información sobre la opción de formato recorddelimiter.

Ejemplo

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(   
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',   
      credential_name =>'OBJ_STORE_CRED',   
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),   
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',                   
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,                 
                     ACTUAL_MIN_TEMP,                 
                     ACTUAL_MAX_TEMP,                 
                     AVERAGE_MIN_TEMP,                    
                     AVERAGE_MAX_TEMP,     
                     AVERAGE_PRECIPITATION',   
      column_list => 'REPORT_DATE DATE,   
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,  
                     ACTUAL_MIN_TEMP NUMBER,  
                     ACTUAL_MAX_TEMP NUMBER,  
                     AVERAGE_MIN_TEMP NUMBER,   
                     AVERAGE_MAX_TEMP NUMBER,                  
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/ 

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where         
   actual_mean_temp > 69 and actual_mean_temp < 74

CREATE_EXTERNAL_TABLE Procedimiento para Apache Iceberg

Este procedimiento crea tablas externas para tablas Apache Iceberg en las configuraciones soportadas.

Se admiten estas configuraciones específicas:

Sintaxis

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

credential_name

Nombre de la credencial utilizada para acceder a los archivos de datos, los archivos de metadatos y el catálogo de Iceberg (si se utiliza).

Para las configuraciones de AWS y OCI, la credencial se debe crear como se describe en el procedimiento CREATE_CREDENTIAL.

Actualmente no se admiten las credenciales de AWS Amazon Resource Names (ARN).

file_uri_list

Debe ser NULL si se especifica un catálogo de Iceberg (consulte el parámetro format a continuación). Si no se utiliza un catálogo de iceberg, file_uri_list debe contener el URI del archivo de metadatos de iceberg.

column_list

Debe ser NULL, ya que los nombres y tipos de columna se derivan automáticamente de los metadatos de Iceberg.

Los nombres de columna coinciden con los nombres encontrados en los archivos de datos subyacentes (Parquet, Avro, ORC). Los tipos de dato de Oracle se derivan mediante las asignaciones Parquet/Avro/ORC entre los tipos de dato Iceberg y Parquet, Avro y ORC. Por lo tanto, los usuarios no pueden especificar column_list.

field_list

Debe ser NULL, ya que los nombres de columna y los tipos de dato se derivan automáticamente de los metadatos de Iceberg.

format

El parámetro format tiene una estructura diferente según el tipo de tabla Iceberg y qué información se utiliza para crear la tabla externa, por ejemplo, información de un catálogo de datos o un URI de metadatos directos.

Consulte Soporte de Iceberg en muestras de OCI Data Flow y Formatos de URI DBMS_CLOUD para obtener más información.

Ejemplo de parámetro de formato para tablas de AWS Iceberg utilizando un catálogo de AWS Glue

A continuación se muestra un parámetro format de ejemplo al crear tablas en una tabla AWS Iceberg mediante un catálogo de AWS Glue:

format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg',
                   'protocol_config' value
                    json_object('iceberg_catalog_type' value 'aws_glue',
                                'iceberg_glue_region'  value 'glue region',
                                'iceberg_table_path'   value 'database_name.table_name'))); 
Donde, el parámetro access_protocol contiene un objeto JSON con dos elementos de la siguiente manera:
  • protocol_type: debe ser 'iceberg'
  • protocol_config: objeto JSON anidado que especifica los detalles del catálogo de iceberg.
    • iceberg_catalog_type: debe ser 'aws_glue'
    • iceberg_glue_region: región del catálogo, por ejemplo, 'us-west-1'
    • iceberg_table_path: ruta de acceso glue database.glue table name.

Parámetro de formato de ejemplo para la tabla Iceberg de AWS mediante un URI de archivo de metadatos

A continuación se muestra un parámetro format de ejemplo al crear tablas en una tabla de AWS Iceberg mediante un URI de archivo de metadatos:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Parámetro de formato de ejemplo para la tabla OCI Iceberg mediante el catálogo HadoopCatalog

A continuación se muestra un parámetro format de ejemplo al crear tablas en una tabla de OCI Iceberg creada por OCI Data Flow mediante el catálogo HadoopCatalog:
format => json_object('access_protocol' value
       json_object('protocol_type'   value 'iceberg',
                   'protocol_config' value
                   json_object('iceberg_catalog_type'  value 'hadoop',
                               'iceberg_warehouse'     value '<OCI folder URI>',
                               'iceberg_table_path'    value 'database_name.table_name')));
Donde, el parámetro access_protocol contiene un objeto JSON con dos elementos de la siguiente manera:
  • protocol_type: debe ser 'iceberg'
  • protocol_config: objeto JSON anidado que especifica los detalles del catálogo de iceberg.
    • iceberg_catalog_type: debe ser 'hadoop'
    • iceberg_warehouse: ruta de acceso del directorio de almacén que se utiliza al generar la tabla, en formato URI nativo.
    • iceberg_table_path: ruta de acceso database_name.table name utilizada al crear la tabla.

Parámetro de formato de ejemplo para la tabla OCI Iceberg mediante el URI del archivo de metadatos

A continuación se muestra un parámetro format de ejemplo al crear tablas en una tabla de OCI Iceberg mediante el URI del archivo de metadatos:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Donde el parámetro access_protocol contiene un objeto JSON con un elemento como se indica a continuación:
  • protocol_type: debe ser 'iceberg'

CREATE_EXTERNAL_TABLE Procedimiento para archivos Avro, ORC o Parquet

Este procedimiento con el parámetro format definido en type con el valor avro, orc o parquet crea una tabla externa con archivos de formato Avro, ORC o Parquet en la nube o en un directorio.

Esto le permite ejecutar consultas en datos externos desde Autonomous Database.

Sintaxis

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Este parámetro no se utiliza al especificar un directorio con file_uri_list.

file_uri_list

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Esta opción solo está soportada con las tablas externas que se crean en un archivo de Object Storage.

Por ejemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

column_list

(Opcional) Este campo, cuando se especifica, sustituye el parámetro format->schema, que especifica que el esquema, las columnas y los tipos de dato se derivan automáticamente. Consulte el parámetro format para obtener más información.

Cuando se especifica column_list para el origen de Avro, ORC o Parquet, los nombres de columna deben coincidir con las columnas encontradas en el archivo. Los tipos de dato de Oracle se deben asignar correctamente a los tipos de dato Avro, ORC o Parquet.

Para archivos de Parquet, consulte DBMS_CLOUD Package Parquet to Oracle Data Type Mapping para obtener más información.

Para los archivos ORC, consulte DBMS_CLOUD Package ORC to Oracle Data Type Mapping para obtener más información.

Para obtener más información sobre los archivos Avro, consulte DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

field_list

Ignorado para archivos de Avro, ORC o Parquet.

Los campos del origen coinciden con las columnas de la tabla externa por nombre. Los tipos de dato de origen se convierten al tipo de dato de columna de tabla externa.

Para los archivos ORC, consulte DBMS_CLOUD Package ORC to Oracle Data Type Mapping

Para archivos de Parquet, consulte DBMS_CLOUD Package Parquet to Oracle Data Type Mapping para obtener más información.

Para obtener más información sobre los archivos Avro, consulte DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

format

Para obtener más información sobre los archivos de origen Avro, ORC o Parquet type, consulte DBMS_CLOUD Package Format Options for Avro, ORC o Parquet.

Ejemplos ORC

format => '{"type":"orc", "schema": "all"}'
format => json_object('type' value 'orc', 'schema' value 'first')

Ejemplos Avro

format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')

Ejemplos Parquet

format => '{"type":"parquet", "schema": "all"}'
format => json_object('type' value 'parquet', 'schema' value 'first')

Asignación de nombre de columna de Avro, ORC o Parquet a nombres de columna de Oracle

Consulte DBMS_CLOUD Package Avro, ORC y Parquet to Oracle Column Name Mapping para obtener información sobre la asignación de nombres de columna y el uso de conversión de nombres de columna en Oracle SQL.

CREATE_EXTERNAL_TEXT_INDEX Procedimiento

Este procedimiento crea un índice de texto en los archivos de Object Storage.

El procedimiento CREATE_EXTERNAL_TEXT_INDEX crea un índice de texto en los archivos de Object Storage especificados en la ubicación location_uri. El índice se refresca a intervalos regulares para cualquier adición o supresión nueva realizada con archivos en el URI de ubicación.

Sintaxis

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a la ubicación de Cloud Object Storage. Para los URI de cubo públicos, autenticados previamente o firmados previamente, se puede especificar un valor NULL.

Consulte Configuración de políticas y roles para acceder a recursos para obtener más información.

Si no proporciona un valor credential_name, credential_name se define en un valor NULL.

location_uri

Este parámetro especifica la lista delimitada por comas de los URI de archivo de origen.

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Este parámetro es obligatorio.

URI de archivo de origen en la nube

Este parámetro especifica una lista delimitada por comas de URI de archivo de origen o uno o más directorios y archivos de origen.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Ejemplo de uso de expresiones regulares:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Ejemplo de uso de comodines:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

El formato de los URI depende del servicio Cloud Object Storage que utilice, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

index_name Especifica el nombre del índice que está creando en los archivos ubicados en la ubicación location_uri.

Este parámetro es obligatorio.

format

Especifica opciones de configuración adicionales. Las opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:

refresh_rate: especifica la frecuencia en minutos en la que se refresca el índice local. Las nuevas cargas y supresiones de archivos dan como resultado un refrescamiento de índice. El valor por defecto es de 5 minutos.

binary_files: especifica si el contenido de los archivos que se van a indexar es binario. Por ejemplo, PDF, MS-Word, el valor por defecto es FALSE.

json_index: especifica si el contenido de los archivos que se van a indexar es JSON o JSON de fila. El valor por defecto es FALSE.

json_index_doc_sep: especifica el separador utilizado para el preprocesamiento de documentos JSON de fila. El valor por defecto es '\n' (nueva línea).

json_index_doc_len: especifica la longitud de cada documento JSON en el objeto. El Valor por defecto es 32767 y el Valor Máximo es 200000.

file_compression: especifica el formato de compresión de los archivos JSON. El valor por defecto es gzip.

stop_words: especifica una lista de palabras irrelevantes que se pueden proporcionar al crear índices.

El valor stop_words indica si se trata de una lista de palabras irrelevantes o una tabla de palabras irrelevantes. Cuando se proporciona una matriz de JSON, el parámetro de palabras de parada se trata como una lista; de lo contrario, el parámetro de palabras de parada se trata como un nombre de tabla cuya columna "STOP_WORDS" se utiliza para leer en la lista de palabras de parada.

Puede especificar palabras irrelevantes mediante los siguientes métodos:

  • Matriz de JSON: por ejemplo: format := '{"stop_words":["king","queen"]}'
  • Nombre de tabla de palabras de parada: por ejemplo: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Si no proporciona un parámetro format, format se define en un valor NULL.

Ejemplo

BEGIN 
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

CREATE_HYBRID_PART_TABLE Procedimiento

Este procedimiento crea una tabla particionada híbrida. Esto permite ejecutar consultas en datos particionados híbridos desde Autonomous Database mediante objetos y archivos de base de datos en la nube, o objetos y archivos de base de datos en un directorio.

Sintaxis

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

partitioning_clause

Especifica la cláusula de partición completa, incluida la información de ubicación de las particiones individuales.

Para utilizar directorios, la cláusula de partición soporta los valores LOCATION y DEFAULT DIRECTORY.

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE. Los patrones de expresión regular no están soportados para los nombres de directorio.

Por ejemplo:

partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
				    ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),….

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

column_list

Lista delimitada por comas de nombres de columna y tipos de datos para la tabla externa.

field_list

Identifica los campos en los archivos de origen y sus tipos de datos. El valor por defecto es NULL, lo que significa que los campos y sus tipos de datos están determinados por el parámetro column_list. La sintaxis de este argumento es la misma que la cláusula field_list de las tablas externas normales de Oracle. Para obtener más información sobre field_list, consulte Oracle® Database Utilities.

format

Opciones que describen el formato de los archivos de origen. Para obtener una lista de las opciones y cómo especificar los valores, consulte DBMS_CLOUD Package Format Options.

Notas de uso

  • El procedimiento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE admite archivos particionados externos en los servicios de almacenamiento de objetos en la nube soportados, incluidos:

    • Almacenamiento de objeto de infraestructura de nube de Oracle

    • Almacenamiento de bloques de Azure o almacenamiento de lago de datos de Azure

    • Amazon S3

    • Compatible con Amazon S3, que incluye: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage y Wasabi Hot Cloud Storage.

    • Repositorio de GitHub

    La credencial es una propiedad de nivel de tabla; los archivos externos deben estar en el mismo almacén de objetos.

    Consulte DBMS_CLOUD URI Formats para obtener más información.

  • El procedimiento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE admite archivos particionados híbridos en directorios, ya sea en un sistema de archivos local o en un sistema de archivos de red.

  • Las tablas particionadas externas que cree con DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluyen dos columnas invisibles file$path y file$name. Estas columnas ayudan a identificar de qué archivo procede un registro.

    • file$path: especifica el texto de la ruta de acceso del archivo hasta el principio del nombre del objeto.

    • file$name: especifica el nombre del objeto, incluido todo el texto que sigue al nombre del cubo.

Ejemplos

BEGIN  
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',  
      credential_name =>'OBJ_STORE_CRED',  
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/ 


BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

Procedimiento DELETE_ALL_OPERATIONS

Este procedimiento borra todas las operaciones de carga de datos registradas en la tabla user_load_operations del esquema o todas las operaciones de carga de datos del tipo especificado, según se haya indicado con el parámetro type.

Sintaxis

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parámetros

Parámetro Descripción

type

Especifica el tipo de operación que se va a suprimir. Los valores de tipo se pueden encontrar en la columna TYPE de la tabla user_load_operations.

Si no se especifica type, se suprimen todas las filas.

Notas de uso

  • Este procedimiento no suprime las operaciones en ejecución actualmente (operaciones con el estado "En ejecución").

  • Este procedimiento suprime las tablas de registro y los archivos log asociados con las operaciones.

Procedimiento DELETE_FILE

Este procedimiento elimina el archivo especificado del directorio especificado en Autonomous Database.

Sintaxis

 DBMS_CLOUD.DELETE_FILE ( 
       directory_name     IN VARCHAR2,
       file_name          IN VARCHAR2,
       force              IN BOOLEAN DEFAULT FALSE); 

Parámetros

Parámetro Descripción

directory_name

Nombre del directorio en la instancia de Autonomous Database.

file_name

Nombre del archivo que se va a eliminar.

force

Ignore y no informe errores si el archivo no existe. Los valores válidos son: TRUE y FALSE. El valor por defecto es FALSE.

Nota

Para ejecutar DBMS_CLOUD.DELETE_FILE con un usuario que no sea ADMIN, debe otorgar privilegios del directorio que contiene el archivo a ese usuario. Por ejemplo, ejecute el siguiente comando como ADMIN para otorgar privilegios de escritura a adb_user:
GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Ejemplo

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/ 

Procedimiento DELETE_OBJECT

Este procedimiento suprime el objeto especificado en el almacén de objetos.

Sintaxis

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

object_uri

URI de objeto o de archivo para el objeto que se va a suprimir. El formato del URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos del URI de DBMS_CLOUD.

force

Ignore y no informe errores si el objeto no existe. Los valores válidos son: TRUE y FALSE. El valor por defecto es FALSE.

Ejemplo

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/ 

DELETE_OPERATION Procedimiento

Este procedimiento borra las entradas de carga de datos para el identificador de operación especificado registrado en las tablas user_load_operations o dba_load_operations del esquema.

Sintaxis

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parámetros

Parámetro Descripción

id

Especifica el ID de operación asociado a las entradas del archivo log que desea suprimir.

Nota de uso

  • Este procedimiento suprime las tablas de registro y los archivos log asociados con el ID de operación especificado en la entrada.

Ejemplo

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

DROP_EXTERNAL_TEXT_INDEX Procedimiento

Este procedimiento borra el índice de texto en los archivos de Object Storage.

El procedimiento DROP_EXTERNAL_TEXT_INDEX borra el índice especificado creado con el procedimiento CREATE_EXTERNAL_TEXT_INDEX.

Sintaxis

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parámetros

Parámetro Descripción
index_name

Especifica el nombre del índice que va a borrar.

El nombre del índice debe coincidir con el nombre proporcionado en el momento de la creación del índice.

Este parámetro es obligatorio.

Ejemplo

BEGIN 
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

EXPORT_DATA Procedimiento

Este procedimiento exporta datos de Autonomous Database según el resultado de una consulta. Este procedimiento se sobrecarga y admite la escritura de archivos en la nube o en un directorio.

Según el parámetro format type, el procedimiento exporta archivos a la nube o a una ubicación de directorio como archivos de texto en formato CSV, JSON, Parquet o XML, o mediante el controlador de acceso ORACLE_DATAPUMP para escribir datos en un archivo de volcado de pump de datos de Oracle.

Sintaxis

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Cuando no se incluye el parámetro de credencial, se especifica la salida a un directorio.

file_uri_list

Hay diferentes formas, según el valor del parámetro de formato y según si incluye un parámetro de credencial:
  • Cuando el valor type del parámetro format es json: el JSON del almacén de objetos o la ubicación del directorio especificado se guarda con un nombre de archivo generado basado en el valor del parámetro file_uri_list. Consulte Nombre de archivo para salida de texto (CSV, JSON, Parquet o XML) para obtener más información.

  • Cuando el valor type del parámetro format es datapump, file_uri_list es una lista delimitada por comas de los archivos de volcado. Especifica los archivos que se van a crear en el almacén de objetos. El uso de caracteres comodín y de sustitución no está soportado en file_uri_list.

  • Cuando no se especifica el parámetro credential_name, se proporciona un nombre de directorio en file_uri_list.

El formato de los URI depende del servicio de Cloud Object Storage que esté utilizando. Para obtener información, consulte Formatos DBMS_CLOUD de URI.

format

Cadena JSON que proporciona opciones de formato de exportación.

La opción admitida es:

  • type: se requiere la opción type format y debe tener uno de los valores: csv | datapump | json | parquet | xml.

Consulte DBMS_CLOUD Package Format Options for EXPORT_DATA.

query

Utilice este parámetro para especificar una sentencia SELECT para que solo se exporten los datos necesarios. La consulta determina el contenido de los archivos que se exportan como archivos de texto CSV, JSON, Parquet o XML, o como archivos de volcado. Por ejemplo:

SELECT warehouse_id, quantity FROM inventories

Para obtener más información sobre el valor type de formato datapump, consulte Filtros de datos de exportación de Oracle Data Pump y Descarga y carga de datos con el controlador de acceso ORACLE_DATAPUMP para obtener más información.

Cuando el valor format type es json, se comprueba cada resultado de consulta y, si no es JSON, según lo determinado con la función: JSON_OBJECT_T.parse(), DBMS_CLOUD.EXPORT_DATA transforma la consulta para incluir la función JSON_OBJECT para convertir la fila en JSON. Consulte JSON_OBJECT_T Object Type para obtener más información.

Por ejemplo:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de exportación como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Notas de uso:

  • El valor del parámetro query que proporcione puede ser una consulta avanzada, si es necesario, como una consulta que incluya uniones o subconsultas.

  • Según el parámetro de formato especificado, DBMS_CLOUD.EXPORT_DATA muestra los resultados de la consulta especificada en el almacén de objetos en la nube o en una ubicación de directorio en uno de estos formatos:

  • Para la salida CSV, JSON o XML, por defecto cuando un archivo generado contiene 10 MB de datos, se crea un nuevo archivo de salida. Sin embargo, si tiene menos de 10 MB de datos de resultados, puede tener varios archivos de salida, según el servicio de base de datos y el número de ECPU (OCPU si la base de datos utiliza OCPU) para la instancia de Autonomous Database.

    Consulte Nombre de archivo para salida de texto (CSV, JSON, Parquet o XML) para obtener más información.

    El tamaño de fragmento del archivo de salida predeterminado es de 10 MB para CSV, JSON o XML. Puede cambiar este valor con la opción maxfilesize del parámetro format. Consulte DBMS_CLOUD Package Format Options for EXPORT_DATA para obtener más información.

  • Para la salida de Parquet, cada archivo generado tiene menos de 128 MB y se pueden generar varios archivos de salida. Sin embargo, si tiene menos de 128 MB de datos de resultados, puede tener varios archivos de salida según el servicio de base de datos y el número de ECPU (OCPU si la base de datos utiliza OCPU) para la instancia de Autonomous Database.

    Consulte Nombre de archivo para salida de texto (CSV, JSON, Parquet o XML) para obtener más información.

Notas de uso para la salida ORACLE_DATAPUMP (DBMS_CLOUD.EXPORT_DATA con el parámetro format, opción type, datapump):

  • EXPORT_DATA utiliza DATA_PUMP_DIR como directorio de registro por defecto. Por lo tanto, se necesita el privilegio de escritura en DATA_PUMP_DIR al utilizar la salida ORACLE_DATAPUMP.

  • La exportación de Autonomous Database mediante DBMS_CLOUD.EXPORT_DATA con la opción type del parámetro format datapump solo soporta Oracle Cloud Infrastructure Object Storage, los almacenes de objetos de Oracle Cloud Infrastructure Object Storage Classic o la salida del directorio.

  • Al especificar DBMS_CLOUD.EXPORT_DATA con la opción datapump del parámetro format type, el valor del parámetro credential_name no puede ser una entidad de recurso de OCI.

  • Oracle Data Pump divide cada parte del archivo de volcado en fragmentos más pequeños para cargas más rápidas. La consola de Oracle Cloud Infrastructure Object Storage muestra varios archivos para cada parte del archivo de volcado que exporte. El tamaño de los archivos de volcado reales se mostrará como cero (0) y sus fragmentos de archivo relacionados como 10 MB o menos. Por ejemplo:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Al descargar el archivo de volcado de cero bytes desde la consola de Oracle Cloud Infrastructure o mediante la CLI de Oracle Cloud Infrastructure, no obtendrá todos los archivos de volcado. Para descargar todos los archivos de volcado del almacén de objetos, utilice una herramienta que soporte Swift, como curl, y proporcione su conexión de usuario y token de autenticación Swift.
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    Si importa un archivo con los procedimientos DBMS_CLOUD que soportan el parámetro format type con el valor 'datapump', solo tiene que proporcionar el nombre de archivo principal. Los procedimientos que soportan el tipo del formato 'datapump' detectan y descargan automáticamente los fragmentos.

    Cuando se utiliza DBMS_CLOUD.DELETE_OBJECT, el procedimiento detecta y suprime automáticamente los fragmentos cuando el procedimiento suprime el archivo principal.

  • El procedimiento DBMS_CLOUD.EXPORT_DATA crea los archivos de volcado a partir de los valores file_uri_list que especifique, de la siguiente manera:

    • A medida que se necesitan más archivos, el procedimiento crea archivos adicionales desde file_uri_list.

    • El procedimiento no sobrescribe los archivos. Si existe un archivo de volcado en file_uri_list, DBMS_CLOUD.EXPORT_DATA informa de un error.

    • DBMS_CLOUD.EXPORT_DATA no crea cubos.

  • El número de archivos de volcado que genera DBMS_CLOUD.EXPORT_DATA se determina cuando se ejecuta el procedimiento. El número de archivos de volcado que se generan depende del número de nombres de archivo que proporcione en el parámetro file_uri_list, así como del número de OCPU de Autonomous Database disponibles para la instancia, el nivel de servicio y el tamaño de los datos.

    Por ejemplo, si utiliza una instancia de Autonomous Database de 1 OCPU o el servicio low, se exporta un único archivo de volcado sin paralelismo, incluso si proporciona varios nombres de archivo. Si utiliza una instancia de Autonomous Database con 4 OCPU con el servicio medium o high, los trabajos se pueden ejecutar en paralelo y se exportan varios archivos de volcado si proporciona varios nombres de archivo.

  • Los archivos de volcado que cree con DBMS_CLOUD.EXPORT_DATA no se pueden importar mediante Oracle Data Pump impdp. Según la base de datos, puede utilizar estos archivos de la siguiente forma:

    • En una instancia de Autonomous Database, puede utilizar los archivos de volcado con los procedimientos DBMS_CLOUD que soportan el parámetro format type con el valor 'datapump'. Puede importar los archivos de volcado mediante DBMS_CLOUD.COPY_DATA o puede llamar a DBMS_CLOUD.CREATE_EXTERNAL_TABLE para crear una tabla externa.

    • En cualquier otra instancia de Oracle Database, como Oracle Database 19c local, puede importar los archivos de volcado creados con el procedimiento DBMS_CLOUD.EXPORT_DATA mediante el controlador de acceso ORACLE_DATAPUMP. Consulte Descarga y carga de datos con el controlador de acceso ORACLE_DATAPUMP para obtener más información.

  • El valor del parámetro query que proporcione puede ser una consulta avanzada, si es necesario, como una consulta que incluya uniones o subconsultas.

Notas de Uso para DBMS_CLOUD.EXPORT_DATA con Salida a un Directorio

  • El directorio proporcionado debe existir y debe estar conectado como usuario ADMIN o tener acceso WRITE al directorio.

  • DBMS_CLOUD.EXPORT_DATA no crea directorios.

  • El procedimiento no sobrescribe los archivos. Por ejemplo, si existe un archivo de volcado en file_uri_list, DBMS_CLOUD.EXPORT_DATA informa un error como:

    ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
    ORA-27038: created file already exists

Ejemplos

En el siguiente ejemplo se muestra DBMS_CLOUD.EXPORT_DATA con el parámetro de formato type con el valor datapump:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name =>'OBJ_STORE_CRED',
      file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp',
      format => json_object('type' value 'datapump', 'compression' value 'basic', 'version' value 'latest'),
      query => 'SELECT warehouse_id, quantity FROM inventories'
     );
   END;
/  

En este ejemplo, namespace-string es el espacio Oracle Cloud Infrastructure Object Storage Namepace, y bucketname es el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.

En el siguiente ejemplo se muestra DBMS_CLOUD.EXPORT_DATA con el parámetro de formato type con el valor json:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/  

En el siguiente ejemplo se muestra DBMS_CLOUD.EXPORT_DATA con el parámetro de formato type con el valor xml:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

En el siguiente ejemplo se muestra DBMS_CLOUD.EXPORT_DATA con el parámetro de formato type con el valor csv:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true, 'encryption' value ('user_defined_function' value 'ADMIN.decryption_callback')));
     );
   END;
/  

En el siguiente ejemplo se muestra DBMS_CLOUD.EXPORT_DATA exportando datos a una ubicación de directorio con el parámetro type con el valor datapump:

BEGIN
 DBMS_CLOUD.EXPORT_DATA(
    file_uri_list => 'export_dir:sales.dmp',
    format        => json_object('type' value 'datapump'),
    query         => 'SELECT * FROM sales'
 );
END;
/

GET_OBJECT Procedimiento y función

Este procedimiento está sobrecargado. El formulario del procedimiento lee un objeto de Cloud Object Storage y lo copia en Autonomous Database. El formulario de función lee un objeto de Cloud Object Storage y devuelve un valor BLOB a Autonomous Database.

Sintaxis

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

object_uri

URI de archivo o de objeto. El formato del URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos del URI de DBMS_CLOUD.

directory_name

Nombre del directorio en la base de datos.

Pie 1
Puede utilizar una URL de hiperenlace de tabla de las siguientes formas:
  • Especifique una única URL de hiperenlace de tabla de Autonomous Database.

  • Especifique una lista delimitada por comas de URL de hiperenlaces de tabla de Autonomous Database. Debe asegurarse de que todos los hiperenlaces de tabla incluidos deben tener los mismos nombres de columna, orden de columna y tipos de dato de columna en el mismo esquema.

Consulte Acerca de los hiperenlaces de tablas en Autonomous Database y el procedimiento CREATE_URL para obtener más información.

file_name

Especifica el nombre del archivo que se va a crear. Si no se ha especificado el nombre de archivo, este se toma desde después de la última barra inclinada del parámetro object_uri. Para casos especiales, por ejemplo, cuando el nombre de archivo contenga barras inclinadas, utilice el parámetro file_name.

startoffset

Desplazamiento, en bytes, desde donde comienza a leer el procedimiento.

endoffset

Desplazamiento, en bytes, hasta donde el procedimiento detiene la lectura.

compression

Especifica la compresión utilizada para almacenar el objeto. Cuando compression se define en ‘AUTO’, se descomprime el archivo (el valor ‘AUTO’ implica que el objeto especificado con object_uri se comprime con Gzip).

Nota a pie 1

Nota

Para ejecutar DBMS_CLOUD.GET_OBJECT con un usuario que no sea ADMIN, debe otorgar privilegios WRITE en el directorio a ese usuario. Por ejemplo, ejecute el siguiente comando como ADMIN para otorgar privilegios de escritura a adb_user:

GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Valores de Retorno

La pantalla de función lee del almacén de objetos y DBMS_CLOUD.GET_OBJECT devuelve BLOB.

Ejemplos

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR'); 
END;
/

Para leer datos de caracteres de un archivo del almacén de objetos:

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

Para agregar una imagen almacenada en el almacén de objetos en BLOB en la base de datos:


DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

En este ejemplo, namespace-string es el espacio Oracle Cloud Infrastructure Object Storage Namepace, y bucketname es el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.

Función LIST_FILES

Esta función muestra los archivos del directorio especificado. Los resultados incluyen los nombres de archivo y metadatos adicionales sobre los archivos, como el tamaño de archivo en bytes, el registro de hora de creación y el registro de hora de la última modificación.

Sintaxis

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parámetros

Parámetro Descripción

directory_name

Nombre del directorio en la base de datos. Este parámetro admite comodines.

Notas de uso

  • Para ejecutar DBMS_CLOUD.LIST_FILES con un usuario que no sea ADMIN, debe otorgar privilegios para la lectura en el directorio a ese usuario. Por ejemplo, ejecute el siguiente comando como ADMIN para otorgar privilegios en el directorio a adb_user:

    GRANT READ ON DIRECTORY data_pump_dir TO adb_user;
  • Se trata de una función de tabla con líneas discontinuas con el tipo de retorno DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES no obtiene el valor de total de control y devuelve NULL para este campo.

  • DBMS_CLOUD.LIST_FILES soporta el filtrado de archivos de forma selectiva mediante la sintaxis directory:filename. Los comodines están soportados en el nombre de archivo.

Ejemplo:

Se trata de una función de línea discontinua que devuelve una fila para cada archivo. Por ejemplo, utilice la siguiente consulta para utilizar esta función:

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

Ejemplos de consultas con comodines:

Puede utilizar DBMS_CLOUD.LIST_FILES con la sintaxis DIRECTORY:FILE, ya sea especificando un archivo o utilizando comodines. * y ? son los comodines soportados.

Ejemplo 1: muestre todos los archivos CSV que empiecen por "f" en el directorio DATA_PUMP_DIR con un comodín.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f*.csv');

Ejemplo 2: muestre el archivo f1.csv en el directorio DATA_PUMP_DIR especificando el nombre del archivo.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f1.csv');

Función LIST_OBJECTS

Esta función muestra los objetos de la ubicación especificada en el almacén de objetos. Los resultados incluyen los nombres de objetos y metadatos adicionales sobre los objetos, como el tamaño, el total de control, el registro de hora de creación y el registro de hora de la última modificación.

Sintaxis

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

location_uri

URI de carpeta o cubo de almacenamiento de objetos. El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Los comodines se admiten para mostrar de forma selectiva archivos o subcarpetas en un URI. Los caracteres "*" y "?" se consideran caracteres comodín.

Ejemplo de uso de comodines:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv'

Notas de uso

  • Según las capacidades del almacén de objetos, DBMS_CLOUD.LIST_OBJECTS no devuelve valores para determinados atributos y el valor devuelto para el campo es NULL en este caso.

    Todos los almacenes de objetos soportados devuelven valores para los campos OBJECT_NAME, BYTES y CHECKSUM.

    En la siguiente tabla se muestra soporte para los campos CREATED y LAST_MODIFIED por almacén de objetos:

    Almacén de Objetos CREATED LAST_MODIFIED
    Nativo de Oracle Cloud Infrastructure Registro de hora de devoluciones Registro de hora de devoluciones
    Swift de Oracle Cloud Infrastructure Devuelve NULL Registro de hora de devoluciones
    Oracle Cloud Infrastructure Classic Devuelve NULL Registro de hora de devoluciones
    Amazon S3 Devuelve NULL Registro de hora de devoluciones
    Compatibles con Amazon S3 Devuelve NULL Registro de hora de devoluciones
    Azure Registro de hora de devoluciones Registro de hora de devoluciones
    Repositorio de GitHub    
  • El valor de total de control es el total de control MD5. Se trata de un número hexadecimal de 32 caracteres que se calcula en el contenido del objeto. Se espera que tenga un valor de total de control diferente si se utiliza la credencial OCI$RESOURCE_PRINCIPAL.

  • Se trata de una función de tabla con líneas discontinuas con el tipo de retorno DBMS_CLOUD_TYPES.list_object_ret_t.

Ejemplo

Se trata de una función con canalización que devuelve una fila para cada objeto. Por ejemplo, utilice la siguiente consulta para utilizar esta función:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED', 
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');


OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z          

En este ejemplo, namespace-string es el espacio Oracle Cloud Infrastructure Object Storage Namepace, y bucketname es el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.

MOVE_OBJECT Procedimiento

Este procedimiento mueve un objeto de un cubo o carpeta de Cloud Object Storage a otro.

La carpeta o el bloque de origen y de destino pueden estar en el mismo proveedor de almacén de objetos en la nube o en otro diferente.

Cuando el origen y el destino están en almacenes de objetos distintos o tienen cuentas diferentes con el mismo proveedor de nube, puede proporcionar nombres de credenciales independientes para las ubicaciones de origen y destino.

El nombre de credencial de origen también lo utiliza por defecto la ubicación de destino cuando no se proporciona el nombre de credencial de destino.

Sintaxis

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parámetros

Parámetro Descripción

source_credential_name

Nombre de la credencial para acceder a Cloud Object Storage de origen.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor source_credential_name, credential_name se define en NULL.

source_object_uri

Especifica el URI que apunta al cubo o la ubicación de la carpeta de Object Storage de origen.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

target_object_uri

Especifica el URI del cubo o la carpeta de Object Storage de destino, donde se deben mover los archivos.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

target_credential_name

Nombre de la credencial para acceder a la ubicación de Cloud Object Storage de destino.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor target_credential_name, target_object_uri se define en el valor source_credential_name.

Ejemplo

BEGIN 
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedimiento PUT_OBJECT

Este procedimiento está sobrecargado. En un formulario, el procedimiento copia un archivo de Autonomous Database en Cloud Object Storage. En otro formulario, el procedimiento copia un archivo BLOB de Autonomous Database en Cloud Object Storage.

Sintaxis

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

object_uri

URI de archivo o de objeto. El formato del URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos del URI de DBMS_CLOUD.

directory_name

Nombre del directorio en la instancia de Autonomous Database.

Pie 2

contents

Especifica el elemento BLOB que se va a copiar de Autonomous Database en Cloud Object Storage.

file_name

Nombre del archivo en el directorio especificado.

compression

Especifica la compresión utilizada para almacenar el objeto.

Valor por defecto: NULL

Nota a pie 2

Nota

Para ejecutar DBMS_CLOUD.PUT_OBJECT con un usuario que no sea ADMIN, debe otorgar privilegios para la lectura en el directorio a ese usuario. Por ejemplo, ejecute el siguiente comando como ADMIN para otorgar privilegios de lectura a adb_user:

GRANT READ ON DIRECTORY data_pump_dir TO adb_user;

Ejemplo

Para manejar datos BLOB después del procesamiento en la base de datos y, a continuación, almacenar los datos directamente en un archivo del almacén de objetos:

DECLARE
      my_blob_data BLOB;
BEGIN 
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data)); 
END;
/

Notas de uso

En función del almacenamiento de objetos en la nube, el tamaño del objeto que transfiere está limitado de la siguiente manera:

Servicio de almacenamiento de objetos en la nube Límite de tamaño de transferencia de objeto

Almacenamiento de objeto de infraestructura de nube de Oracle

50 GB

Amazon S3

5 GB

Almacenamiento de bloques de Azure o almacenamiento de lago de datos de Azure

256 MB

Compatibles con Amazon S3

Definido por el proveedor del almacén de objetos. Para obtener más información, consulte la documentación del profesional asistencial.

El almacén de objetos de Oracle Cloud Infrastructure no permite escribir archivos en un cubo público sin proporcionar credenciales (Oracle Cloud Infrastructure permite a los usuarios descargar objetos de cubos públicos). Por lo tanto, debe proporcionar un nombre de credencial con credenciales válidas para almacenar un objeto en un cubo público de Oracle Cloud Infrastructure mediante PUT_OBJECT.

Consulte DBMS_CLOUD URI Formats para obtener más información.

SYNC_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento simplifica la actualización de una tabla particionada externa desde archivos en la nube. Ejecute este procedimiento siempre que se agreguen nuevas particiones o cuando se eliminen particiones del origen del almacén de objetos para la tabla particionada externa.

Sintaxis

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla de destino. Se debe crear la tabla de destino para poder ejecutar DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE.

schema_name

Nombre del esquema en el que reside la tabla de destino. El valor por defecto es NULL, lo que significa que la tabla de destino está en el mismo esquema que el usuario que ejecuta el procedimiento.

update_columns

Los nuevos archivos pueden introducir un cambio en el esquema. Las actualizaciones soportadas incluyen: nuevas columnas, columnas suprimidas. Las actualizaciones de las columnas existentes, por ejemplo, un cambio en el tipo de dato devuelve errores.

Valor por defecto: False

VALIDATE_EXTERNAL_PART_TABLE Procedimiento

Este procedimiento valida los archivos del origen para una tabla externa particionada, genera información del log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla externa en una tabla archivo_error en Autonomous Database. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

partition_name

Si se define, sólo se valida una partición específica. Si no se especifica, lea todas las particiones de forma secuencial hasta que se alcance rowcount.

subpartition_name

Si se define, solo se valida una subpartición específica. Si no se especifica, lea todas las particiones o subparticiones externas de forma secuencial hasta que se alcance rowcount.

schema_name

Nombre del esquema en el que reside la tabla externa. El valor por defecto es NULL, lo que significa que la tabla externa está en el mismo esquema que el usuario que ejecuta el procedimiento.

rowcount

Número de filas que se van a examinar. El valor por defecto es NULL, lo que significa que se examinan todas las filas de los archivos de origen.

partition_key_validation

Sólo para uso interno. No utilice este parámetro.

stop_on_error

Determina si la validación se debe parar cuando se rechaza una fila. El valor por defecto es TRUE, lo que significa que la validación se para en la primera fila rechazada. Al definir el valor en FALSE, se especifica que la validación no se para en la primera fila rechazada y se validan todas las filas hasta el valor especificado para el parámetro rowcount.

Procedimiento VALIDATE_EXTERNAL_TABLE

Este procedimiento valida los archivos de origen para una tabla externa, genera información de log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla externa en una tabla de archivos incorrectos en Autonomous Database. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,		
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,		
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

schema_name

Nombre del esquema en el que reside la tabla externa. El valor por defecto es NULL, lo que significa que la tabla externa está en el mismo esquema que el usuario que ejecuta el procedimiento.

rowcount

Número de filas que se van a examinar. El valor por defecto es NULL, lo que significa que se examinan todas las filas de los archivos de origen.

stop_on_error

Determina si la validación se debe parar cuando se rechaza una fila. El valor por defecto es TRUE, lo que significa que la validación se para en la primera fila rechazada. Al definir el valor en FALSE, se especifica que la validación no se para en la primera fila rechazada y se validan todas las filas hasta el valor especificado para el parámetro rowcount.

Si la tabla externa hace referencia a los archivos Avro, ORC o Parquet, la validación se para en la primera fila rechazada.

Cuando la tabla externa especifica el parámetro format definido en type con el valor avro, orc o parquet, el parámetro stop_on_error siempre tiene el valor TRUE. Por lo tanto, el archivo de errores de la tabla siempre estará vacío para una tabla externa que haga referencia a archivos Avro, ORC o Parquet.

Notas de uso

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funciona tanto con tablas externas particionadas como con tablas particionadas híbridas. Esto podría leer datos de todas las particiones externas hasta que se alcance rowcount o se aplique stop_on_error. No tiene control sobre qué partición o partes de una partición se leen en qué orden.

VALIDATE_HYBRID_PART_TABLE Procedimiento

Este procedimiento valida los archivos de origen para la tabla particionada híbrida, genera información del log y almacena las filas que no coinciden con las opciones de formato especificadas para la tabla híbrida en una tabla archivo incorrecto en Autonomous Database. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parámetros

Parámetro Descripción

table_name

Nombre de la tabla externa.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

partition_name

Si se define, sólo se valida una partición específica. Si no se especifica, lea todas las particiones externas de forma secuencial hasta que se alcance rowcount.

subpartition_name

Si se define, solo se valida una subpartición específica. Si no se especifica, lea todas las particiones o subparticiones externas de forma secuencial hasta que se alcance rowcount.

schema_name

Nombre del esquema en el que reside la tabla externa. El valor por defecto es NULL, lo que significa que la tabla externa está en el mismo esquema que el usuario que ejecuta el procedimiento.

rowcount

Número de filas que se van a examinar. El valor por defecto es NULL, lo que significa que se examinan todas las filas de los archivos de origen.

partition_key_validation

Sólo para uso interno. No utilice este parámetro.

stop_on_error

Determina si la validación se debe parar cuando se rechaza una fila. El valor por defecto es TRUE, lo que significa que la validación se para en la primera fila rechazada. Al definir el valor en FALSE, se especifica que la validación no se para en la primera fila rechazada y se validan todas las filas hasta el valor especificado para el parámetro rowcount.

DBMS_CLOUD para la gestión masiva de archivos

Subprogramas para operaciones de archivos masivos en el paquete DBMS_CLOUD.

Subprograma Descripción
BULK_COPY Procedimiento

Este procedimiento copia archivos de un cubo de Cloud Object Storage a otro.

BULK_DELETE Procedimiento

El procedimiento suprime archivos del cubo o la carpeta de Cloud Object Storage.

BULK_DOWNLOAD Procedimiento

Este procedimiento descarga archivos del cubo del almacén de objetos en la nube en un directorio de Autonomous Database.

BULK_MOVE Procedimiento

Este procedimiento mueve archivos de un cubo de Cloud Object Storage a otro.

BULK_UPLOAD Procedimiento

Este procedimiento carga archivos de un directorio de Autonomous Database en Cloud Object Storage.

BULK_COPY Procedimiento

Este procedimiento copia de forma masiva archivos de un cubo de Cloud Object Storage a otro. El formulario sobrecargado permite utilizar el parámetro operation_id.

Puede filtrar la lista de archivos que se suprimirán mediante un patrón de expresión regular compatible con el operador REGEXP_LIKE.

La carpeta o el bloque de origen y de destino pueden estar en el mismo proveedor de almacén de objetos en la nube o en otro diferente.

Cuando el origen y el destino están en almacenes de objetos distintos o tienen cuentas diferentes con el mismo proveedor de nube, puede proporcionar nombres de credenciales independientes para las ubicaciones de origen y destino.

El nombre de credencial de origen también se utiliza por defecto en la ubicación de destino.

Sintaxis

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
);

Parámetros

Parámetro Descripción

source_credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor source_credential_name, credential_name se define en NULL.

source_location_uri

Especifica el URI que apunta al cubo o la ubicación de la carpeta de Object Storage de origen.

Este parámetro es obligatorio.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Ejemplo de uso de expresiones regulares:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Ejemplo de uso de comodines:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

target_location_uri

Especifica el URI del cubo o la carpeta de Object Storage de destino, donde se deben copiar los archivos.

Este parámetro es obligatorio.

Especifica el URI que apunta al cubo o la ubicación de la carpeta de Object Storage de origen.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

target_credential_name

Nombre de la credencial para acceder a la ubicación de Cloud Object Storage de destino.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor target_credential_name, target_location_uri se define en el valor source_credential_name.

regex_filter

Especifica la expresión REGEX para filtrar archivos. El patrón de expresión REGEX debe ser compatible con el operador REGEXP_LIKE.

Si no proporciona un valor regex_filter, regex_filter se define en NULL.

Consulte Condición REGEXP_LIKE para obtener más información.

format

Especifica las opciones de configuración adicionales para la operación de archivo. Estas opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:
  • logretention: acepta un valor entero que determina la duración en días para la que se retiene la tabla de estado para una operación masiva.

    El valor por defecto es 2 días.

  • logprefix: acepta un valor de cadena que determina la cadena de prefijo de nombre de tabla de estado de operación masiva.

    El tipo de operación es el valor por defecto. Para BULK_COPY, el valor logprefix por defecto es COPYOBJ.

  • priority: acepta un valor de cadena que determina el número de operaciones de archivo realizadas simultáneamente.

    Una operación con una prioridad más alta consume más recursos de base de datos y se debe ejecutar más rápido.

    Acepta los siguientes valores:

    • HIGH: determina el número de archivos paralelos manejados mediante el recuento de ECPU de la base de datos (recuento de OCPU si la base de datos utiliza OCPU)

    • MEDIUM: determina el número de procesos simultáneos que utilizan el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

    • LOW: procese los archivos en orden serie.

    El valor por defecto es MEDIUM.

    El número máximo de operaciones de archivo simultáneas está limitado a 64.

Si no proporciona un valor format, format se define en NULL.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Notas de uso

  • Se devuelve un error cuando el URI de origen y de destino apuntan al mismo cubo o carpeta de Object Storage.

Ejemplo

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 Procedimiento

Este procedimiento suprime de forma masiva archivos de Cloud Object Storage. El formulario sobrecargado permite utilizar el parámetro operation_id. Puede filtrar la lista de archivos que se suprimirán mediante un patrón de expresión regular compatible con el operador REGEXP_LIKE.

Sintaxis

 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
);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor credential_name, credential_name se define en NULL.

location_uri

Especifica el URI que apunta a una ubicación de Object Storage en la instancia de Autonomous Database.

Este parámetro es obligatorio.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Por ejemplo:

location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

regex_filter

Especifica la expresión REGEX para filtrar archivos. El patrón de expresión REGEX debe ser compatible con el operador REGEXP_LIKE.

Si no proporciona un valor regex_filter, regex_filter se define en NULL.

Consulte Condición REGEXP_LIKE para obtener más información.

format

Especifica las opciones de configuración adicionales para la operación de archivo. Estas opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:
  • logretention: acepta un valor entero que determina la duración en días para la que se retiene la tabla de estado para una operación masiva.

    El valor por defecto es 2 días.

  • logprefix: acepta un valor de cadena que determina la cadena de prefijo de nombre de tabla de estado de operación masiva.

    El tipo de operación es el valor por defecto. Para BULK_DELETE, el valor logprefix por defecto es DELETE.

  • priority: acepta un valor de cadena que determina el número de operaciones de archivo realizadas simultáneamente.

    Una operación con una prioridad más alta consume más recursos de base de datos y se completa antes.

    Acepta los siguientes valores:

    • HIGH: determina el número de archivos paralelos manejados mediante el recuento de ECPU de la base de datos (recuento de OCPU si la base de datos utiliza OCPU).

    • MEDIUM: determina el número de procesos simultáneos que utilizan el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

    • LOW: procese los archivos en orden serie.

    El valor por defecto es MEDIUM.

    El número máximo de operaciones de archivo simultáneas está limitado a 64.

Si no proporciona un valor format, format se define en NULL.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Ejemplo

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 Procedimiento

Este procedimiento descarga archivos en un directorio de Autonomous Database desde Cloud Object Storage. El formulario sobrecargado permite utilizar el parámetro operation_id. Puede filtrar la lista de archivos que se van a descargar mediante un patrón de expresión regular compatible con el operador REGEXP_LIKE.

Sintaxis

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
);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor credential_name, credential_name se define en NULL.

location_uri

Especifica el URI que apunta a una ubicación de Object Storage en la instancia de Autonomous Database.

Este parámetro es obligatorio.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Por ejemplo:

location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

El formato de los URI depende del servicio Cloud Object Storage que utilice, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

directory_name

Nombre del directorio de la instancia de Autonomous Database desde la que desea descargar los archivos.

Este parámetro es obligatorio.

regex_filter

Especifica la expresión REGEX para filtrar archivos. El patrón de expresión REGEX debe ser compatible con el operador REGEXP_LIKE.

Si no proporciona un valor regex_filter, regex_filter se define en NULL.

Consulte Condición REGEXP_LIKE para obtener más información.

format

Especifica las opciones de configuración adicionales para la operación de archivo. Estas opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:
  • logretention: acepta un valor entero que determina la duración en días para la que se retiene la tabla de estado para una operación masiva.

    El valor por defecto es 2 días.

  • logprefix: acepta un valor de cadena que determina la cadena de prefijo de nombre de tabla de estado de operación masiva. Para BULK_DOWNLOAD, el valor logprefix por defecto es DOWNLOAD.

    El tipo de operación es el valor por defecto.

  • priority: acepta un valor de cadena que determina el número de operaciones de archivo realizadas simultáneamente.

    Una operación con una prioridad más alta consume más recursos de base de datos y se completa antes.

    Acepta los siguientes valores:

    • HIGH: determina el número de archivos paralelos manejados mediante el recuento de ECPU de la base de datos (recuento de OCPU si la base de datos utiliza OCPU).

    • MEDIUM: determina el número de procesos simultáneos que utilizan el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

    • LOW: procese los archivos en orden serie.

    El valor por defecto es MEDIUM.

    El número máximo de operaciones de archivo simultáneas está limitado a 64.

Si no proporciona un valor format, format se define en NULL.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Ejemplo

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 Procedimiento

Este procedimiento mueve de forma masiva archivos de un cubo o carpeta de Cloud Object Storage a otra. El formulario sobrecargado permite utilizar el parámetro operation_id.

Puede filtrar la lista de archivos que se suprimirán mediante un patrón de expresión regular compatible con el operador REGEXP_LIKE.

La carpeta o el bloque de origen y de destino pueden estar en el mismo proveedor de almacén de objetos en la nube o en otro diferente.

Cuando el origen y el destino están en almacenes de objetos distintos o tienen cuentas diferentes con el mismo proveedor de nube, puede proporcionar nombres de credenciales independientes para las ubicaciones de origen y destino.

El nombre de credencial de origen también lo utiliza por defecto la ubicación de destino cuando no se proporciona el nombre de credencial de destino.

El primer paso para mover archivos es copiarlos en la ubicación de destino y, a continuación, suprimir los archivos de origen, una vez que se hayan copiado correctamente.

El nombre del objeto se cambia en lugar de moverlo si el almacén de objetos permite cambiar el nombre de las operaciones entre las ubicaciones de origen y destino.

Sintaxis

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
);

Parámetros

Parámetro Descripción

source_credential_name

Nombre de la credencial para acceder a Cloud Object Storage de origen.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor source_credential_name, credential_name se define en NULL.

source_location_uri

Especifica el URI que apunta al cubo o la ubicación de la carpeta de Object Storage de origen.

Este parámetro es obligatorio.

URI de archivo de origen en la nube

Puede utilizar comodines y expresiones regulares en los nombres de archivo de los URI de archivo de origen de nube.

Las expresiones regulares solo se pueden utilizar cuando el parámetro regexuri format está definido en TRUE.

Los caracteres "*" y "?" se consideran caracteres comodín cuando el parámetro regexuri se define en FALSE. Cuando el parámetro regexuri se define en TRUE, los caracteres "*" y "?" forman parte del patrón de expresión regular especificado.

Los patrones de expresión regular solo están soportados para el nombre de archivo o la ruta de subcarpeta en los URI y la coincidencia de patrones es idéntica a la realizada por la función REGEXP_LIKE.

Ejemplo de uso de expresiones regulares:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Ejemplo de uso de comodines:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

Consulte Condición REGEXP_LIKE para obtener más información sobre la condición REGEXP_LIKE.

target_location_uri

Especifica el URI del cubo o la carpeta de Object Storage de destino, donde se deben mover los archivos.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos DBMS_CLOUD de URI.

target_credential_name

Nombre de la credencial para acceder a la ubicación de Cloud Object Storage de destino.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor target_credential_name, target_location_uri se define en el valor source_credential_name.

regex_filter

Especifica la expresión REGEX para filtrar archivos. El patrón de expresión REGEX debe ser compatible con el operador REGEXP_LIKE.

Si no proporciona un valor regex_filter, regex_filter se define en NULL.

Consulte Condición REGEXP_LIKE para obtener más información.

format

Especifica las opciones de configuración adicionales para la operación de archivo. Estas opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:
  • logretention: acepta un valor entero que determina la duración en días para la que se retiene la tabla de estado para una operación masiva.

    El valor por defecto es 2 días.

  • logprefix: acepta un valor de cadena que determina la cadena de prefijo de nombre de tabla de estado de operación masiva.

    El tipo de operación es el valor por defecto. Para BULK_MOVE, el valor logprefix por defecto es MOVE.

  • priority: acepta un valor de cadena que determina el número de operaciones de archivo realizadas simultáneamente.

    Una operación con una prioridad más alta consume más recursos de base de datos y se completa antes.

    Acepta los siguientes valores:

    • HIGH: determina el número de archivos paralelos manejados mediante el recuento de ECPU de la base de datos (recuento de OCPU si la base de datos utiliza OCPU).

    • MEDIUM: determina el número de procesos simultáneos que utilizan el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

    • LOW: procese los archivos en orden serie.

    El valor por defecto es MEDIUM.

    El número máximo de operaciones de archivo simultáneas está limitado a 64.

Si no proporciona un valor format, format se define en NULL.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Ejemplo

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;
/
Nota

Se devuelve un error cuando el URI de origen y de destino apuntan al mismo cubo o carpeta de Object Storage.

BULK_UPLOAD Procedimiento

Este procedimiento copia archivos en Cloud Object Storage desde un directorio de Autonomous Database. El formulario sobrecargado permite utilizar el parámetro operation_id.

Sintaxis

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
);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para acceder a Cloud Object Storage.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

Si no proporciona un valor credential_name, credential_name se define en NULL.

location_uri

Especifica el URI, que apunta a una ubicación de Object Storage para cargar archivos.

Este parámetro es obligatorio.

El formato de los URI depende del servicio Cloud Object Storage. Consulte DBMS_CLOUD URI Formats para obtener más información.

directory_name

Nombre del directorio de la instancia de Autonomous Database desde la que se cargan los archivos.

Este parámetro es obligatorio.

Directorio

Puede especificar un directorio y uno o más nombres de archivo o utilizar una lista separada por comas de directorios y nombres de archivo. El formato para especificar un directorio es:'MY_DIR:filename.ext'. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Las expresiones regulares no están soportadas al especificar los nombres de archivo en un directorio. Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter. Por ejemplo:'MY_DIR:*" o 'MY_DIR:test?'

Para especificar varios directorios, utilice una lista separada por comas de directorios: por ejemplo:'MY_DIR1:*, MY_DIR2:test?'

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo:'MY_DIR:''filename.ext'. Especifica que filename empieza por una comilla (').

regex_filter

Especifica la expresión REGEX para filtrar archivos. El patrón de expresión REGEX debe ser compatible con el operador REGEXP_LIKE.

Si no proporciona un valor regex_filter, regex_filter se define en NULL.

Consulte Condición REGEXP_LIKE para obtener más información.

format

Especifica las opciones de configuración adicionales para la operación de archivo. Estas opciones se especifican como una cadena JSON.

Las opciones de formato admitidas son:
  • logretention: acepta un valor entero que determina la duración en días para la que se retiene la tabla de estado para una operación masiva.

    El valor por defecto es 2 días.

  • logprefix: acepta un valor de cadena que determina la cadena de prefijo de nombre de tabla de estado de operación masiva.

    El tipo de operación es el valor por defecto. Para BULK_UPLOAD, el valor logprefix por defecto es UPLOAD.

  • priority: acepta un valor de cadena que determina el número de operaciones de archivo realizadas simultáneamente.

    Una operación con una prioridad más alta consume más recursos de base de datos y se completa antes.

    Acepta los siguientes valores:

    • HIGH: determina el número de archivos paralelos manejados mediante el recuento de ECPU de la base de datos (recuento de OCPU si la base de datos utiliza OCPU).

    • MEDIUM: determina el número de procesos simultáneos que utilizan el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

    • LOW: procese los archivos en orden serie.

    El valor por defecto es MEDIUM.

    El número máximo de operaciones de archivo simultáneas está limitado a 64.

Si no proporciona un valor format, format se define en NULL.

operation_id

Utilice este parámetro para realizar un seguimiento del progreso y del estado final de la operación de carga como el identificador correspondiente en la vista USER_LOAD_OPERATIONS.

Ejemplo

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;
/

API de REST de DBMS_CLOUD

En esta sección se tratan las API de REST DBMS_CLOUD que se proporcionan con Autonomous Database.

API de REST Descripción

Función GET_RESPONSE_HEADERS

Esta función devuelve las cabeceras de respuesta HTTP como datos JSON en un objeto JSON de Autonomous Database.

Función GET_RESPONSE_RAW

Esta función devuelve la respuesta HTTP en formato RAW de Autonomous Database. Esto es útil si se espera que la respuesta HTTP tenga formato binario.

Función GET_RESPONSE_STATUS_CODE

Esta función devuelve el código de estado de respuesta HTTP como un entero en Autonomous Database. El código de estado ayuda a identificar si la solicitud se ha realizado correctamente.

Función GET_RESPONSE_TEXT

Esta función devuelve la respuesta HTTP en formato TEXT (VARCHAR2 o CLOB) en Autonomous Database. Normalmente, la mayoría de las API de REST en la nube devuelven una respuesta JSON en formato de texto. Esta función es útil si espera que la respuesta HTTP esté en formato de texto.

Función GET_API_RESULT_CACHE_SIZE

Esta función devuelve el tamaño de caché de resultados configurado.

SEND_REQUEST Función y procedimiento

Esta función inicia una solicitud HTTP, obtiene la respuesta y finaliza la respuesta en Autonomous Database. Esta función proporciona un flujo de trabajo para enviar una solicitud de API de REST en la nube con argumentos, un código de respuesta de retorno y una carga útil.

SET_API_RESULT_CACHE_SIZE Procedimiento

Este procedimiento define el tamaño máximo de caché para la sesión actual.

DBMS_CLOUD Visión general de la API de REST

Cuando utiliza PL/SQL en la aplicación y necesita llamar a las API de REST en la nube, puede utilizar DBMS_CLOUD.SEND_REQUEST para enviar las solicitudes de API de REST.

Las funciones de la API de REST DBMS_CLOUD le permiten realizar solicitudes HTTP mediante DBMS_CLOUD.SEND_REQUEST y obtener y guardar resultados. Estas funciones proporcionan una API genérica que le permite llamar a cualquier API de REST con los siguientes servicios en la nube soportados:

DBMS_CLOUD Constantes de API de REST

Describe las constantes DBMS_CLOUD para realizar solicitudes HTTP mediante DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD soporta los métodos HTTP GET, PUT, POST, HEAD y DELETE. El método de la API de REST que se utilizará para una solicitud HTTP se suele documentar en la documentación de la API de REST en la nube.

Nombre Tipo Valor
METHOD_DELETE VARCHAR2(6) 'DELETE'
METHOD_GET VARCHAR2(3) 'GET'
METHOD_HEAD VARCHAR2(4) 'HEAD'
METHOD_POST VARCHAR2(4) 'POST'
METHOD_PUT VARCHAR2(3) 'PUT'

DBMS_CLOUD Caché de resultados de la API de REST

Puede guardar los resultados de la API de REST DBMS_CLOUD al definir el parámetro cache en true con DBMS_CLOUD.SEND_REQUEST. La vista SESSION_CLOUD_API_RESULTS describe las columnas que puede utilizar cuando se guardan los resultados de la API de REST.

Por defecto, las llamadas a la API de REST DBMS_CLOUD no guardan los resultados de la sesión. En este caso, utilizará la función DBMS_CLOUD.SEND_REQUEST para devolver resultados.

Al utilizar DBMS_CLOUD.SEND_REQUEST y definir el parámetro cache en TRUE, los resultados se guardan y puede ver los resultados anteriores en la vista SESSION_CLOUD_API_RESULTS. Guardar y consultar resultados históricos de solicitudes de API de REST DBMS_CLOUD puede ayudarle cuando necesite trabajar con los resultados anteriores en sus aplicaciones.

Por ejemplo, para consultar los resultados recientes de la API de REST DBMS_CLOUD, utilice la vista SESSION_CLOUD_API_RESULTS:

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

Al guardar los resultados de la API de REST DBMS_CLOUD con DBMS_CLOUD.SEND_REQUEST, los datos guardados solo están disponibles en la misma sesión (conexión). Después de que la sesión se cierre, los datos guardados ya no estarán disponibles.

Utilice DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE y DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE para ver y definir el tamaño de caché de la API de REST DBMS_CLOUD y para desactivar el almacenamiento en caché.

Parámetro cache_scope de resultados de API de REST DBMS_CLOUD

Al guardar los resultados de la API de REST DBMS_CLOUD con DBMS_CLOUD.SEND_REQUEST, el acceso a los resultados en SESSION_CLOUD_API_RESULTS se proporciona según el valor de cache_scope.

Por defecto, cache_scope es 'PRIVATE' y solo el usuario actual de la sesión puede acceder a los resultados. Si define cache_scope en 'PUBLIC', todos los usuarios de sesión pueden acceder a los resultados. El valor por defecto para cache_scope especifica que cada usuario solo puede ver los resultados de la API de REST DBMS_CLOUD.SEND_REQUEST generados por los procedimientos que llama con los derechos del invocador. Al llamar a DBMS_CLOUD.SEND_REQUEST en una sesión, hay tres posibilidades que determinan si el usuario actual puede ver los resultados en la caché, según el valor cache_scope:

  • Ejecuta directamente DBMS_CLOUD.SEND_REQUEST como una sentencia de nivel superior y la llamada a DBMS_CLOUD.SEND_REQUEST y los resultados de la API de REST se guardan con el mismo nombre de usuario. En este caso, tiene acceso a todos los resultados con el valor por defecto 'PRIVATE', definido para cache_scope.

  • Puede escribir un procedimiento de derechos de invocador de envoltorio y, como usuario actual, la llamada con DBMS_CLOUD.SEND_REQUEST llama al procedimiento y los resultados de la API de REST se guardan con el mismo nombre de usuario. En este caso, y tiene acceso a todos los resultados con el valor por defecto, 'PRIVATE', definido para cache_scope.

  • Escribe el procedimiento de derechos de un definidor de envoltorio y el procedimiento es propiedad de otro usuario. Cuando llama a DBMS_CLOUD.SEND_REQUEST dentro del procedimiento, los resultados se guardan con el nombre de usuario del propietario del procedimiento.

    En este caso, un usuario con derechos de elemento de definición diferente está llamando a DBMS_CLOUD.SEND_REQUEST y los resultados de la API de REST se guardan con el propietario de ese procedimiento de elementos de definición. Para este caso, por defecto, cuando cache_scope es PRIVATE', la sesión del invocador no puede ver los resultados.

    Si el propietario del procedimiento del responsable de la definición desea que los resultados estén disponibles para cualquier usuario de sesión que llame, debe definir cache_scope en 'PUBLIC' en DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD Vista de API de REST SESSION_CLOUD_API_RESULTS

Puede guardar los resultados de la API de REST DBMS_CLOUD al definir el parámetro cache en true con DBMS_CLOUD.SEND_REQUEST. La vista SESSION_CLOUD_API_RESULTS describe las columnas que puede utilizar cuando se guardan los resultados de la API de REST.

La vista SESSION_CLOUD_API_RESULTS es la vista creada si almacena en caché los resultados con DBMS_CLOUD.SEND_REQUEST. Puede consultar los resultados históricos que pertenecen a la sesión de usuario. Cuando finaliza la sesión, los datos de SESSION_CLOUD_API_RESULTS se depuran.

Columna Descripción
URI URL de solicitud de API de REST DBMS_CLOUD
TIMESTAMP Registro de hora de respuesta de la API de REST DBMS_CLOUD
CLOUD_TYPE Tipo de nube de API de REST DBMS_CLOUD, como Oracle Cloud Infrastructure, AMAZON_S3 y AZURE_BLOB
REQUEST_METHOD Método de solicitud de la API de REST DBMS_CLOUD, como GET, PUT, HEAD
REQUEST_HEADERS Cabeceras de solicitud de la API de REST DBMS_CLOUD
REQUEST_BODY_TEXT Cuerpo de solicitud de la API de REST DBMS_CLOUD en CLOB
RESPONSE_STATUS_CODE Código de estado de respuesta de la API de REST DBMS_CLOUD, como 200(OK), 404(Not Found)
RESPONSE_HEADERS Cabeceras de respuesta de la API de REST DBMS_CLOUD
RESPONSE_BODY_TEXT Cuerpo de respuesta de la API de REST DBMS_CLOUD en CLOB
SCOPE

cache_scope definido por DBMS_CLOUD.SEND_REQUEST. Los valores válidos son PUBLIC o PRIVATE.

Función GET_RESPONSE_HEADERS

Esta función devuelve las cabeceras de respuesta HTTP como datos JSON en un objeto JSON.

Sintaxis

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

Parámetros

Parámetro Descripción
resp

Tipo de respuesta HTTP devuelto de DBMS_CLOUD.SEND_REQUEST.

Excepciones

Excepción Error Descripción
invalid_response ORA-20025

Se ha transferido un objeto de tipo de respuesta no válido a DBMS_CLOUD.GET_RESPONSE_HEADERS.

Función GET_RESPONSE_RAW

Esta función devuelve la respuesta HTTP en formato RAW. Esto es útil si se espera que la respuesta HTTP tenga formato binario.

Sintaxis

DBMS_CLOUD.GET_RESPONSE_RAW(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN BLOB;

Parámetros

Parámetro Descripción
resp

Tipo de respuesta HTTP devuelto de DBMS_CLOUD.SEND_REQUEST.

Excepciones

Excepción Error Descripción
invalid_response ORA-20025

Se ha transferido un objeto de tipo de respuesta no válido a DBMS_CLOUD.GET_RESPONSE_RAW.

Función GET_RESPONSE_STATUS_CODE

Esta función devuelve el código de estado de respuesta HTTP como un entero. El código de estado ayuda a identificar si la solicitud se ha realizado correctamente.

Sintaxis

DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN PLS_INTEGER;

Parámetros

Parámetro Descripción
resp

Tipo de respuesta HTTP devuelto de DBMS_CLOUD.SEND_REQUEST.

Excepciones

Excepción Error Descripción
invalid_response ORA-20025

Se ha transferido un objeto de tipo de respuesta no válido a DBMS_CLOUD.GET_RESPONSE_STATUS_CODE.

Función GET_RESPONSE_TEXT

Esta función devuelve la respuesta HTTP en formato TEXT (VARCHAR2 o CLOB). Normalmente, la mayoría de las API de REST en la nube devuelven una respuesta JSON en formato de texto. Esta función es útil si espera que la respuesta HTTP esté en formato de texto.

Sintaxis

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

Parámetros

Parámetro Descripción
resp

Tipo de respuesta HTTP devuelto de DBMS_CLOUD.SEND_REQUEST.

Excepciones

Excepción Error Descripción
invalid_response ORA-20025

Se ha transferido un objeto de tipo de respuesta no válido a DBMS_CLOUD.GET_RESPONSE_TEXT.

Función GET_API_RESULT_CACHE_SIZE

Esta función devuelve el tamaño de caché de resultados configurado. El valor de tamaño de caché solo se aplica a la sesión actual.

Sintaxis

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST Función y procedimiento

Esta función y procedimiento inicia una solicitud HTTP, obtiene la respuesta y finaliza la respuesta. Esta función proporciona un flujo de trabajo para enviar una solicitud de API de REST en la nube con argumentos y la función devuelve un código de respuesta y una carga útil. Si utiliza el procedimiento, puede ver los resultados y los detalles de respuesta de los resultados guardados con la vista SESSION_CLOUD_API_RESULTS.

Sintaxis

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL)
   RETURN DBMS_CLOUD_TYPES.resp;

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL);

Parámetros

Parámetro Descripción

credential_name

Nombre de la credencial para autenticarse con la API nativa en la nube correspondiente.

Puede utilizar 'OCI$RESOURCE_PRINCIPAL' como credential_name cuando la entidad de recurso está activada. Consulte ENABLE_RESOURCE_PRINCIPAL para obtener más información.

uri

URI HTTP para realizar la solicitud.

method

Método de solicitud HTTP: GET, PUT, POST, HEAD, DELETE. Utilice la constante de paquete DBMS_CLOUD para especificar el método.

Consulte DBMS_CLOUD Constantes de API de REST para obtener más información.

headers

Cabeceras de solicitud HTTP para la API nativa en la nube correspondiente en formato JSON. Las cabeceras de autenticación se definen automáticamente y solo transfieren cabeceras personalizadas.

async_request_url

URL de solicitud asíncrona.

Para obtener la URL, seleccione la API de solicitud de la lista de API (consulte https://docs.cloud.oracle.com/en-us/iaas/api/). A continuación, navegue para buscar la API para su solicitud en el panel izquierdo. Por ejemplo, API de servicios de base de datos → Autonomous Database → StopAutonomousDatabase. Esta página muestra el directorio raíz de API (y el punto final base). A continuación, agregue el punto final base con la ruta de acceso relativa obtenida para el enlace WorkRequest de la solicitud de trabajo.

wait_for_states

Los estados de espera son de tipo: DBMS_CLOUD_TYPES.wait_for_states_t. Los siguientes son valores válidos para los estados esperados: 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

Se permiten varios estados para wait_for_states. El valor por defecto para wait_for_states es esperar a cualquiera de los estados esperados: 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

timeout

Especifica el timeout, en segundos, para las solicitudes asíncronas con los parámetros async_request_url y wait_for_states.

El valor por defecto es 0. Esto indica que se debe esperar a que finalice la solicitud sin tiempo de espera.

cache

Si TRUE especifica que la solicitud se debe almacenar en caché en la caché de API de resultados de REST.

El valor por defecto es FALSE, lo que significa que las solicitudes de la API de REST no se almacenan en caché.

cache_scope

Especifica si todos pueden tener acceso a esta caché de resultados de solicitud. Valores válidos: "PRIVATE" y "PUBLIC". El valor por defecto es "PRIVATE".

body

Cuerpo de solicitud HTTP para solicitudes PUT y POST.

Excepciones

Excepción Error Descripción
invalid_req_method ORA-20023

El método de solicitud transferido a DBMS_CLOUD.SEND_REQUEST no es válido.

invalid_req_header ORA-20024

Las cabeceras de solicitud transferidas a DBMS_CLOUD.SEND_REQUEST no tienen un formato JSON válido.

Notas de uso

  • Si utiliza Oracle Cloud Infrastructure, debe utilizar un valor de credencial basado en clave de firma para credential_name. Consulte CREATE_CREDENTIAL Procedure para obtener más información.

  • Los parámetros opcionales async_request_url, wait_for_states y timeout le permiten manejar solicitudes de larga ejecución. Con este formato asíncrono de send_request, la función espera el estado de finalización especificado en wait_for_states antes de volver. Con estos parámetros en la solicitud de envío, transfiere los estados de devolución esperados en el parámetro wait_for_states y utiliza el parámetro async_request_url para especificar una solicitud de trabajo asociada, la solicitud no se devuelve inmediatamente. En su lugar, la solicitud sondea async_request_url hasta que el estado de devolución es uno de los estados esperados o se supera timeout (timeout es opcional). Si no se especifica timeout, la solicitud espera hasta que se produzca un estado encontrado en wait_for_states.

SET_API_RESULT_CACHE_SIZE Procedimiento

Este procedimiento define el tamaño máximo de caché para la sesión actual. El valor de tamaño de caché solo se aplica a la sesión actual.

Sintaxis

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

Parámetros

Parámetro Descripción
cache_size

Defina el tamaño máximo de caché en el valor especificado cache_size. Si el nuevo tamaño máximo de caché es menor que el tamaño de caché actual, los registros anteriores se borran hasta que el número de filas sea igual al tamaño máximo de caché especificado. El valor máximo es 10000.

Si el tamaño de caché se define en 0, el almacenamiento en caché se desactiva en la sesión.

El tamaño de caché por defecto es 10.

Excepciones

Excepción Error Descripción
invalid API result cache size ORA-20032

El valor mínimo es 0 y el valor máximo es 10000. Esta excepción se muestra cuando el valor de entrada es menor que 0 o mayor que 10000.

Ejemplo

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

DBMS_CLOUD Ejemplos de API de REST

Muestra ejemplos que utilizan DBMS_CLOUD.SEND_REQUEST para crear y suprimir un cubo de Oracle Cloud Infrastructure Object Storage y un ejemplo para mostrar todos los compartimentos del arrendamiento.

Nota

En estos ejemplos se muestran las API de solicitud de Oracle Cloud Infrastructure y se requiere que utilice una credencial basada en clave de firma para credential_name. Las credenciales basadas en la clave de firma de Oracle Cloud Infrastructure incluyen los argumentos private_key y fingerprint.

Por ejemplo:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/
Consulte el procedimiento CREATE_CREDENTIAL para obtener información sobre DBMS_CLOUD.CREATE_CREDENTIAL.

Ejemplo de creación de cubo

Muestra un ejemplo con el método DBMS_CLOUD.SEND_REQUEST con HTTP POST para crear un cubo de almacén de objetos denominado bucketname.

Consulte CreateBucket para obtener más información sobre la API de servicio de Oracle Cloud Infrastructure Object Storage para este ejemplo.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/',
            method => DBMS_CLOUD.METHOD_POST,
            body => UTL_RAW.cast_to_raw(
                        JSON_OBJECT('name' value 'bucketname',
                                    'compartmentId' value 'compartment_OCID'))
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Notas:

Ejemplo de supresión de cubo

Muestra un ejemplo con el método DBMS_CLOUD.SEND_REQUEST con HTTP DELETE para suprimir un cubo de almacén de objetos denominado bucketname.

Consulte DeleteBucket para obtener más información sobre la API de servicio de Oracle Cloud Infrastructure Object Storage para este ejemplo.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucketname',
            method => DBMS_CLOUD.METHOD_DELETE
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Notas:

Ejemplo de lista de compartimentos

Muestra un ejemplo con el método DBMS_CLOUD.SEND_REQUEST con HTTP GET para mostrar todos los compartimentos del arrendamiento (compartimento raíz). En este ejemplo se muestra cómo transferir cabeceras de solicitud en DBMS_CLOUD.SEND_REQUEST.

Consulte ListCompartments para obtener más información sobre la API de servicio de Oracle Cloud Infrastructure Identity and Access Management para este ejemplo.

--
-- List compartments
--
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
  root_compartment_ocid VARCHAR2(512) := '&1';
BEGIN
  -- Send request
  dbms_output.put_line('Send Request');
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://identity.region.oraclecloud.com/20160918/compartments?compartmentId=' || root_compartment_ocid,
            method => DBMS_CLOUD.METHOD_GET,
            headers => JSON_OBJECT('opc-request-id' value 'list-compartments')
          );
  dbms_output.put_line('Body: ' || '------------' || CHR(10) || DBMS_CLOUD.get_response_text(resp) || CHR(10));
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_status_code(resp));
  dbms_output.put_line(CHR(10));
END;
/

Donde: region es una región de punto final. Consulte la referencia de API de Identity and Access Management (IAM) en Referencia de API y puntos finales para obtener más información. Por ejemplo, donde region es: uk-london-1.

Ejemplo de solicitud asíncrona

Muestra un ejemplo con el método DBMS_CLOUD.SEND_REQUEST con HTTP POST para realizar la operación de parada de Autonomous Database y esperar el estado. En este ejemplo se muestra cómo utilizar DBMS_CLOUD.SEND_REQUEST con los parámetros async_request_url, wait_for_states y timeout.

--
-- Sent Work Request Autonomous Database Stop Request with Wait for Status
DECLARE
    l_resp DBMS_CLOUD_TYPES.resp;
    l_resp_json JSON_OBJECT_T;
    l_key_shape JSON_OBJECT_T;
    l_body JSON_OBJECT_T;
    status_array DBMS_CLOUD_TYPES.wait_for_states_t;
BEGIN
  status_array := DBMS_CLOUD_TYPES.wait_for_states_t('SUCCEEDED');
  l_body := JSON_OBJECT_T('{}');
  l_body.put('autonomousDatabaseId', 'ocid');
-- Send request
  dbms_output.put_line(l_body.to_clob);
  dbms_output.put_line('Send Request');
  l_resp := DBMS_CLOUD.send_request(
                       credential_name    => 'NATIVE_CRED_OCI',
                       uri                => 'https://database.region.oraclecloud.com/20160918/autonomousDatabases/ocid/actions/stop',
                       method             => DBMS_CLOUD.METHOD_POST,
                       body               => UTL_RAW.cast_to_raw(l_body.to_clob),
                       async_request_url  => 'https://iaas.region.oraclecloud.com/20160918/workRequests',
                       wait_for_states    => status_array,
                       timeout            => 600
                  );
   dbms_output.put_line('resp body: '||DBMS_CLOUD.get_response_text(l_resp));
   dbms_output.put_line('resp headers: '||DBMS_CLOUD.get_response_headers(l_resp).to_clob);
END;
/

Donde: region es una región de punto final. Consulte la referencia de API de Identity and Access Management (IAM) en Referencia de API y puntos finales para obtener más información. Por ejemplo, donde region es: uk-london-1.

ocid es el identificador de recurso de Oracle Cloud Infrastructure. Consulte Identificadores de recursos para obtener más información.



Leyenda de nota al pie

Nota 3: El soporte para llamadas a la API de REST de Azure Cloud está limitado al dominio "blob.windows.net".