API REST et sous-programmes DBMS_CLOUD

Cette section traite des sous-programmes DBMS_CLOUD et des API REST fournis avec Autonomous Database.

Remarque

Pour exécuter un sous-programme DBMS_CLOUD avec un utilisateur autre qu'ADMIN, vous devez accorder les privilèges EXECUTE à cet utilisateur. Par exemple, exécutez la commande suivante en tant qu'utilisateur ADMIN pour accorder les privilèges à adb_user :
GRANT EXECUTE ON DBMS_CLOUD TO adb_user;

Le package DBMS_CLOUD se compose des éléments suivants :

DBMS_CLOUD pour la gestion des accès

Sous-programmes de gestion des informations d'identification dans le package DBMS_CLOUD, ce qui inclut La création, La suppression et La mise à jour des informations d'identification.

Sous-programme Description

Procédure CREATE_CREDENTIAL

Cette procédure stocke les informations d'identification de service cloud dans Autonomous Database.

Procédure DROP_CREDENTIAL

Cette procédure enlève des informations d'identification existantes d'Autonomous Database.

Procédure REFRESH_VAULT_CREDENTIAL

Cette procédure actualise immédiatement la clé secrète de coffre des informations d'identification de clé secrète de coffre afin d'obtenir la dernière version de la clé secrète de coffre pour l'instance credential_name indiquée dans Autonomous Database.

Procédure UPDATE_CREDENTIAL

Cette procédure met à jour les attributs d'informations d'identification de service cloud dans Autonomous Database.

Procédure CREATE_CREDENTIAL

Cette procédure stocke les informations d'identification de service cloud dans Autonomous Database.

Utilisez les informations d'identification de service cloud stockées afin d'accéder au service Cloud pour le chargement des données, l'interrogation des données externes résidant dans le cloud ou d'autres cas lorsque vous utilisez des procédures DBMS_CLOUD avec un paramètre credential_name. Cette procédure est surchargée:

  • Utilisez les paramètres associés à Oracle Cloud Infrastructure, notamment user_ocid, tenancy_ocid, private_key et fingerprint, uniquement lorsque vous utilisez l'authentification à l'aide de clés de signature Oracle Cloud Infrastructure.

  • Utilisez le paramètre params pour l'un des éléments suivants :

    • Informations d'identification des noms de ressource Amazon (ARN)

    • Informations d'identification Google Analytics ou Google BigQuery

    • Informations d'identification de clé secrète de coffre à utiliser avec un coffre pris en charge :

      • Oracle Cloud Infrastructure Vault
      • Coffre de clés Azure
      • AWS Secrets Manager
      • Gestionnaire de clés secrètes GCP

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification à stocker. Le paramètre credential_name doit être conforme aux conventions de dénomination des objets Oracle. Le paramètre credential_name peut être défini en tant qu'identificateur non entre guillemets ou entre guillemets. Pour plus d'informations, reportez-vous à Règles de dénomination des objets de base de données.

username

Les arguments username et password indiquent ensemble vos informations d'identification de service cloud. Consultez les notes d'utilisation afin de connaître les éléments à indiquer pour username et password pour les différents services cloud.

password

Les arguments username et password indiquent ensemble vos informations d'identification de service cloud.

comments

Indique le texte du commentaire pour les informations d'identification. Ce champ peut être utile pour décrire et distinguer les informations d'identification.

La longueur maximale des commentaires est de 3800 caractères.

user_ocid

Spécifie l'OCID de l'utilisateur. Pour plus de détails sur l'obtention de l'OCID de l'utilisateur, reportez-vous à Emplacement de l'OCID de la location et de l'OCID de l'utilisateur.

tenancy_ocid

Indique l'OCID de la location. Pour plus de détails sur l'obtention de l'OCID de la location, reportez-vous à Emplacement de l'OCID de la location et de l'OCID de l'utilisateur.

private_key

Indique la clé privée générée. Les clés privées générées avec une phrase de passe ne sont pas prises en charge. Vous devez générer la clé privée sans phrase de passe. Pour plus d'informations sur la génération d'une paire de clés au format PEM, reportez-vous à Procédure de génération d'une clé de signature d'API.

fingerprint

Spécifie une empreinte. Une fois qu'une clé publique générée est téléchargée vers le compte de l'utilisateur, l'empreinte est affichée dans la console. Utilisez l'empreinte affichée pour cet argument. Pour plus d'informations, reportez-vous à Procédure d'obtention de l'empreinte de la clé et à Procédure de génération d'une clé de signature d'API.

params

Spécifie les paramètres d'informations d'identification pour l'un des éléments suivants :

  • Informations d'identification des noms de ressource Amazon (ARN)

  • Informations d'identification Google Analytics ou Google BigQuery

  • Informations d'identification de clé secrète de coffre à utiliser avec les informations d'identification de type nom utilisateur/mot de passe dans lesquelles vous stockez le mot de passe dans un coffre pris en charge :

    • Oracle Cloud Infrastructure Vault

    • Coffre de clés Azure

    • AWS Secrets Manager

    • Gestionnaire de clés secrètes GCP

    Pour créer des informations d'identification de clé secrète de coffre, vous devez disposer du privilège EXECUTE sur le package DBMS_CLOUD.

Notes d'utilisation

  • Cette opération stocke les informations d'identification dans la base de données dans un format crypté.

  • Vous pouvez consulter les informations d'identification dans votre schéma en interrogeant la table user_credentials.

  • Vous pouvez consulter les commentaires d'informations d'identification dans votre schéma en interrogeant la table user_credentials. Par exemple :

    SELECT comments FROM user_credentials
            WHERE credential_name = 'MY_CRED';
  • L'utilisateur ADMIN peut consulter toutes les informations d'identification en interrogeant la table dba_credentials.

  • Vous ne devez créer les informations d'identification qu'une seule fois, sauf si vos informations d'identification de service cloud changent. Une fois les informations d'identification stockées, vous pouvez utiliser le même nom d'informations d'identification pour les procédures DBMS_CLOUD qui nécessitent un paramètre credential_name.

  • Cette procédure est surchargée. Si vous fournissez l'un des attributs d'authentification basée sur une clé (user_ocid, tenancy_ocid, private_key ou fingerprint), l'appel est considéré comme des informations d'identification basées sur une clé de signature Oracle Cloud Infrastructure.

  • Vous pouvez répertorier les informations d'identification à partir de la vue ALL_CREDENTIALS. Par exemple, exécutez la commande suivante pour répertorier les informations d'identification :

    SELECT credential_name, username, comments FROM all_credentials;

Informations d'identification Oracle Cloud Infrastructure (jetons d'authentification)

Pour Oracle Cloud Infrastructure, username est votre nom utilisateur Oracle Cloud Infrastructure. password est votre jeton d'authentification Oracle Cloud Infrastructure. Reportez-vous à Utilisation des jetons d'authentification.

Par exemple :

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

Utilisez des informations d'identification basées sur un jeton d'authentification lorsque vous authentifiez des appels vers OCI Object Storage. Pour les appels vers tout autre type de service cloud Oracle Cloud Infrastructure, utilisez les informations d'identification basées sur une clé de signature Oracle Cloud Infrastructure.

Pour OCI Object Storage, la valeur de paramètre username doit inclure le domaine d'identité et le nom utilisateur de votre profil. Vous pouvez trouver le domaine d'identité associé à un utilisateur dans la console Oracle Cloud Infrastructure.

Par exemple :

oracleidentitycloudservice/adb_user@example.com

Avec le domaine d'identité par défaut, vous n'êtes pas tenu d'inclure le nom de domaine Default. Par exemple :

adb_user@example.com

Informations d'identification basées sur la clé de signature Oracle Cloud Infrastructure

Utilisez les paramètres associés à la clé de signature Oracle Cloud Infrastructure, notamment user_ocid, tenancy_ocid, private_key et fingerprint, avec l'authentification à l'aide de clés de signature Oracle Cloud Infrastructure.

Par exemple :

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

Les clés privées générées avec une phrase de passe ne sont pas prises en charge. Vous devez générer la clé privée sans phrase de passe. Pour plus d'informations, reportez-vous à Procédure de génération d'une clé de signature d'API.

Informations d'identification Oracle Cloud Infrastructure Object Storage Classic

Si vos fichiers source résident dans Oracle Cloud Infrastructure Object Storage Classic, username est votre nom utilisateur Oracle Cloud Infrastructure Classic et password est votre mot de passe Oracle Cloud Infrastructure Classic.

Informations d'identification Amazon Web Services (AWS)

Si vos fichiers source résident dans Amazon S3 ou que vous appelez une API AWS, username est votre ID de clé d'accès AWS et password est votre clé d'accès secrète AWS. Reportez-vous à AWS Identity and Access Management.

Informations d'identification Microsoft Azure

Si vos fichiers source résident dans Azure Blob Storage ou Azure Data Lake Storage ou que vous appelez une API Azure, username est le nom de votre compte de stockage Azure et password est la clé d'accès d'un compte de stockage Azure. Reportez-vous à A propos des comptes de stockage Azure.

Informations d'identification compatibles avec Amazon S3

Service Précisions sur les informations d'identification

Oracle Cloud Infrastructure (clés secrètes client)

Si les fichiers source résident dans Oracle Cloud Infrastructure, vous devez utiliser des clés secrètes client avec des URL compatibles S3. Pour plus d'informations, reportez-vous à Utilisation des clés secrètes client.

Google Cloud Storage

Si les fichiers source résident dans Google Cloud Storage ou que vous appelez des API Google Cloud Storage, vous devez définir un projet Google par défaut et obtenir une clé HMAC pour créer des informations d'identification à accompagner d'URL Google Cloud Storage compatibles S3. Utilisez l'ID de clé HMAC comme nom utilisateur et la clé secrète HMAC comme mot de passe.

Pour plus d'informations, reportez-vous à Projets et à Clés HMAC.

Wasabi Hot Cloud Storage

Si les fichiers source résident dans Wasabi Hot Cloud Storage ou que vous appelez des API Wasabi Hot Cloud Storage, vous avez besoin de clés d'accès pour créer des informations d'identification à accompagner d'URL compatibles S3. Utilisez la clé d'accès Wasabi Hot Cloud Storage comme nom utilisateur et la clé secrète Wasabi Hot Cloud Storage comme mot de passe.

Pour plus d'informations, reportez-vous à Création d'un ensemble de clés d'accès à l'API Wasabi.

Informations d'identification des noms de ressource AWS Amazon

Si vos fichiers source résident dans Amazon S3 ou que vous appelez une API AWS, utilisez params pour spécifier les paramètres pour les noms de ressource Amazon (ARN).

Paramètre Valeur
aws_role_arn

Spécifie le nom de ressource Amazon (ARN) qui identifie le rôle AWS.

Si ce paramètre n'est pas fourni lors de la création des informations d'identification, ORA-20041 est appelé.

external_id_type

Définissez éventuellement external_id_type pour utiliser l'OCID de compartiment Autonomous Database, l'OCID de base de données ou l'OCID de location en fournissant l'un des éléments suivants : compartment_ocid, database_ocid ou tenant_ocid.

Si ce paramètre n'est pas indiqué lors de la création des informations d'identification, la valeur par défaut est database_ocid.

Par exemple :

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

Jeton d'accès personnel GitHub

Si vos fichiers source résident dans un référentiel GitHub ou que vous appelez une API GitHub, username est votre adresse électronique GitHub et password est votre jeton d'accès personnel GitHub. Pour plus d'informations, reportez-vous à Création d'un jeton d'accès personnel.

Par exemple :

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

Informations d'identification Google Analytics ou Google BigQuery

Si vous accédez à Google Analytics ou Google BigQuery, utilisez le paramètre params pour indiquer les paramètres d'informations d'identification Google OAuth 2.0.

Paramètre Valeur
gcp_oauth2

Indique l'accès OAuth 2.0 pour Google Analytics ou Google BigQuery avec un objet JSON qui inclut les paramètres suivants et leurs valeurs :

  • client_id : reportez-vous à la console Google API pour obtenir l'ID client.

  • client_secret : reportez-vous à la console Google API pour obtenir la clé secrète client.

  • refresh_token : un jeton d'actualisation permet à votre application d'obtenir de nouveaux jetons d'accès.

Pour plus d'informations sur les informations d'identification Google OAuth, reportez-vous à Utilisation de OAuth 2.0 pour accéder aux API Google.

Par exemple :

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

Informations d'identification de clé secrète de Vault avec Oracle Cloud Infrastructure Vault

Pour créer des informations d'identification de clé secrète de coffre avec Oracle Cloud Infrastructure Vault, utilisez le paramètre params afin d'indiquer les paramètres requis :

  • username : indique le nom utilisateur de tout type d'informations d'identification de nom utilisateur/mot de passe, tel que le nom utilisateur du mot de passe OCI Swift. Par exemple, si vous disposez d'informations d'identification Swift avec le nom utilisateur "scott" et le mot de passe "mot de passe", indiquez "scott" comme paramètre username.

  • secret_id : ID de clé secrète du coffre. Indiquez la valeur secret_id en tant qu'OCID de clé secrète de coffre. Pour plus d'informations, reportez-vous àPrésentation de Vault.

  • region : paramètre facultatif qui indique l'identificateur de région oracle cloud. Lorsqu'elle est indiquée, la région indique l'emplacement où se trouve la clé secrète Oracle Cloud Infrastructure Vault.

    Par défaut, CREATE_CREDENTIAL utilise la valeur region mise en correspondance à partir de la clé de région dans secret_id. Par exemple, us-ashburn-1 est une région.

    Pour une liste complète des régions, reportez-vous à Régions et domaines de disponible.

Par exemple :

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

Remarques concernant l'utilisation d'une clé secrète Oracle Cloud Infrastructure Vault pour stocker les clés secrètes de coffre :

  • Lorsque vous utilisez Oracle Cloud Infrastructure Vault, sur l'instance Autonomous Database, vous devez activer l'authentification de principal avec DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL.
  • Sur Oracle Cloud Infrastructure, vous devez indiquer une stratégie permettant au principal de ressource d'accéder à la clé secrète.

Pour créer des informations d'identification de clé secrète de coffre, vous devez disposer du privilège EXECUTE sur le package DBMS_CLOUD.

Informations d'identification de clé secrète de coffre avec Azure Key Vault

Pour créer des informations d'identification Azure Key Vault, utilisez le paramètre params afin d'indiquer les paramètres requis :

  • username : indique le nom utilisateur associé à la clé.

  • secret_id : indique le nom de la clé secrète.

  • azure_vault_name : indique le nom du coffre dans lequel se trouve la clé secrète.

Pour plus d'informations, reportez-vous à Création d'un coffre de clés.

Pour créer des informations d'identification de clé secrète de coffre, vous devez disposer du privilège EXECUTE sur le package DBMS_CLOUD.

Informations d'identification de clé secrète de coffre avec AWS Secrets Manager

Pour créer des informations d'identification de clé secrète de coffre avec AWS Secrets Manager, utilisez le paramètre params pour indiquer les paramètres requis :

  • username : spécifie la clé d'accès AWS Secrets Manager.

  • secret_id : AWS Secrets Manager AWS ARN.

  • region : (facultatif) indique la région de service AWS dans laquelle se trouvent le coffre et la clé secrète. Un exemple de la région AWS est "us-east-2". La valeur par défaut region est la région indiquée avec le numéro ARN dans le paramètre secret_id.

    Pour plus d'informations, reportez-vous à Gestion des régions AWS.

    Pour créer des informations d'identification de clé secrète de coffre, vous devez disposer du privilège EXECUTE sur le package DBMS_CLOUD.

Informations d'identification de clé secrète de coffre avec le gestionnaire de clés secrètes GCP

Pour créer les informations d'identification du gestionnaire de clés secrètes GCP, utilisez le paramètre params pour indiquer les paramètres requis :

  • username : indique le nom utilisateur associé à la clé secrète.

  • secret_id : nom de la clé secrète.

  • gcp_project_id : indique l'ID du projet où se trouve la clé secrète.

Pour plus d'informations, reportez-vous à Gestionnaire de clé secrète.

Pour créer des informations d'identification de clé secrète de coffre, vous devez disposer du privilège EXECUTE sur le package DBMS_CLOUD.

Procédure DROP_CREDENTIAL

Cette procédure enlève des informations d'identification existantes d'Autonomous Database.

Syntaxe

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification à enlever.

Procédure REFRESH_VAULT_CREDENTIAL

Cette procédure actualise la clé secrète de coffre des informations d'identification de clé secrète de coffre.

Cette procédure vous permet d'actualiser immédiatement la clé secrète de coffre d'informations d'identification de clé secrète de coffre afin d'obtenir la dernière version de la clé secrète de coffre pour le fichier credential_name indiqué.

Syntaxe

DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL (
    credential_name   IN VARCHAR2);

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification à actualiser.

Notes d'utilisation

  • L'utilisateur ADMIN peut consulter toutes les informations d'identification en interrogeant la table dba_credentials.

  • Vous pouvez répertorier les informations d'identification à partir de la vue ALL_CREDENTIALS. Par exemple, exécutez la commande suivante pour répertorier les informations d'identification :

    SELECT credential_name, username, comments FROM all_credentials;

Exemple

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

Procédure UPDATE_CREDENTIAL

Cette procédure permet de mettre à niveau un attribut avec une nouvelle valeur pour un élément credential_name spécifié.

Utilisez les informations d'identification stockées pour le chargement des données, l'interrogation des données externes résidant dans le cloud ou quand vous utilisez des procédures DBMS_CLOUD avec un paramètre credential_name.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification à mettre à jour.

attribute

Nom de l'attribut à mettre à jour.

Pour les informations d'identification de type nom utilisateur/mot de passe, les valeurs attribute valides sont : USERNAME et PASSWORD.

Pour les informations d'identification d'un ARN Amazon, les valeurs attribute valides sont : aws_role_arn et external_id_type.

Pour les informations d'identification de Google BigQuery ou Google Analytics, les valeurs attribute valides sont : client_id, client_secret et refresh_token.

Selon le coffre que vous utilisez, pour les informations d'identification de clé secrète de coffre, les valeurs attribute valides sont les suivantes :
  • Oracle Cloud Infrastructure Vault : secret_id, region

  • Azure Key Vault : secret_id, azure_vault_name

  • AWS Secrets Manager : secret_id, region

  • Gestionnaire de clés secrètes GCP : secret_id, gcp_project_id

Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

value

Nouvelle valeur pour l'attribut spécifié.

Notes d'utilisation

  • La valeur du nom utilisateur est sensible à la casse. Il ne peut contenir ni guillemets ni espaces.

  • L'utilisateur ADMIN peut consulter toutes les informations d'identification en interrogeant dba_credentials.

  • Vous ne devez créer les informations d'identification qu'une seule fois, sauf si vos informations d'identification de service cloud changent. Une fois les informations d'identification stockées, vous pouvez utiliser le même nom d'informations d'identification pour les procédures DBMS_CLOUD qui nécessitent un paramètre credential_name.

  • Vous pouvez répertorier les informations d'identification à partir de la vue ALL_CREDENTIALS. Par exemple, exécutez la commande suivante pour répertorier les informations d'identification :

    SELECT credential_name, username, comments FROM all_credentials;

Exemples

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 pour les objets et les fichiers

Sous-programmes de gestion des objets et des fichiers dans le package DBMS_CLOUD.

Sous-programme Description

Procédure COPY_COLLECTION

Cette procédure charge les données dans une collection SODA existante à partir du stockage d'objets cloud ou à partir de fichiers d'un répertoire.

Procédure COPY_DATA

Cette procédure charge les données dans les tables Autonomous Database existantes à partir de Cloud Object Storage ou de fichiers d'un répertoire.

COPY_DATA Procédure pour les fichiers Avro, ORC ou Parquet

Cette procédure, avec le paramètre format type défini sur la valeur orc, parquet ou avro, charge les données dans les tables Autonomous Database existantes à partir de fichiers ORC, Parquet ou Avro dans le cloud ou à partir de fichiers ORC, Parquet ou Avro dans un répertoire.

Comme pour les fichiers texte, les données sont copiées à partir du fichier ORC, Parquet ou Avro source dans la table interne préexistante.

Procédure COPY_OBJECT

Cette procédure copie les fichiers d'un bucket Cloud Object Storage vers un autre.

Procédure CREATE_EXTERNAL_TABLE

Cette procédure crée une table externe sur les fichiers dans le cloud ou sur les fichiers dans un répertoire. Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.
Procédure CREATE_CLOUD_TABLE

Cette procédure crée une table cloud dans laquelle toutes les données persistantes sont stockées dans Oracle-Managed Object Storage.

Procédure CREATE_EXTERNAL_TABLE pour Apache Iceberg

Cette procédure crée des tables externes pour les tables Apache Iceberg dans les configurations prises en charge.

CREATE_EXTERNAL_TABLE Procédure pour les fichiers Avro, ORC ou Parquet

Cette procédure, avec le paramètre format type défini sur la valeur parquet, orc ou avro, crée une table externe avec des fichiers au format Parquet, ORC ou Avro dans le cloud ou dans un répertoire.

Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.

Procédure CREATE_EXTERNAL_PART_TABLE

Cette procédure crée une table externe partitionnée sur les fichiers dans le cloud. Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.

Procédure CREATE_EXTERNAL_TEXT_INDEX

Cette procédure crée un index de texte sur les fichiers de la banque d'objets.

Procédure CREATE_HYBRID_PART_TABLE

Cette procédure crée une table partitionnée hybride. Vous pouvez ainsi exécuter des requêtes sur des données partitionnées hybrides à partir d'Autonomous Database.

Procédure DELETE_ALL_OPERATIONS

Cette procédure efface toutes les opérations de chargement de données consignées dans la table user_load_operations de votre schéma, ou toutes les opérations de chargement de données du type spécifié, comme indiqué dans le paramètre type.

Procédure DELETE_FILE

Cette procédure enlève le fichier spécifié du répertoire indiqué sur Autonomous Database

Procédure DELETE_OBJECT

Cette procédure supprime l'objet spécifié de la banque d'objets.

Procédure DELETE_OPERATION

Cette procédure accepte une entrée operation_id et supprime les journaux associés à l'entrée operation_id indiquée.

Procédure DROP_EXTERNAL_TEXT_INDEX

Cette procédure supprime l'index de texte dans les fichiers de la banque d'objets.

Procédure EXPORT_DATA

Cette procédure exporte les données d'Autonomous Database vers des fichiers dans le cloud en fonction du résultat d'une requête. La forme surchargée permet d'utiliser le paramètre operation_id. En fonction de l'option type du paramètre format indiquée, la procédure exporte les lignes vers la banque d'objets cloud sous forme de texte avec les options CSV, JSON, Parquet ou XML, ou en utilisant le pilote d'accès ORACLE_DATAPUMP pour écrire des données dans un fichier dump.

GET_OBJECT Procédure et fonction

Cette procédure est surchargée. Ce formulaire de procédure lit un objet à partir du stockage d'objet cloud et la copie vers Autonomous Database. Le formulaire de fonction lit un objet à partir de Cloud Object Storage et renvoie une valeur BLOB vers Autonomous Database.

Fonction LIST_FILES

Cette fonction liste les fichiers présents dans le répertoire spécifié. Les résultats incluent les noms de fichier et les métadonnées supplémentaires sur les fichiers, telles que la taille de fichier en octets, l'horodatage de création et l'horodatage de dernière modification.

Fonction LIST_OBJECTS

Cette fonction répertorie les objets présents à l'emplacement spécifié dans la banque d'objets. Les résultats incluent les noms d'objet et les métadonnées supplémentaires sur les objets, telles que la taille, le checksum, l'horodatage de création et l'horodatage de dernière modification.

Procédure MOVE_OBJECT

Cette procédure déplace un objet d'un bucket Cloud Object Storage vers un autre.

Procédure PUT_OBJECT

Cette procédure est surchargée. Dans un formulaire, la procédure copie un fichier d'Autonomous Database vers le stockage d'objet cloud. Sous une autre forme, la procédure copie une instance BLOB d'Autonomous Database vers Cloud Object Storage.

Procédure SYNC_EXTERNAL_PART_TABLE

Cette procédure simplifie la mise à jour d'une table partitionnée externe à partir de fichiers dans le cloud. Exécutez cette procédure chaque fois que de nouvelles partitions sont ajoutées ou lorsque des partitions sont supprimées de la source de la banque d'objets pour la table partitionnée externe.

Procédure VALIDATE_EXTERNAL_TABLE

Cette procédure valide les fichiers source pour une table externe, génère des informations sur le journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table externe dans une table badfile sur Autonomous Database.

Procédure VALIDATE_EXTERNAL_PART_TABLE

Cette procédure valide les fichiers source pour une table externe partitionnée, génère les informations de journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table externe dans une table badfile sur Autonomous Database.

Procédure VALIDATE_HYBRID_PART_TABLE

Cette procédure valide les fichiers source pour la table partitionnée hybride, génère les informations de journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table hybride dans une table badfile sur Autonomous Database.

Procédure COPY_COLLECTION

Cette procédure charge les données dans une collection SODA à partir du stockage d'objet cloud ou d'un répertoire. Si la collection SODA spécifiée n'existe pas, la procédure la crée. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

collection_name

Nom de la collection SODA dans laquelle les données sont chargées. Si une collection portant ce nom existe déjà, les données spécifiées sont chargées, sinon, la collection est créée.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Ce paramètre n'est pas utilisé lorsque vous indiquez un répertoire avec file_uri_list.

file_uri_list

Ce paramètre spécifie une liste d'URI de fichier source séparés par des virgules ou un ou plusieurs répertoires et fichiers source.

URI de fichier source cloud

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Par exemple :

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'

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour en savoir plus, reportez-vous àFormats d'URI DBMS_CLOUD.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

Répertoire

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour spécifier un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme générique pour plusieurs caractères et le caractère " ?" peut être utilisé comme générique pour un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple :'MY_DIR:''filename.ext'. Cela indique que filename commence par un guillemet (').

format

Options décrivant le format des fichiers source. Ces options sont indiquées sous forme de chaîne JSON.

Formats pris en charge : characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays, keyassignment et keypath.

Outre les formats mentionnés pour les données JSON, Autonomous Database prend également en charge d'autres formats. Pour obtenir la liste des arguments de format pris en charge par Autonomous Database, reportez-vous à Options de format de package DBMS_CLOUD.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Exemple

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

Procédure COPY_DATA

Cette procédure charge les données dans les tables Autonomous Database existantes à partir de fichiers dans le cloud ou de fichiers d'un répertoire. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table cible dans la base de données. Vous devez avoir créé la table cible avant d'exécuter COPY_DATA.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Ce paramètre n'est pas utilisé lorsque vous indiquez un répertoire ou une URL de lien hypertexte de table avec file_uri_list.

file_uri_list

Ce paramètre spécifie l'une des valeurs suivantes :

  • Liste des URI de fichier source séparés par des virgules

  • Liste d'URL de lien hypertexte de table séparées par des virgules

  • Un ou plusieurs répertoires et fichiers source

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

URI de fichier source cloud

Ce paramètre spécifie une liste d'URI de fichier source séparés par des virgules ou un ou plusieurs répertoires et fichiers source.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Par exemple :

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'

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour en savoir plus, reportez-vous àFormats d'URI DBMS_CLOUD.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

URL du lien hypertexte de table

Vous pouvez utiliser un lien hypertexte de table comme suit :
  • Indiquez une URL de lien hypertexte de table unique.

    Par exemple :
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Indiquez une liste d'URL de lien hypertexte de table séparées par des virgules. Vous devez vous assurer que tous les liens hypertexte de table inclus ont les mêmes noms de colonne, ordre des colonnes et types de données de colonne.

    Par exemple :
    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'
    
Pour plus d'informations, reportez-vous à A propos des liens hypertexte de table sur Autonomous Database et à Procédure CREATE_URL.

Répertoire

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour spécifier un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme un caractère générique pour plusieurs caractères et le caractère " ?" peut être utilisé comme un caractère générique pour un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple :'MY_DIR:''filename.ext'. Cela indique que filename commence par un guillemet (').

schema_name

Nom du schéma dans lequel réside la table cible. La valeur par défaut est NULL, ce qui signifie que la table cible se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

field_list

Identifie les champs dans les fichiers source et leurs types de données. La valeur par défaut est NULL, ce qui signifie que les champs et leurs types de données sont déterminés par la définition de table cible. La syntaxe de cet argument est identique à la clause field_list dans les tables externes Oracle standard. Pour plus d'informations sur field_list, reportez-vous à Utilitaires Oracle® Database.

Lorsque la valeur de l'option type du paramètre format est json, ce paramètre est ignoré.

Pour obtenir un exemple d'utilisation de field_list, reportez-vous à Procédure CREATE_EXTERNAL_TABLE.

format

Options décrivant le format des fichiers source, des fichiers journaux et des fichiers incorrects. Pour connaître la liste des options et découvrir comment spécifier les valeurs, reportez-vous à DBMS_CLOUD Package Format Options.

Pour connaître les options de format de fichier Avro, ORC ou Parquet, reportez-vous à DBMS_CLOUD Options de format de package pour Avro, ORC ou Parquet.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Remarque sur l'utilisation

Le délimiteur d'enregistrement par défaut est detected newline. Avec detected newline, DBMS_CLOUD tente de trouver automatiquement le caractère de nouvelle ligne correct à utiliser comme délimiteur d'enregistrement. DBMS_CLOUD recherche d'abord le caractère de retour à la ligne Windows \r\n. S'il trouve le caractère à la ligne Windows, celui-ci est utilisé comme délimiteur d'enregistrement pour tous les fichiers de la procédure. 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 les fichiers source utilisent une combinaison de différents délimiteurs d'enregistrement, vous risquez de rencontrer une erreur telle que "KUP-04020: found record longer than buffer size supported". Dans ce cas, vous devez soit modifier les fichiers source pour utiliser le même délimiteur d'enregistrement, soit spécifier uniquement les fichiers source qui utilisent le même délimiteur d'enregistrement.

Reportez-vous à la section DBMS_CLOUD Package Format Options pour plus d'informations sur l'option de format recorddelmiter.

Exemples

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 Procédure pour les fichiers Avro, ORC ou Parquet

Cette procédure, avec le paramètre format type défini sur la valeur avro, orc ou parquet, charge les données dans les tables Autonomous Database existantes à partir des fichiers Avro, ORC ou Parquet dans le cloud ou à partir des fichiers d'un répertoire.

Comme pour les fichiers texte, les données sont copiées à partir du fichier Avro, ORC ou Parquet source dans la table interne préexistante.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table cible dans la base de données. Vous devez avoir créé la table cible avant d'exécuter COPY_DATA.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Ce paramètre n'est pas utilisé lorsque vous indiquez un répertoire avec file_uri_list.

file_uri_list

Ce paramètre spécifie une liste d'URI de fichier source séparés par des virgules ou un ou plusieurs répertoires et fichiers source.

URI de fichier source cloud

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Par exemple :

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'

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous à la page Formats d'URI DBMS_CLOUD.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

Répertoire

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour spécifier un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme générique pour plusieurs caractères, et le caractère " ?" peut être utilisé comme générique pour un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple :'MY_DIR:''filename.ext'. Cela indique que filename commence par un guillemet (').

schema_name

Nom du schéma dans lequel réside la table cible. La valeur par défaut est NULL, ce qui signifie que la table cible se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

field_list

Ignoré pour les fichiers Avro, ORC ou Parquet.

Les champs de la source correspondent aux colonnes de la table externe par nom. Les types de données source sont convertis en types de données de colonne de table externe.

Pour les fichiers ORC, reportez-vous à Mise en correspondance de types de données ORC avec des types de données Oracle avec DBMS_CLOUD.

Pour les fichiers Parquet, reportez-vous à la section DBMS_CLOUD Package Parquet to Oracle Data Type Mapping pour plus d'informations sur le mapping.

Pour les fichiers Avro, reportez-vous à la section DBMS_CLOUD Package Avro to Oracle Data Type Mapping pour plus de détails sur le mappage.

format

Options décrivant le format des fichiers source. Pour les fichiers Avro, ORC ou Parquet, seules deux options sont prises en charge : reportez-vous à DBMS_CLOUD Options de format de package pour Avro, ORC ou Parquet.

Notes d'utilisation

  • Comme pour les autres fichiers de données, les chargements de données Avro, ORC et Parquet génèrent des journaux visibles dans les tables dba_load_operations et user_load_operations. Chaque opération de chargement ajoute un enregistrement à dba[user]_load_operations qui indique la table contenant les journaux.

    La table de journalisation fournit des informations récapitulatives sur le chargement.

  • Pour Avro, ORC ou Parquet, lorsque le paramètre format type est défini sur la valeur avro, orc ou parquet, la table BADFILE_TABLE est toujours vide.

    • Pour les fichiers Parquet, les erreurs de contrainte PRIMARY KEY génèrent une erreur ORA.

    • Si les données d'une colonne rencontrent une erreur de conversion, par exemple, si la colonne cible n'est pas suffisamment grande pour contenir la valeur convertie, la valeur de la colonne est définie sur NULL. Cela ne génère pas d'enregistrement rejeté.

Procédure COPY_OBJECT

Cette procédure copie un objet d'un bucket ou dossier Cloud Object Storage vers un autre.

Le dossier ou le bucket source et cible peuvent se trouver dans le même fournisseur de banque d'objets cloud ou dans un autre fournisseur.

Lorsque la source et la cible se trouvent dans des banques d'objets distinctes ou ont des comptes différents avec le même fournisseur cloud, vous pouvez donner des noms d'informations d'identification distincts pour les emplacements source et cible.

Par défaut, le nom des informations d'identification source est également utilisé par l'emplacement cible lorsque le nom des informations d'identification cible n'est pas fourni.

Syntaxe

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

Paramètres

Paramètre Description

source_credential_name

Nom des infos d'identification permettant d'accéder au stockage d'objet cloud source.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur source_credential_name, credential_name est défini sur NULL.

source_object_uri

Spécifie l'URI, qui pointe vers l'emplacement du dossier ou du bucket Object Storage source.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_object_uri

Indique l'URI de la banque d'objets cible.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_credential_name

Nom des données d'identification permettant d'accéder à l'emplacement de stockage d'objet cloud cible.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur target_credential_name, target_object_uri est défini sur la valeur source_credential_name.

Exemple

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

Procédure CREATE_CLOUD_TABLE

Cette procédure crée une table cloud. Toutes les données de table cloud sont stockées dans Object Storage géré par Oracle (les tables cloud stockent uniquement leurs métadonnées dans la base de données).

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table cloud.

column_list

Liste des types et noms de colonne pour la table cloud, séparés par des virgules.

Notes d'utilisation

  • Attributs DEFAULT : la clause column_list peut inclure la clause DEFAULT, qui fonctionne comme la clause DEFAULT dans une clause CREATE TABLE ordinaire. Pour plus d'informations sur le comportement de la clause DEFAULT, reportez-vous à CREATE TABLE.

  • Utilisez DROP TABLE pour supprimer une table cloud. Les tables cloud ne prennent pas en charge la corbeille.

    Par exemple :

    DROP TABLE CLOUD_TAB1; 
  • Vous pouvez accorder des privilèges SELECT, INSERT et UPDATE pour une table cloud. Aucun autre privilège ne peut être accordé à une table cloud.

    Pour plus d'informations, reportez-vous à Configuration de l'autorisation de privilège et de rôle.

Exemples

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

Procédure CREATE_EXTERNAL_PART_TABLE

Cette procédure crée une table partitionnée externe sur les fichiers dans le cloud, ou à partir de fichiers dans un répertoire. Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Spécifie la clause de partitionnement complète, y compris les informations d'emplacement pour les partitions individuelles.

Si vous utilisez le paramètre partitioning_clause, le paramètre file_uri_list n'est pas autorisé.

file_uri_list

Ce paramètre spécifie une liste d'URI de fichier source séparés par des virgules ou un ou plusieurs répertoires et fichiers source.

URI de fichier source cloud

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Cette option est uniquement prise en charge avec les tables externes créées sur un fichier dans Object Storage.

Par exemple :

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 vous utilisez le paramètre file_uri_list, le paramètre partitioning_clause n'est pas autorisé.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

column_list

Liste des noms et des types de données de colonne pour la table externe, séparés par des virgules. Ce paramètre présente les exigences suivantes, en fonction du type de fichier de données indiqué avec le paramètre file_uri_list :

  • Le paramètre column_list est requis avec les fichiers non structurés. A l'aide de fichiers non structurés, par exemple avec des fichiers texte CSV, le paramètre column_list doit spécifier tous les noms et types de données de colonne dans le fichier de données, ainsi que les colonnes de partition dérivées du nom d'objet.

  • Le paramètre column_list est facultatif avec les fichiers structurés. Par exemple, avec les fichiers de données Avro, ORC ou Parquet, column_list n'est pas requis. Lorsque le paramètre column_list n'est pas inclus, l'option partition_columns du paramètre format doit inclure des spécifications pour les noms de colonne (name) et les types de données (type).

field_list

Identifie les champs dans les fichiers source et leurs types de données. La valeur par défaut est NULL, ce qui signifie que les champs et leurs types de données sont déterminés par le paramètre column_list. La syntaxe de cet argument est identique à la clause field_list dans les tables externes Oracle standard. Pour plus d'informations sur field_list, reportez-vous à Utilitaires Oracle® Database.

format

L'option de format partition_columns indique les noms de colonne DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE et les types de données des colonnes de partition lorsque les colonnes de partition sont dérivées du chemin de fichier, selon le type de fichier de données, structuré ou non structuré :

  • Lorsque le paramètre DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE inclut le paramètre column_list et que les fichiers de données ne sont pas structurés, par exemple avec des fichiers texte CSV, partition_columns n'inclut pas le type de données. Par exemple, utilisez un format tel que le suivant pour ce type de spécification partition_columns :

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

    Le type de données n'est pas requis car il est indiqué dans le paramètre DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list.

  • Lorsque DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE n'inclut pas le paramètre column_list et que les fichiers de données sont structurés, tels que les fichiers Avro, ORC ou Parquet, l'option partition_columns inclut à la fois le nom de colonne, la sous-clause name et le type de données, la sous-clause type. Par exemple, l'exemple suivant présente une spécification partition_columns :

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

Si les fichiers de données ne sont pas structurés et que la sous-clause type est indiquée avec partition_columns, la sous-clause type est ignorée.

Pour les noms d'objet qui ne sont pas basés sur le format de ruche, l'ordre des colonnes indiquées par partition_columns doit correspondre à l'ordre dans lequel elles apparaissent dans le nom d'objet dans le chemin de fichier indiqué dans le paramètre file_uri_list.

Pour voir toutes les options de paramètre format décrivant le format des fichiers source, reportez-vous à la section DBMS_CLOUD Package Format Options.

Notes d'utilisation

  • Vous ne pouvez pas appeler cette procédure avec les paramètres partitioning_clause et file_uri_list.

  • La spécification du paramètre column_list est facultative avec les fichiers de données structurées, notamment les fichiers de données Avro, Parquet ou ORC. Si column_list n'est pas spécifié, l'option partition_columns du paramètre format doit inclure name et type.

  • Le paramètre column_list est requis avec les fichiers de données non structurés, tels que les fichiers texte CSV.

  • La procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE prend en charge les fichiers partitionnés externes dans les services de stockage d'objets cloud pris en charge, notamment :
    • Oracle Cloud Infrastructure Object Storage

    • Stockage Azure Blob ou stockage Azure Data Lake

    • Amazon S3

    • Compatible avec Amazon S3, avec Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage.

    • Référentiel GitHub

    Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

  • La procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE prend en charge les fichiers partitionnés externes dans les répertoires, soit dans un système de fichiers local, soit dans un système de fichiers réseau.

  • Lorsque vous appelez DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE avec le paramètre file_uri_list, les types de colonne indiqués dans le nom de fichier de banque d'objets cloud doivent être l'un des types suivants :

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • Le délimiteur d'enregistrement par défaut est detected newline. Avec detected newline, DBMS_CLOUD tente de trouver automatiquement le caractère de nouvelle ligne correct à utiliser comme délimiteur d'enregistrement. DBMS_CLOUD recherche d'abord le caractère de retour à la ligne Windows \r\n. S'il trouve le caractère à la ligne Windows, celui-ci est utilisé comme délimiteur d'enregistrement pour tous les fichiers de la procédure. 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 les fichiers source utilisent une combinaison de différents délimiteurs d'enregistrement, vous risquez de rencontrer une erreur telle que "KUP-04020: found record longer than buffer size supported". Dans ce cas, vous devez soit modifier les fichiers source pour utiliser le même délimiteur d'enregistrement, soit spécifier uniquement les fichiers source qui utilisent le même délimiteur d'enregistrement.

    Reportez-vous à la section DBMS_CLOUD Package Format Options pour plus d'informations sur l'option de format recorddelmiter.

  • Les tables partitionnées externes que vous créez avec DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluent deux colonnes invisibles file$path et file$name. Ces colonnes permettent d'identifier le fichier d'où provient un enregistrement.

    • file$path : indique le texte du chemin du fichier jusqu'au début du nom de l'objet.

    • file$name : indique le nom de l'objet, y compris tout le texte qui suit le nom du bucket.

Exemples

Exemple d'utilisation du paramètre 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;                     
/

Exemple utilisant les paramètres file_uri_list et column_list avec des fichiers de données non structurés :

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

Exemple utilisant file_uri_list sans le paramètre column_list avec des fichiers de données structurées :

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

Procédure CREATE_EXTERNAL_TABLE

Cette procédure crée une table externe sur les fichiers dans le cloud ou à partir de fichiers dans un répertoire. Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Ce paramètre n'est pas utilisé lorsque vous indiquez un répertoire ou une URL de lien hypertexte de table avec file_uri_list.

file_uri_list

Ce paramètre spécifie l'une des valeurs suivantes :

  • Liste des URI de fichier source séparés par des virgules.

  • Liste des URL de lien hypertexte de table séparées par des virgules.

  • Un ou plusieurs répertoires et fichiers source.

URI de fichier source cloud

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Cette option est uniquement prise en charge avec les tables externes créées sur un fichier dans Object Storage.

Par exemple :

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'

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour en savoir plus, reportez-vous àFormats d'URI DBMS_CLOUD.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

URL du lien hypertexte de table

Vous pouvez utiliser une URL de lien hypertexte de table pour créer une table externe de l'une des manières suivantes :
  • Indiquez une seule URL de lien hypertexte de table Autonomous Database. Vous pouvez également appliquer des filtres et des clauses aux données lorsque vous lisez les données de la table. Par exemple, vous pouvez filtrer les données à l'aide de la clause WHERE ou les trier à l'aide de la clause ORDER BY.

    Par exemple :
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Indiquez une liste délimitée par des virgules d'URL de lien hypertexte de table Autonomous Database. Vous devez vous assurer que tous les liens hypertexte de table inclus doivent avoir les mêmes noms de colonne, ordre des colonnes et types de données de colonne dans le même schéma.

    Par exemple :
    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'
    
Remarque

Les URL de lien hypertexte de table ne prennent pas en charge les caractères génériques.
Pour plus d'informations, reportez-vous à A propos des liens hypertexte de table sur Autonomous Database et à Procédure CREATE_URL.
Répertoire

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour spécifier un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme générique pour plusieurs caractères, et le caractère " ?" peut être utilisé comme générique pour un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple :'MY_DIR:''filename.ext'. Cela indique que filename commence par un guillemet (').

column_list

Liste des noms et des types de données de colonne pour la table externe, séparés par des virgules.

field_list

Identifie les champs dans les fichiers source et leurs types de données. La valeur par défaut est NULL, ce qui signifie que les champs et leurs types De données sont déterminés par le paramètre column_list. La syntaxe de cet argument est identique à la clause field_list dans les tables externes Oracle Database standard. Pour plus d'informations sur field_list, reportez-vous à ORACLE_LOADER Access Driver field_list sous la clause field_definitions dans Oracle Database Utilities.

format

Options décrivant le format des fichiers source. Pour connaître la liste des options et découvrir comment spécifier les valeurs, reportez-vous à DBMS_CLOUD Package Format Options.

Pour les fichiers au format Avro, ORC ou Parquet, reportez-vous à Procédure CREATE_EXTERNAL_TABLE pour les fichiers Avro, ORC ou Parquet.

Notes d'utilisation

  • La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge des fichiers partitionnés externes dans les sources de stockage d'objet cloud prises en charge, notamment :

    • Oracle Cloud Infrastructure Object Storage

    • Stockage Azure Blob ou stockage Azure Data Lake

    • Amazon S3

    • Compatible avec Amazon S3, avec Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage.

    • Référentiel GitHub

    • Oracle Cloud Infrastructure Object Storage avec des URL de lien hypertexte de table

    Les informations d'identification sont des propriétés de niveau table. Par conséquent, les fichiers externes doivent se trouver dans la même banque d'objets.

    Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

  • Le délimiteur d'enregistrement par défaut est detected newline. Avec detected newline, DBMS_CLOUD tente de trouver automatiquement le caractère de nouvelle ligne correct à utiliser comme délimiteur d'enregistrement. DBMS_CLOUD recherche d'abord le caractère de retour à la ligne Windows \r\n. S'il trouve le caractère à la ligne Windows, celui-ci est utilisé comme délimiteur d'enregistrement pour tous les fichiers de la procédure. 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 les fichiers source utilisent une combinaison de différents délimiteurs d'enregistrement, vous risquez de rencontrer une erreur telle que "KUP-04020: found record longer than buffer size supported". Dans ce cas, vous devez soit modifier les fichiers source pour utiliser le même délimiteur d'enregistrement, soit spécifier uniquement les fichiers source qui utilisent le même délimiteur d'enregistrement.

    Reportez-vous à la section DBMS_CLOUD Package Format Options pour plus d'informations sur l'option de format recorddelimiter.

Exemple

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

Procédure CREATE_EXTERNAL_TABLE pour Apache Iceberg

Cette procédure crée des tables externes pour les tables Apache Iceberg dans les configurations prises en charge.

Ces configurations spécifiques sont prises en charge :

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

credential_name

Nom des informations d'identification utilisées pour accéder aux fichiers de données, aux fichiers de métadonnées et au catalogue Iceberg (le cas échéant).

Pour les configurations AWS et OCI, les informations d'identification doivent être créées comme décrit dans la procédure CREATE_CREDENTIAL.

Les informations d'identification AWS Amazon Resource Names (ARN) ne sont actuellement pas prises en charge.

file_uri_list

Doit avoir la valeur NULL si un catalogue Iceberg est spécifié (voir le paramètre format ci-dessous). Si aucun catalogue d'iceberg n'est utilisé, le fichier file_uri_list doit contenir l'URI du fichier de métadonnées d'iceberg.

column_list

Doit être NULL car les noms et les types de colonne sont automatiquement dérivés des métadonnées Iceberg.

Les noms de colonne correspondent aux noms trouvés dans les fichiers de données sous-jacents (Parquet, Avro, ORC). Les types de données Oracle sont dérivés à l'aide des mappings Parquet/Avro/ORC entre Iceberg et les types de données Parquet, Avro et ORC. Par conséquent, les utilisateurs ne peuvent pas spécifier column_list.

field_list

Doit être NULL car les noms de colonne et les types de données sont automatiquement dérivés des métadonnées Iceberg.

format

Le paramètre format a une structure différente selon le type de table Iceberg et les informations utilisées pour créer la table externe, par exemple les informations d'un catalogue de données ou d'un URI de métadonnées direct.

Pour plus d'informations, reportez-vous à Prise en charge d'Iceberg sur les exemples OCI Data Flow et à Formats d'URI DBMS_CLOUD.

Exemple de paramètre de format pour les tables AWS Iceberg utilisant un catalogue AWS Glue

Voici un exemple de paramètre format lors de la création de tables sur une table AWS Iceberg à l'aide d'un catalogue 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'))); 
Où, le paramètre access_protocol contient un objet JSON avec deux éléments, comme suit :
  • protocol_type : doit être "iceberg"
  • protocol_config : objet JSON imbriqué indiquant les détails du catalogue d'iceberg.
    • iceberg_catalog_type : doit être 'aws_glue'
    • iceberg_glue_region : région de catalogue, par exemple 'us-west-1'
    • iceberg_table_path : chemin glue database.glue table name.

Exemple de paramètre de format pour la table AWS Iceberg utilisant un URI de fichier de métadonnées

Un exemple de paramètre format lors de la création de tables sur une table AWS Iceberg à l'aide d'un URI de fichier de métadonnées est le suivant :
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Exemple de paramètre de format pour la table OCI Iceberg à l'aide du catalogue HadoopCatalog

Un exemple de paramètre format lors de la création de tables sur une table OCI Iceberg créée par OCI Data Flow à l'aide du catalogue HadoopCatalog est le suivant :
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')));
Où, le paramètre access_protocol contient un objet JSON avec deux éléments, comme suit :
  • protocol_type : doit être 'iceberg'
  • protocol_config : objet JSON imbriqué indiquant les détails du catalogue d'iceberg.
    • iceberg_catalog_type : doit être 'hadoop'
    • iceberg_warehouse : chemin de répertoire de data warehouse utilisé lors de la génération de la table, au format URI natif.
    • iceberg_table_path : chemin database_name.table name utilisé lors de la création de la table.

Exemple de paramètre de format pour la table OCI Iceberg à l'aide de l'URI du fichier de métadonnées

Un exemple de paramètre format lors de la création de tables sur une table OCI Iceberg à l'aide de l'URI du fichier de métadonnées est le suivant :
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Où le paramètre access_protocol contient un objet JSON avec un élément comme suit :
  • protocol_type : doit être 'iceberg'

CREATE_EXTERNAL_TABLE Procédure pour les fichiers Avro, ORC ou Parquet

Cette procédure avec le paramètre format type défini sur la valeur avro, orc ou parquet crée une table externe avec des fichiers au format Avro, ORC ou Parquet dans le cloud ou dans un répertoire.

Vous pouvez ainsi exécuter des requêtes sur des données externes à partir d'Autonomous Database.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Ce paramètre n'est pas utilisé lorsque vous indiquez un répertoire avec file_uri_list.

file_uri_list

Ce paramètre spécifie une liste d'URI de fichier source séparés par des virgules ou un ou plusieurs répertoires et fichiers source.

URI de fichier source cloud

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE.

Cette option est uniquement prise en charge avec les tables externes créées sur un fichier dans Object Storage.

Par exemple :

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'

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous à la page Formats d'URI DBMS_CLOUD.

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

Répertoire

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour spécifier un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme générique pour plusieurs caractères, et le caractère " ?" peut être utilisé comme générique pour un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple :'MY_DIR:''filename.ext'. Cela indique que filename commence par un guillemet (').

column_list

(Facultatif) Lorsque ce champ est indiqué, il remplace le paramètre format->schema qui indique que le schéma, les colonnes et les types de données sont dérivés automatiquement. Pour plus de détails, reportez-vous au paramètre de format.

Lorsque la valeur column_list est indiquée pour la source Avro, ORC ou Parquet, les noms de colonne doivent correspondre aux colonnes trouvées dans le fichier. Les types de données Oracle doivent être mappés correctement avec les types de données Avro, ORC ou Parquet.

Pour plus d'informations sur les fichiers Parquet, reportez-vous à DBMS_CLOUD Mise en correspondance des types de données Parquet et Oracle.

Pour plus d'informations sur les fichiers ORC, reportez-vous à la section DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Pour plus d'informations sur les fichiers Avro, reportez-vous à la section DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

field_list

Ignoré pour les fichiers Avro, ORC ou Parquet.

Les champs de la source correspondent aux colonnes de la table externe par nom. Les types de données source sont convertis en types de données de colonne de table externe.

Pour les fichiers ORC, reportez-vous à Mise en correspondance de types de données ORC avec des types de données Oracle avec DBMS_CLOUD

Pour plus d'informations sur les fichiers Parquet, reportez-vous à DBMS_CLOUD Mise en correspondance des types de données Parquet et Oracle.

Pour plus d'informations sur les fichiers Avro, reportez-vous à la section DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

format

Pour plus d'informations sur les fichiers source Avro, ORC ou Parquet type, reportez-vous à Options de format de package DBMS_CLOUD pour Avro, ORC ou Parquet.

Exemples ORC

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

Exemples Avro

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

Exemples Parquet

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

Mise en correspondance de noms de colonne Avro, ORC ou Parquet avec des noms de colonne Oracle

Pour plus d'informations sur la mise en correspondance des noms de colonne et l'utilisation de la conversion des noms de colonne dans Oracle SQL, reportez-vous à DBMS_CLOUD Package Avro, ORC et Parquet vers Oracle Column Name Mapping.

Procédure CREATE_EXTERNAL_TEXT_INDEX

Cette procédure crée un index de texte sur les fichiers Object Storage.

La procédure CREATE_EXTERNAL_TEXT_INDEX crée un index de texte sur les fichiers Object Storage indiqués à l'emplacement location_uri. L'index est actualisé à intervalles réguliers, pour tous les nouveaux ajouts ou suppressions effectués avec des fichiers sur l'URI d'emplacement.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des données d'identification permettant d'accéder à l'emplacement de stockage d'objet cloud. Pour les URI de bucket publics, pré-authentifiés ou pré-signés, une valeur NULL peut être indiquée.

Pour plus d'informations, reportez-vous à Configuration de stratégies et de rôles pour accéder aux ressources.

Si vous ne fournissez pas de valeur credential_name, credential_name est défini sur une valeur NULL.

location_uri

Indique l'URI du bucket ou du dossier de la banque d'objets.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

index_name Spécifie le nom de l'index que vous créez sur les fichiers situés à l'emplacement location_uri.

Ce paramètre est obligatoire.

format

Spécifie des options de configuration supplémentaires. Les options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :

refresh_rate : indique la fréquence en minutes à laquelle l'index local est actualisé. Les nouveaux téléchargements et suppressions de fichier entraînent une actualisation de l'index. La valeur par défaut est de 5 minutes.

binary_files : indique si le contenu des fichiers à indexer est binaire. Par exemple, PDF, MS-Word, La valeur par défaut est FALSE.

json_index : indique si le contenu des fichiers à indexer est JSON ou JSON de ligne. La valeur par défaut est FALSE.

json_index_doc_sep : indique le séparateur utilisé pour le prétraitement des documents JSON de ligne. La valeur par défaut est '\n' (nouvelle ligne).

json_index_doc_len : indique la longueur de chaque document JSON dans l'objet. La valeur par défaut est 32767 et la valeur maximale est 200000.

file_compression : indique le format de compression des fichiers JSON. La valeur par défaut est gzip.

stop_words : indique qu'une liste de mots d'arrêt peut être fournie lorsque vous créez des index.

La valeur stop_words indique s'il s'agit d'une liste de mots stop ou d'une table de mots stop. Lorsqu'un tableau JSON est fourni, le paramètre des mots d'arrêt est traité comme une liste, sinon le paramètre des mots d'arrêt est traité comme un nom de table dont la colonne "STOP_WORDS" est utilisée pour lire la liste des mots d'arrêt.

Vous pouvez spécifier des mots d'arrêt à l'aide des méthodes suivantes :

  • Tableau JSON : par exemple : format := '{"stop_words":["king","queen"]}'
  • Nom de la table de mots d'arrêt : par exemple : format := '{"stop_words":"STOP_WORDS_TABLE"}'

Si vous ne fournissez pas de paramètre format, format est défini sur une valeur NULL.

Exemple

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

Procédure CREATE_HYBRID_PART_TABLE

Cette procédure crée une table partitionnée hybride. Vous pouvez ainsi exécuter des requêtes sur des données partitionnées hybrides à partir d'Autonomous Database à l'aide d'objets et de fichiers de base de données dans le cloud ou d'objets et de fichiers de base de données dans un répertoire.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Spécifie la clause de partitionnement complète, y compris les informations d'emplacement pour les partitions individuelles.

Pour utiliser des répertoires, la clause de partitionnement prend en charge les valeurs LOCATION et DEFAULT DIRECTORY.

Vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les expressions régulières ne peuvent être utilisées que lorsque le paramètre regexuri format est défini sur TRUE.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE. Les modèles d'expression régulière ne sont pas pris en charge pour les noms de répertoire.

Par exemple :

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''),….

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition.

column_list

Liste des noms et des types de données de colonne pour la table externe, séparés par des virgules.

field_list

Identifie les champs dans les fichiers source et leurs types de données. La valeur par défaut est NULL, ce qui signifie que les champs et leurs types de données sont déterminés par le paramètre column_list. La syntaxe de cet argument est identique à la clause field_list dans les tables externes Oracle standard. Pour plus d'informations sur field_list, reportez-vous à Utilitaires Oracle® Database.

format

Options décrivant le format des fichiers source. Pour connaître la liste des options et découvrir comment spécifier les valeurs, reportez-vous à DBMS_CLOUD Package Format Options.

Notes d'utilisation

  • La procédure DBMS_CLOUD.CREATE_HYBRID_PART_TABLE prend en charge les fichiers partitionnés externes dans les services de stockage d'objets cloud pris en charge, notamment :

    • Oracle Cloud Infrastructure Object Storage

    • Stockage Azure Blob ou stockage Azure Data Lake

    • Amazon S3

    • Compatible avec Amazon S3, avec Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage.

    • Référentiel GitHub

    Les informations d'identification sont des propriétés de niveau table. Par conséquent, les fichiers externes doivent se trouver dans la même banque d'objets.

    Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

  • La procédure DBMS_CLOUD.CREATE_HYBRID_PART_TABLE prend en charge les fichiers partitionnés hybrides dans les répertoires, soit dans un système de fichiers local, soit dans un système de fichiers réseau.

  • Les tables partitionnées externes que vous créez avec DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluent deux colonnes invisibles file$path et file$name. Ces colonnes permettent d'identifier le fichier d'où provient un enregistrement.

    • file$path : indique le texte du chemin du fichier jusqu'au début du nom de l'objet.

    • file$name : indique le nom de l'objet, y compris tout le texte qui suit le nom du bucket.

Exemples

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

Procédure DELETE_ALL_OPERATIONS

Cette procédure efface toutes les opérations de chargement de données consignées dans la table user_load_operations de votre schéma, ou toutes les opérations de chargement de données du type spécifié, comme indiqué dans le paramètre type.

Syntaxe

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Paramètres

Paramètre Description

type

Indique le type d'opération à supprimer. Les valeurs de type se trouvent dans la colonne TYPE de la table user_load_operations.

Si aucune valeur type n'est spécifiée, toutes les lignes sont supprimées.

Notes d'utilisation

  • Cette procédure ne supprime pas les opérations en cours d'exécution (opérations ayant le statut "En cours d'exécution").

  • Cette procédure supprime les tables de journalisation et les fichiers journaux associés aux opérations.

Procédure DELETE_FILE

Cette procédure enlève le fichier spécifié du répertoire indiqué sur Autonomous Database.

Syntaxe

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

Paramètres

Paramètre Description

directory_name

Nom du répertoire sur l'instance Autonomous Database.

file_name

Nom du fichier à enlever.

force

Ignorer et ne pas signaler les erreurs si le fichier n'existe pas. Les valeurs valides sont : TRUE et FALSE. La valeur par défaut est FALSE.

Remarque

Pour exécuter DBMS_CLOUD.DELETE_FILE avec un utilisateur autre qu'ADMIN, vous devez lui accorder des privilèges d'écriture sur le répertoire qui contient le fichier. Par exemple, exécutez la commande suivante en tant qu'ADMIN pour accorder des privilèges d'écriture à adb_user :
GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Exemple

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

Procédure DELETE_OBJECT

Cette procédure supprime l'objet spécifié de la banque d'objets.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI d'objet ou de fichier de l'objet à supprimer. Le format de l'URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous àFormats d'URI DBMS_CLOUD.

force

Ignorer et ne pas signaler les erreurs si l'objet n'existe pas. Les valeurs valides sont : TRUE et FALSE. La valeur par défaut est FALSE.

Exemple

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

Procédure DELETE_OPERATION

Cette procédure efface les entrées de chargement de données pour l'ID d'opération indiqué consignées dans les tables user_load_operations ou dba_load_operations de votre schéma.

Syntaxe

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Paramètres

Paramètre Description

id

Indique l'ID d'opération associé aux entrées de fichier journal à supprimer.

Remarque sur l'utilisation

  • Cette procédure supprime les tables de journalisation et les fichiers journaux associés à l'ID d'opération indiqué dans l'entrée.

Exemple

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

Procédure DROP_EXTERNAL_TEXT_INDEX

Cette procédure supprime l'index de texte dans les fichiers Object Storage.

La procédure DROP_EXTERNAL_TEXT_INDEX supprime l'index spécifié créé avec la procédure CREATE_EXTERNAL_TEXT_INDEX.

Syntaxe

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Paramètres

Paramètre Description
index_name

Spécifie le nom de l'index que vous supprimez.

Le nom de l'index doit correspondre au nom fourni au moment de sa création.

Ce paramètre est obligatoire.

Exemple

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

Procédure EXPORT_DATA

Cette procédure exporte des données à partir d'Autonomous Database en fonction du résultat d'une requête. Cette procédure est surchargée et prend en charge l'écriture de fichiers dans le cloud ou dans un répertoire.

En fonction du paramètre format type, la procédure exporte les fichiers vers le cloud ou vers un emplacement de répertoire en tant que fichiers texte au format CSV, JSON, Parquet ou XML, ou en utilisant le pilote d'accès ORACLE_DATAPUMP pour écrire des données dans un fichier dump Oracle Datapump.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Lorsque le paramètre d'informations d'identification n'est pas inclus, cela indique la sortie vers un répertoire.

file_uri_list

Il existe différentes formes, selon la valeur du paramètre de format et selon que vous incluez ou non un paramètre d'informations d'identification :
  • Lorsque la valeur du paramètre format type est json : le fichier JSON sur la banque d'objets ou à l'emplacement de répertoire indiqué est enregistré avec un nom de fichier généré en fonction de la valeur du paramètre file_uri_list. Pour plus d'informations, reportez-vous à Dénomination de fichier pour la sortie texte (CSV, JSON, Parquet ou XML).

  • Lorsque la valeur du paramètre format type est datapump, file_uri_list est une liste de fichiers dump séparés par des virgules. Indique les fichiers à créer dans la banque d'objets. L'utilisation de caractères génériques et de caractères de substitution n'est pas prise en charge dans file_uri_list.

  • Lorsque le paramètre credential_name n'est pas indiqué, vous indiquez un nom de répertoire dans file_uri_list.

Le format des URI dépend du service Cloud Object Storage que vous utilisez. pour plus de détails, reportez-vous à Formats d'URI DBMS_CLOUD.

format

Chaîne JSON qui fournit des options de format d'export.

L'option prise en charge est :

  • type : L'option type format est requise et doit avoir l'une des valeurs suivantes : csv | datapump | json | parquet | xml.

Reportez-vous à la section DBMS_CLOUD Package Format Options for EXPORT_DATA.

query

Utilisez ce paramètre pour indiquer une instruction SELECT afin que seules les données requises soient exportées. La requête détermine le contenu des fichiers que vous exportez en tant que fichiers texte CSV, JSON, Parquet ou XML, ou en tant que fichiers dump. Par exemple :

SELECT warehouse_id, quantity FROM inventories

Pour plus d'informations sur la valeur de format type datapump, reportez-vous à Filtres de données d'export Oracle Data Pump et à Déchargement et chargement de données avec le pilote d'accès ORACLE_DATAPUMP.

Lorsque la valeur format type est json, chaque résultat de requête est vérifié et s'il ne s'agit pas de JSON, comme déterminé par la fonction : JSON_OBJECT_T.parse(), DBMS_CLOUD.EXPORT_DATA transforme la requête pour inclure la fonction JSON_OBJECT afin de convertir la ligne en JSON. Pour plus d'informations, reportez-vous à JSON_OBJECT_T Type d'objet.

Par exemple :

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

operation_id

Utilisez ce paramètre pour suivre la progression et la fin de l'opération d'export sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Notes d'utilisation :

  • La valeur de paramètre query que vous fournissez peut être une requête avancée, si nécessaire, telle qu'une requête qui inclut des jointures ou des sous-requêtes.

  • Selon le paramètre de format indiqué, DBMS_CLOUD.EXPORT_DATA génère les résultats de la requête indiquée sur la banque d'objets cloud ou vers un emplacement de répertoire dans l'un des formats suivants :

  • Par défaut, lorsqu'un fichier généré contient 10 Mo de données, un nouveau fichier de sortie est créé pour une sortie CSV, JSON ou XML. Toutefois, si vous disposez de moins de 10 Mo de données de résultat, vous pouvez disposer de plusieurs fichiers de sortie, en fonction du service de base de données et du nombre d'OCPU (si votre base de données utilise des OCPU) pour l'instance Autonomous Database.

    Pour plus d'informations, reportez-vous à Dénomination de fichier pour la sortie texte (CSV, JSON, Parquet ou XML).

    La taille par défaut du bloc du fichier de sortie est de 10 Mo pour CSV, JSON ou XML. Vous pouvez modifier cette valeur avec le paramètre format, option maxfilesize. Pour plus d'informations, reportez-vous à DBMS_CLOUD Options de format de package pour EXPORT_DATA.

  • Pour la sortie Parquet, chaque fichier généré est inférieur à 128 Mo et plusieurs fichiers de sortie peuvent être générés. Toutefois, si vous disposez de moins de 128 Mo de données de résultat, vous pouvez disposer de plusieurs fichiers de sortie en fonction du service de base de données et du nombre d'OCPU (si votre base de données utilise des OCPU) pour l'instance Autonomous Database.

    Pour plus d'informations, reportez-vous à Dénomination de fichier pour la sortie texte (CSV, JSON, Parquet ou XML).

Notes d'utilisation pour la sortie ORACLE_DATAPUMP (DBMS_CLOUD.EXPORT_DATA avec le paramètre format type option datapump) :

  • EXPORT_DATA utilise DATA_PUMP_DIR comme répertoire de journalisation par défaut. Le privilège d'écriture sur DATA_PUMP_DIR est donc requis lors de l'utilisation de la sortie ORACLE_DATAPUMP.

  • Autonomous Database export using DBMS_CLOUD.EXPORT_DATA with format parameter type option datapump only supports Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic object stores or directory output.

  • Lorsque vous indiquez DBMS_CLOUD.EXPORT_DATA avec l'option datapump du paramètre format type, la valeur du paramètre credential_name ne peut pas être un principal de ressource OCI.

  • Oracle Data Pump divise chaque partie de fichier dump en segments plus petits pour accélérer les téléchargements. La console Oracle Cloud Infrastructure Object Storage affiche plusieurs fichiers pour chaque partie de fichier dump que vous exportez. La taille affichée pour les fichiers dump réels est zéro (0) et celle affichée pour les segments de fichier associés 10 Mo ou moins. Par exemple :
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Le téléchargement du fichier dump de zéro octet à partir de la console Oracle Cloud Infrastructure ou à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure ne vous fournit pas les fichiers dump complets. Pour télécharger les fichiers dump complets à partir de la banque d'objets, utilisez un outil prenant en charge Swift, tel que curl, et fournissez votre nom de connexion utilisateur et votre jeton d'authentification 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 vous importez un fichier avec les procédures DBMS_CLOUD qui prennent en charge le paramètre format type avec la valeur 'datapump', vous devez uniquement fournir le nom du fichier principal. Les procédures qui prennent en charge le type du format 'datapump' repèrent et téléchargent automatiquement les segments.

    Lorsque vous utilisez DBMS_CLOUD.DELETE_OBJECT, la procédure repère et supprime automatiquement les blocs lorsque la procédure supprime le fichier principal.

  • La procédure DBMS_CLOUD.EXPORT_DATA crée les fichiers dump à partir des valeurs file_uri_list que vous indiquez, comme suit :

    • Au fur et à mesure que d'autres fichiers sont nécessaires, la procédure crée des fichiers supplémentaires à partir de file_uri_list.

    • La procédure n'écrase pas les fichiers. Si un fichier dump dans file_uri_list existe, DBMS_CLOUD.EXPORT_DATA signale une erreur.

    • DBMS_CLOUD.EXPORT_DATA ne crée pas de buckets.

  • Le nombre de fichiers dump générés par DBMS_CLOUD.EXPORT_DATA est déterminé lors de l'exécution de la procédure. Le nombre de fichiers dump générés dépend du nombre de noms de fichier que vous fournissez dans le paramètre file_uri_list, ainsi que du nombre d'OCPU Autonomous Database disponibles pour l'instance, du niveau de service et de la taille des données.

    Par exemple, si vous utilisez une instance Autonomous Database à 1 OCPU ou le service low, un fichier dump unique est exporté sans parallélisme, même si vous indiquez plusieurs noms de fichier. Si vous utilisez une instance Autonomous Database à 4 OCPU avec le service medium ou high, les travaux peuvent être exécutés en parallèle et plusieurs fichiers dump sont exportés si vous indiquez plusieurs noms de fichier.

  • Les fichiers dump que vous créez avec DBMS_CLOUD.EXPORT_DATA ne peuvent pas être importés à l'aide d'Oracle Data Pump impdp. En fonction de la base de données, vous pouvez utiliser ces fichiers comme suit :

    • Sur une instance Autonomous Database, vous pouvez utiliser les fichiers dump avec les procédures DBMS_CLOUD qui prennent en charge le paramètre format type avec la valeur 'datapump'. Vous pouvez importer les fichiers dump à l'aide de DBMS_CLOUD.COPY_DATA ou appeler DBMS_CLOUD.CREATE_EXTERNAL_TABLE pour créer une table externe.

    • Sur toute autre base de données Oracle Database, telle qu'Oracle Database 19c sur site, vous pouvez importer les fichiers dump créés avec la procédure DBMS_CLOUD.EXPORT_DATA à l'aide du pilote d'accès ORACLE_DATAPUMP. Pour plus d'informations, reportez-vous à Déchargement et chargement de données avec le pilote d'accès ORACLE_DATAPUMP.

  • La valeur de paramètre query que vous fournissez peut être une requête avancée, si nécessaire, telle qu'une requête qui inclut des jointures ou des sous-requêtes.

Notes d'utilisation pour DBMS_CLOUD.EXPORT_DATA avec sortie dans un répertoire

  • Le répertoire fourni doit exister et vous devez être connecté en tant qu'utilisateur ADMIN ou disposer d'un accès WRITE au répertoire.

  • DBMS_CLOUD.EXPORT_DATA ne crée pas de répertoires.

  • La procédure n'écrase pas les fichiers. Par exemple, si un fichier dump dans file_uri_list existe, DBMS_CLOUD.EXPORT_DATA signale une erreur telle que :

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

Exemples

L'exemple suivant montre DBMS_CLOUD.EXPORT_DATA avec le paramètre de format type avec la valeur 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;
/  

Dans cet exemple, namespace-string est l'espace de noms d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

L'exemple suivant montre DBMS_CLOUD.EXPORT_DATA avec le paramètre de format type avec la valeur 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;
/  

L'exemple suivant montre DBMS_CLOUD.EXPORT_DATA avec le paramètre de format type avec la valeur 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;
/

L'exemple suivant montre DBMS_CLOUD.EXPORT_DATA avec le paramètre de format type avec la valeur 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;
/  

L'exemple suivant illustre l'export de données DBMS_CLOUD.EXPORT_DATA vers un emplacement de répertoire avec le paramètre type avec la valeur 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 Procédure et fonction

Cette procédure est surchargée. Ce formulaire de procédure lit un objet à partir du stockage d'objet cloud et la copie vers Autonomous Database. Le formulaire de fonction lit un objet à partir de Cloud Object Storage et renvoie une valeur BLOB vers Autonomous Database.

Syntaxe

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;

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI de l'objet ou du fichier. Le format de l'URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous àFormats d'URI DBMS_CLOUD.

directory_name

Nom du répertoire dans la base de données.

Bas de page 1
Vous pouvez utiliser une URL de lien hypertexte de table comme suit :
  • Indiquez une URL de lien hypertexte de table Autonomous Database unique.

  • Indiquez la liste des URL de lien hypertexte de table Autonomous Database séparées par des virgules. Vous devez vous assurer que tous les liens hypertexte de table inclus doivent avoir les mêmes noms de colonne, ordre des colonnes et types de données de colonne dans le même schéma.

Pour plus d'informations, reportez-vous à A propos des liens hypertexte de table sur Autonomous Database et à Procédure CREATE_URL.

file_name

Indique le nom du fichier à créer. Si le nom du fichier n'est pas spécifié, il est défini sur ce qui suit la dernière barre oblique dans le paramètre object_uri. Pour les cas particuliers, par exemple lorsque le nom du fichier contient des barres obliques, utilisez le paramètre file_name.

startoffset

Décalage, en octets, à partir duquel la procédure commence la lecture.

endoffset

Décalage, en octets, auquel la procédure arrête la lecture.

compression

Spécifie la compression utilisée pour stocker l'objet. Lorsque compression est défini sur ‘AUTO’, le fichier n'est pas compressé (la valeur ‘AUTO’ implique que l'objet spécifié avec object_uri est compressé avec GZIP).

Note 1 de bas de page

Remarque

Pour exécuter DBMS_CLOUD.GET_OBJECT avec un utilisateur autre qu'ADMIN, vous devez lui accorder des privilèges WRITE sur le répertoire. Par exemple, exécutez la commande suivante en tant qu'ADMIN pour accorder des privilèges d'écriture à adb_user :

GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Valeurs renvoyées

Le formulaire de fonction lit à partir de la banque d'objets et DBMS_CLOUD.GET_OBJECT renvoie une valeur BLOB.

Exemples

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

Pour lire des données alphanumériques à partir d'un fichier dans la banque d'objets :

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;

Pour ajouter une image stockée dans la banque d'objets dans une table BLOB de la base de données, procédez comme suit :


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

Dans cet exemple, namespace-string est l'espace de noms d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

Fonction LIST_FILES

Cette fonction liste les fichiers présents dans le répertoire spécifié. Les résultats incluent les noms de fichier et les métadonnées supplémentaires sur les fichiers, telles que la taille de fichier en octets, l'horodatage de création et l'horodatage de dernière modification.

Syntaxe

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Paramètres

Paramètre Description

directory_name

Nom du répertoire dans la base de données.

Notes d'utilisation

  • Pour exécuter DBMS_CLOUD.LIST_FILES avec un utilisateur autre qu'ADMIN, vous devez lui accorder des privilèges d'accès en lecture sur le répertoire. Par exemple, exécutez la commande suivante en tant qu'ADMIN pour accorder le privilège de lecture au répertoire adb_user :

    GRANT READ ON DIRECTORY data_pump_dir TO adb_user;
  • Il s'agit d'une fonction de table alignée avec le type de retour DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES n'obtient pas la valeur de somme de contrôle et renvoie NULL pour ce champ.

Exemple

Il s'agit d'une fonction pipelinée qui renvoie une ligne pour chaque fichier. Par exemple, générez la requête suivante pour utiliser cette fonction :

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

Fonction LIST_OBJECTS

Cette fonction répertorie les objets présents à l'emplacement spécifié dans la banque d'objets. Les résultats incluent les noms d'objet et les métadonnées supplémentaires sur les objets, telles que la taille, le checksum, l'horodatage de création et l'horodatage de dernière modification.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

location_uri

URI de l'objet ou du fichier. Le format de l'URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous àFormats d'URI DBMS_CLOUD.

Notes d'utilisation

  • Selon les fonctionnalités de la banque d'objets, DBMS_CLOUD.LIST_OBJECTS ne renvoie pas de valeurs pour certains attributs et la valeur renvoyée pour le champ est NULL dans ce cas.

    Toutes les banques d'objets prises en charge renvoient des valeurs pour les champs OBJECT_NAME, BYTES et CHECKSUM.

    Le tableau suivant présente la prise en charge des champs CREATED et LAST_MODIFIED par la banque d'objets :

    Banque d'objets CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure natif Renvoie l'horodatage Renvoie l'horodatage
    Oracle Cloud Infrastructure Swift Renvoie NULL Renvoie l'horodatage
    Oracle Cloud Infrastructure Classic Renvoie NULL Renvoie l'horodatage
    Amazon S3 Renvoie NULL Renvoie l'horodatage
    Compatible avec Amazon S3 Renvoie NULL Renvoie l'horodatage
    Azure Renvoie l'horodatage Renvoie l'horodatage
    Référentiel GitHub    
  • La valeur de checksum est la somme de contrôle MD5. Il s'agit d'un nombre hexadécimal de 32 caractères calculé sur le contenu de l'objet. Une valeur de somme de contrôle différente est attendue si les informations d'identification OCI$RESOURCE_PRINCIPAL sont utilisées.

  • Il s'agit d'une fonction de table alignée avec le type de retour DBMS_CLOUD_TYPES.list_object_ret_t.

Exemple

Il s'agit d'une fonction pipelinée qui renvoie une ligne pour chaque objet. Par exemple, générez la requête suivante pour utiliser cette fonction :

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          

Dans cet exemple, namespace-string est l'espace de noms d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

Procédure MOVE_OBJECT

Cette procédure déplace un objet d'un bucket ou dossier Cloud Object Storage vers un autre.

Le dossier ou le bucket source et cible peuvent se trouver dans le même fournisseur de banque d'objets cloud ou dans un autre fournisseur.

Lorsque la source et la cible se trouvent dans des banques d'objets distinctes ou ont des comptes différents avec le même fournisseur cloud, vous pouvez donner des noms d'informations d'identification distincts pour les emplacements source et cible.

Par défaut, le nom des informations d'identification source est également utilisé par l'emplacement cible lorsque le nom des informations d'identification cible n'est pas fourni.

Syntaxe

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

Paramètres

Paramètre Description

source_credential_name

Nom des infos d'identification permettant d'accéder au stockage d'objet cloud source.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur source_credential_name, credential_name est défini sur NULL.

source_object_uri

Spécifie l'URI, qui pointe vers l'emplacement du dossier ou du bucket Object Storage source.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_object_uri

Indique l'URI du bucket ou dossier Object Storage cible, où les fichiers doivent être déplacés.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_credential_name

Nom des données d'identification permettant d'accéder à l'emplacement de stockage d'objet cloud cible.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur target_credential_name, target_object_uri est défini sur la valeur source_credential_name.

Exemple

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

Procédure PUT_OBJECT

Cette procédure est surchargée. Dans un formulaire, la procédure copie un fichier d'Autonomous Database vers le stockage d'objet cloud. Sous une autre forme, la procédure copie une instance BLOB d'Autonomous Database vers Cloud Object Storage.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI de l'objet ou du fichier. Le format de l'URI dépend du service Cloud Object Storage que vous utilisez. Pour obtenir plus de détails, reportez-vous àFormats d'URI DBMS_CLOUD.

directory_name

Nom du répertoire sur l'instance Autonomous Database.

Pied 2

contents

Indique la valeur BLOB à copier d'Autonomous Database vers le stockage d'objet cloud.

file_name

Nom du fichier dans le répertoire spécifié.

compression

Spécifie la compression utilisée pour stocker l'objet.

La valeur par défaut est NULL

Note de bas de page 2

Remarque

Pour exécuter DBMS_CLOUD.PUT_OBJECT avec un utilisateur autre qu'ADMIN, vous devez lui accorder des privilèges d'accès en lecture sur le répertoire. Par exemple, exécutez la commande suivante en tant qu'ADMIN pour accorder des privilèges de lecture à adb_user :

GRANT READ ON DIRECTORY data_pump_dir TO adb_user;

Exemple

Pour gérer les données BLOB après le traitement dans la base de données, puis les stocker directement dans un fichier de la banque d'objets, procédez comme suit :

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

Notes d'utilisation

En fonction de votre stockage d'objet cloud, la taille de l'objet que vous transférez est limitée comme suit :

Service Cloud Object Storage Limite de taille de transfert d'objet

Oracle Cloud Infrastructure Object Storage

50 Go

Amazon S3

5 Go

Stockage Azure Blob ou stockage Azure Data Lake

256 Mo

Compatible avec Amazon S3

Défini par le fournisseur de banque d'objets. Pour plus d'informations, reportez-vous à la documentation du fournisseur.

La banque d'objets Oracle Cloud Infrastructure ne permet pas d'écrire des fichiers dans un bucket public sans fournir d'informations d'identification (Oracle Cloud Infrastructure permet aux utilisateurs de télécharger des objets à partir de buckets publics). Par conséquent, vous devez fournir un nom d'informations d'identification avec des informations d'identification valides pour stocker un objet dans un bucket public Oracle Cloud Infrastructure à l'aide de PUT_OBJECT.

Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

Procédure SYNC_EXTERNAL_PART_TABLE

Cette procédure simplifie la mise à jour d'une table partitionnée externe à partir de fichiers dans le cloud. Exécutez cette procédure chaque fois que de nouvelles partitions sont ajoutées ou lorsque des partitions sont supprimées de la source de la banque d'objets pour la table partitionnée externe.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la Table cible. La table cible doit être créée avant d'exécuter DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE.

schema_name

Nom du schéma dans lequel réside la table cible. La valeur par défaut est NULL, ce qui signifie que la table cible se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

update_columns

Les nouveaux fichiers peuvent apporter une modification au schéma. Les mises à jour prises en charge sont les suivantes : nouvelles colonnes, colonnes supprimées. Les mises à jour des colonnes existantes, par exemple une modification du type de données, génèrent des erreurs.

Valeur par défaut : False

Procédure VALIDATE_EXTERNAL_PART_TABLE

Cette procédure valide les fichiers source pour une table externe partitionnée, génère les informations de journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table externe dans une table badfile sur Autonomous Database. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

partition_name

Si elle est définie, seule une partition spécifique est validée. Si aucune valeur n'est indiquée, lisez toutes les partitions de manière séquentielle jusqu'à ce que rowcount soit atteint.

subpartition_name

Si elle est définie, seule une sous-partition spécifique est validée. Si aucune valeur n'est indiquée, la lecture de toutes les partitions ou sous-partitions externes est séquentielle jusqu'à ce que rowcount soit atteint.

schema_name

Nom du schéma dans lequel réside la table externe. La valeur par défaut est NULL, ce qui signifie que la table externe se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

rowcount

Nombre de lignes à analyser. La valeur par défaut est NULL, ce qui signifie que toutes les lignes des fichiers source sont analysées.

partition_key_validation

Pour usage interne uniquement. N'utilisez pas ce paramètre.

stop_on_error

Détermine si la validation doit s'arrêter lorsqu'une ligne est rejetée. La valeur par défaut est TRUE, ce qui signifie que la validation s'arrête à la première ligne rejetée. La définition de la valeur sur FALSE indique que la validation ne s'arrête pas à la première ligne rejetée et valide toutes les lignes jusqu'à la valeur indiquée pour le paramètre rowcount.

Procédure VALIDATE_EXTERNAL_TABLE

Cette procédure valide les fichiers source pour une table externe, génère des informations sur le journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table externe dans une table badfile sur Autonomous Database. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

schema_name

Nom du schéma dans lequel réside la table externe. La valeur par défaut est NULL, ce qui signifie que la table externe se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

rowcount

Nombre de lignes à analyser. La valeur par défaut est NULL, ce qui signifie que toutes les lignes des fichiers source sont analysées.

stop_on_error

Détermine si la validation doit s'arrêter lorsqu'une ligne est rejetée. La valeur par défaut est TRUE, ce qui signifie que la validation s'arrête à la première ligne rejetée. La définition de la valeur sur FALSE indique que la validation ne s'arrête pas à la première ligne rejetée et valide toutes les lignes jusqu'à la valeur indiquée pour le paramètre rowcount.

Si la table externe fait référence à des fichiers Avro, ORC ou Parquet, la validation s'arrête à la première ligne rejetée.

Lorsque la table externe indique que le paramètre format type est défini sur la valeur avro, orc ou parquet, le paramètre stop_on_error a toujours la valeur TRUE. Par conséquent, le fichier badfile de la table sera toujours vide pour une table externe faisant référence aux fichiers Avro, ORC ou Parquet.

Notes d'utilisation

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE fonctionne avec les tables externes partitionnées et les tables partitionnées hybrides. Cela permet de lire les données de toutes les partitions externes jusqu'à ce que rowcount soit atteint ou que stop_on_error s'applique. Vous n'avez pas le contrôle sur quelle partition, ou parties d'une partition, est lue dans quel ordre.

Procédure VALIDATE_HYBRID_PART_TABLE

Cette procédure valide les fichiers source pour la table partitionnée hybride, génère les informations relatives au journal et stocke les lignes qui ne correspondent pas aux options de format indiquées pour la table hybride dans une table badfile sur Autonomous Database. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

table_name

Nom de la table externe.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

partition_name

Si elle est définie, seule une partition spécifique est validée. Si aucune valeur n'est indiquée, la lecture de toutes les partitions externes est séquentielle jusqu'à ce que rowcount soit atteint.

subpartition_name

Si elle est définie, seule une sous-partition spécifique est validée. Si aucune valeur n'est indiquée, la lecture de toutes les partitions ou sous-partitions externes est séquentielle jusqu'à ce que rowcount soit atteint.

schema_name

Nom du schéma dans lequel réside la table externe. La valeur par défaut est NULL, ce qui signifie que la table externe se trouve dans le même schéma que l'utilisateur qui exécute la procédure.

rowcount

Nombre de lignes à analyser. La valeur par défaut est NULL, ce qui signifie que toutes les lignes des fichiers source sont analysées.

partition_key_validation

Pour usage interne uniquement. N'utilisez pas ce paramètre.

stop_on_error

Détermine si la validation doit s'arrêter lorsqu'une ligne est rejetée. La valeur par défaut est TRUE, ce qui signifie que la validation s'arrête à la première ligne rejetée. La définition de la valeur sur FALSE indique que la validation ne s'arrête pas à la première ligne rejetée et valide toutes les lignes jusqu'à la valeur indiquée pour le paramètre rowcount.

DBMS_CLOUD pour la gestion de fichiers en masse

Sous-programmes pour les opérations de fichier en masse dans le package DBMS_CLOUD.

Sous-programme Description
Procédure BULK_COPY

Cette procédure copie les fichiers d'un bucket Cloud Object Storage vers un autre.

Procédure BULK_DELETE

La procédure supprime des fichiers du bucket ou du dossier Cloud Object Storage.

Procédure BULK_DOWNLOAD

Cette procédure télécharge des fichiers à partir du bucket de banque d'objets cloud vers un répertoire dans Autonomous Database.

Procédure BULK_MOVE

Cette procédure déplace les fichiers d'un bucket Cloud Object Storage vers un autre.

Procédure BULK_UPLOAD

Cette procédure télécharge des fichiers à partir d'un répertoire dans Autonomous Database vers Cloud Object Storage.

Procédure BULK_COPY

Cette procédure copie en masse des fichiers d'un bucket Cloud Object Storage vers un autre. La forme surchargée permet d'utiliser le paramètre operation_id.

Vous pouvez filtrer la liste des fichiers à supprimer à l'aide d'un modèle d'expression régulière compatible avec l'opérateur REGEXP_LIKE.

Le dossier ou le bucket source et cible peuvent se trouver dans le même fournisseur de banque d'objets cloud ou dans un autre fournisseur.

Lorsque la source et la cible se trouvent dans des banques d'objets distinctes ou ont des comptes différents avec le même fournisseur cloud, vous pouvez donner des noms d'informations d'identification distincts pour les emplacements source et cible.

Par défaut, le nom des informations d'identification source est également utilisé par l'emplacement cible.

Syntaxe

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

Paramètres

Paramètre Description

source_credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur source_credential_name, credential_name est défini sur NULL.

source_location_uri

Spécifie l'URI, qui pointe vers l'emplacement du dossier ou du bucket Object Storage source.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_location_uri

Indique l'URI du bucket ou dossier Object Storage cible dans lequel les fichiers doivent être copiés.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_credential_name

Nom des données d'identification permettant d'accéder à l'emplacement de stockage d'objet cloud cible.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur target_credential_name, target_location_uri est défini sur la valeur source_credential_name.

regex_filter

Spécifie l'expression REGEX pour filtrer les fichiers. Le modèle d'expression REGEX doit être compatible avec l'opérateur REGEXP_LIKE.

Si vous ne fournissez pas de valeur regex_filter, regex_filter est défini sur NULL.

Pour plus d'informations, reportez-vous à REGEXP_LIKE Condition.

format

Spécifie les options de configuration supplémentaires pour l'opération de fichier. Ces options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :
  • logretention : accepte une valeur entière qui détermine la durée en jours pendant laquelle la table de statut est conservée pour une opération en masse.

    La valeur par défaut est de 2 jours.

  • logprefix : accepte une valeur de chaîne qui détermine la chaîne de préfixe de nom de table de statut d'opération en masse.

    Le type d'opération est la valeur par défaut. Pour BULK_COPY, la valeur logprefix par défaut est COPYOBJ.

  • priority : accepte une valeur de chaîne qui détermine le nombre d'opérations de fichier exécutées simultanément.

    Une opération avec une priorité plus élevée consomme plus de ressources de base de données et doit être exécutée plus rapidement.

    Elle accepte les valeurs suivantes :

    • HIGH : détermine le nombre de fichiers parallèles gérés à l'aide du nombre d'ECPU de la base de données (nombre d'OCPU si la base de données utilise des OCPU)

    • MEDIUM : détermine le nombre de processus simultanés utilisant la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

    • LOW : traite les fichiers par ordre série.

    La valeur par défaut est MEDIUM.

    Le nombre maximal d'opérations de fichier simultanées est limité à 64.

Si vous ne fournissez pas de valeur format, format est défini sur NULL.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Notes d'utilisation

  • Une erreur est renvoyée lorsque les URI source et cible pointent vers le même bucket ou dossier Object Storage.

Exemple

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

Procédure BULK_DELETE

Cette procédure supprime en masse des fichiers du stockage d'objets cloud. La forme surchargée permet d'utiliser le paramètre operation_id. Vous pouvez filtrer la liste des fichiers à supprimer à l'aide d'un modèle d'expression régulière compatible avec l'opérateur REGEXP_LIKE.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur credential_name, credential_name est défini sur NULL.

location_uri

Spécifie un URI qui pointe vers un emplacement Object Storage dans Autonomous Database.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

regex_filter

Spécifie l'expression REGEX pour filtrer les fichiers. Le modèle d'expression REGEX doit être compatible avec l'opérateur REGEXP_LIKE.

Si vous ne fournissez pas de valeur regex_filter, regex_filter est défini sur NULL.

Pour plus d'informations, reportez-vous à REGEXP_LIKE Condition.

format

Spécifie les options de configuration supplémentaires pour l'opération de fichier. Ces options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :
  • logretention : accepte une valeur entière qui détermine la durée en jours pendant laquelle la table de statut est conservée pour une opération en masse.

    La valeur par défaut est de 2 jours.

  • logprefix : accepte une valeur de chaîne qui détermine la chaîne de préfixe de nom de table de statut d'opération en masse.

    Le type d'opération est la valeur par défaut. Pour BULK_DELETE, la valeur logprefix par défaut est DELETE.

  • priority : accepte une valeur de chaîne qui détermine le nombre d'opérations de fichier exécutées simultanément.

    Une opération avec une priorité plus élevée consomme plus de ressources de base de données et est terminée plus tôt.

    Elle accepte les valeurs suivantes :

    • HIGH : détermine le nombre de fichiers parallèles gérés à l'aide du nombre d'ECPU de la base de données (nombre d'OCPU si la base de données utilise des OCPU).

    • MEDIUM : détermine le nombre de processus simultanés utilisant la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

    • LOW : traite les fichiers par ordre série.

    La valeur par défaut est MEDIUM.

    Le nombre maximal d'opérations de fichier simultanées est limité à 64.

Si vous ne fournissez pas de valeur format, format est défini sur NULL.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Exemple

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

Procédure BULK_DOWNLOAD

Cette procédure télécharge des fichiers dans un répertoire Autonomous Database à partir de Cloud Object Storage. La forme surchargée permet d'utiliser le paramètre operation_id. Vous pouvez filtrer la liste des fichiers à télécharger à l'aide d'un modèle d'expression régulière compatible avec l'opérateur REGEXP_LIKE.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur credential_name, credential_name est défini sur NULL.

location_uri

Spécifie un URI qui pointe vers un emplacement Object Storage dans Autonomous Database.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

directory_name

Nom du répertoire sur la base de données Autonomous Database à partir duquel télécharger les fichiers.

Ce paramètre est obligatoire.

regex_filter

Spécifie l'expression REGEX pour filtrer les fichiers. Le modèle d'expression REGEX doit être compatible avec l'opérateur REGEXP_LIKE.

Si vous ne fournissez pas de valeur regex_filter, regex_filter est défini sur NULL.

Pour plus d'informations, reportez-vous à REGEXP_LIKE Condition.

format

Spécifie les options de configuration supplémentaires pour l'opération de fichier. Ces options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :
  • logretention : accepte une valeur entière qui détermine la durée en jours pendant laquelle la table de statut est conservée pour une opération en masse.

    La valeur par défaut est de 2 jours.

  • logprefix : accepte une valeur de chaîne qui détermine la chaîne de préfixe de nom de table de statut d'opération en masse. Pour BULK_DOWNLOAD, la valeur logprefix par défaut est DOWNLOAD.

    Le type d'opération est la valeur par défaut.

  • priority : accepte une valeur de chaîne qui détermine le nombre d'opérations de fichier exécutées simultanément.

    Une opération avec une priorité plus élevée consomme plus de ressources de base de données et est terminée plus tôt.

    Elle accepte les valeurs suivantes :

    • HIGH : détermine le nombre de fichiers parallèles gérés à l'aide du nombre d'ECPU de la base de données (nombre d'OCPU si la base de données utilise des OCPU).

    • MEDIUM : détermine le nombre de processus simultanés utilisant la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

    • LOW : traite les fichiers par ordre série.

    La valeur par défaut est MEDIUM.

    Le nombre maximal d'opérations de fichier simultanées est limité à 64.

Si vous ne fournissez pas de valeur format, format est défini sur NULL.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Exemple

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

Procédure BULK_MOVE

Cette procédure déplace en masse des fichiers d'un bucket ou dossier Cloud Object Storage vers un autre. La forme surchargée permet d'utiliser le paramètre operation_id.

Vous pouvez filtrer la liste des fichiers à supprimer à l'aide d'un modèle d'expression régulière compatible avec l'opérateur REGEXP_LIKE.

Le dossier ou le bucket source et cible peuvent se trouver dans le même fournisseur de banque d'objets cloud ou dans un autre fournisseur.

Lorsque la source et la cible se trouvent dans des banques d'objets distinctes ou ont des comptes différents avec le même fournisseur cloud, vous pouvez donner des noms d'informations d'identification distincts pour les emplacements source et cible.

Par défaut, le nom des informations d'identification source est également utilisé par l'emplacement cible lorsque le nom des informations d'identification cible n'est pas fourni.

La première étape du déplacement des fichiers consiste à les copier vers l'emplacement cible, puis à supprimer les fichiers source, une fois qu'ils ont été copiés.

L'objet est renommé et non déplacé si la banque d'objets autorise les opérations de changement de nom entre les emplacements source et cible.

Syntaxe

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

Paramètres

Paramètre Description

source_credential_name

Nom des infos d'identification permettant d'accéder au stockage d'objet cloud source.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur source_credential_name, credential_name est défini sur NULL.

source_location_uri

Spécifie l'URI, qui pointe vers l'emplacement du dossier ou du bucket Object Storage source.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_location_uri

Indique l'URI du bucket ou dossier Object Storage cible, où les fichiers doivent être déplacés.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

target_credential_name

Nom des données d'identification permettant d'accéder à l'emplacement de stockage d'objet cloud cible.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur target_credential_name, target_location_uri est défini sur la valeur source_credential_name.

regex_filter

Spécifie l'expression REGEX pour filtrer les fichiers. Le modèle d'expression REGEX doit être compatible avec l'opérateur REGEXP_LIKE.

Si vous ne fournissez pas de valeur regex_filter, regex_filter est défini sur NULL.

Pour plus d'informations, reportez-vous à REGEXP_LIKE Condition.

format

Spécifie les options de configuration supplémentaires pour l'opération de fichier. Ces options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :
  • logretention : accepte une valeur entière qui détermine la durée en jours pendant laquelle la table de statut est conservée pour une opération en masse.

    La valeur par défaut est de 2 jours.

  • logprefix : accepte une valeur de chaîne qui détermine la chaîne de préfixe de nom de table de statut d'opération en masse.

    Le type d'opération est la valeur par défaut. Pour BULK_MOVE, la valeur logprefix par défaut est MOVE.

  • priority : accepte une valeur de chaîne qui détermine le nombre d'opérations de fichier exécutées simultanément.

    Une opération avec une priorité plus élevée consomme plus de ressources de base de données et est terminée plus tôt.

    Elle accepte les valeurs suivantes :

    • HIGH : détermine le nombre de fichiers parallèles gérés à l'aide du nombre d'ECPU de la base de données (nombre d'OCPU si la base de données utilise des OCPU).

    • MEDIUM : détermine le nombre de processus simultanés utilisant la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

    • LOW : traite les fichiers par ordre série.

    La valeur par défaut est MEDIUM.

    Le nombre maximal d'opérations de fichier simultanées est limité à 64.

Si vous ne fournissez pas de valeur format, format est défini sur NULL.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Exemple

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

Une erreur est renvoyée lorsque les URI source et cible pointent vers le même bucket ou dossier Object Storage.

Procédure BULK_UPLOAD

Cette procédure copie les fichiers dans Cloud Object Storage à partir d'un répertoire Autonomous Database. La forme surchargée permet d'utiliser le paramètre operation_id.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification permettant d'accéder au stockage d'objet cloud.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

Si vous ne fournissez pas de valeur credential_name, credential_name est défini sur NULL.

location_uri

Spécifie l'URI, qui pointe vers un emplacement Object Storage pour télécharger des fichiers.

Ce paramètre est obligatoire.

Le format des URI dépend du service Cloud Object Storage. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD URI Formats.

directory_name

Nom du répertoire sur la base de données Autonomous Database à partir duquel vous téléchargez des fichiers.

Ce paramètre est obligatoire.

regex_filter

Spécifie l'expression REGEX pour filtrer les fichiers. Le modèle d'expression REGEX doit être compatible avec l'opérateur REGEXP_LIKE.

Si vous ne fournissez pas de valeur regex_filter, regex_filter est défini sur NULL.

Pour plus d'informations, reportez-vous à REGEXP_LIKE Condition.

format

Spécifie les options de configuration supplémentaires pour l'opération de fichier. Ces options sont indiquées sous forme de chaîne JSON.

Les options de format prises en charge sont les suivantes :
  • logretention : accepte une valeur entière qui détermine la durée en jours pendant laquelle la table de statut est conservée pour une opération en masse.

    La valeur par défaut est de 2 jours.

  • logprefix : accepte une valeur de chaîne qui détermine la chaîne de préfixe de nom de table de statut d'opération en masse.

    Le type d'opération est la valeur par défaut. Pour BULK_UPLOAD, la valeur logprefix par défaut est UPLOAD.

  • priority : accepte une valeur de chaîne qui détermine le nombre d'opérations de fichier exécutées simultanément.

    Une opération avec une priorité plus élevée consomme plus de ressources de base de données et est terminée plus tôt.

    Elle accepte les valeurs suivantes :

    • HIGH : détermine le nombre de fichiers parallèles gérés à l'aide du nombre d'ECPU de la base de données (nombre d'OCPU si la base de données utilise des OCPU).

    • MEDIUM : détermine le nombre de processus simultanés utilisant la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

    • LOW : traite les fichiers par ordre série.

    La valeur par défaut est MEDIUM.

    Le nombre maximal d'opérations de fichier simultanées est limité à 64.

Si vous ne fournissez pas de valeur format, format est défini sur NULL.

operation_id

Utilisez ce paramètre pour suivre la progression et le statut final de l'opération de chargement sous l'ID correspondant dans la vue USER_LOAD_OPERATIONS.

Exemple

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 REST DBMS_CLOUD

Cette section traite des API REST DBMS_CLOUD fournies avec Autonomous Database.

API REST Description

Fonction GET_RESPONSE_HEADERS

Cette fonction renvoie les en-têtes de réponse HTTP en tant que données JSON dans un objet JSON dans Autonomous Database.

Fonction GET_RESPONSE_RAW

Cette fonction renvoie la réponse HTTP au format RAW Autonomous Database. Ceci est utile si la réponse HTTP doit être au format binaire.

Fonction GET_RESPONSE_STATUS_CODE

Cette fonction renvoie le code de statut de réponse HTTP sous forme d'entier dans Autonomous Database. Le code statut permet d'identifier si la demande a réussi.

Fonction GET_RESPONSE_TEXT

Cette fonction renvoie la réponse HTTP au format TEXT (VARCHAR2 ou CLOB) dans Autonomous Database. Habituellement, la plupart des API REST cloud renvoient une réponse JSON au format texte. Cette fonction est utile si vous prévoyez que la réponse HTTP est au format texte.

Fonction GET_API_RESULT_CACHE_SIZE

Cette fonction renvoie la taille de cache des résultats configurée.

SEND_REQUEST Fonction et procédure

Cette fonction démarre une demande HTTP, obtient la réponse et termine la réponse dans Autonomous Database. Cette fonction fournit un workflow pour l'envoi d'une demande d'API REST cloud avec des arguments et un code de réponse de retour et une charge utile.

Procédure SET_API_RESULT_CACHE_SIZE

Cette procédure définit la taille maximale du cache pour la session en cours.

DBMS_CLOUD Présentation de l'API REST

Lorsque vous utilisez PL/SQL dans votre application et que vous devez appeler des API REST cloud, vous pouvez utiliser DBMS_CLOUD.SEND_REQUEST pour envoyer les demandes d'API REST.

Les fonctions d'API REST DBMS_CLOUD vous permettent d'effectuer des demandes HTTP à l'aide de DBMS_CLOUD.SEND_REQUEST, d'obtenir et d'enregistrer des résultats. Ces fonctions fournissent une API générique qui vous permet d'appeler une API REST avec les services cloud pris en charge suivants :

DBMS_CLOUD Constantes d'API REST

Décrit les constantes DBMS_CLOUD pour effectuer des demandes HTTP à l'aide de DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD prend en charge les méthodes HTTP GET, PUT, POST, HEAD et DELETE. La méthode d'API REST à utiliser pour une demande HTTP est généralement documentée dans la documentation de l'API REST cloud.

Nom Type Valeur
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 Cache de résultats d'API REST

Vous pouvez enregistrer les résultats de l'API REST DBMS_CLOUD lorsque vous définissez le paramètre cache sur True avec DBMS_CLOUD.SEND_REQUEST. La vue SESSION_CLOUD_API_RESULTS décrit les colonnes que vous pouvez utiliser lorsque les résultats de l'API REST sont enregistrés.

Par défaut, les appels d'API REST DBMS_CLOUD n'enregistrent pas les résultats de la session. Dans ce cas, vous utilisez la fonction DBMS_CLOUD.SEND_REQUEST pour renvoyer des résultats.

Lorsque vous utilisez DBMS_CLOUD.SEND_REQUEST et définissez le paramètre cache sur TRUE, les résultats sont enregistrés et vous pouvez visualiser les résultats passés dans la vue SESSION_CLOUD_API_RESULTS. L'enregistrement et l'interrogation des résultats historiques des demandes d'API REST DBMS_CLOUD peuvent vous aider lorsque vous avez besoin d'utiliser les résultats précédents dans vos applications.

Par exemple, pour interroger les résultats récents de l'API REST DBMS_CLOUD, utilisez la vue SESSION_CLOUD_API_RESULTS :

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

Lorsque vous enregistrez les résultats de l'API REST DBMS_CLOUD avec DBMS_CLOUD.SEND_REQUEST, les données enregistrées ne sont disponibles que dans la même session (connexion). Une fois la session terminée, les données enregistrées ne sont plus disponibles.

Utilisez DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE et DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE pour visualiser et définir la taille de cache de l'API REST DBMS_CLOUD, et pour désactiver la mise en cache.

Paramètre cache_scope des résultats d'API REST DBMS_CLOUD

Lorsque vous enregistrez les résultats de l'API REST DBMS_CLOUD avec DBMS_CLOUD.SEND_REQUEST, l'accès aux résultats dans SESSION_CLOUD_API_RESULTS est fourni en fonction de la valeur de cache_scope.

Par défaut, cache_scope est 'PRIVATE' et seul l'utilisateur en cours de la session peut accéder aux résultats. Si vous définissez cache_scope sur 'PUBLIC', tous les utilisateurs de session peuvent accéder aux résultats. La valeur par défaut de cache_scope indique que chaque utilisateur ne peut voir que les résultats de l'API REST DBMS_CLOUD.SEND_REQUEST générés par les procédures qu'il appelle avec les droits de l'appelant. Lorsque vous appelez DBMS_CLOUD.SEND_REQUEST dans une session, trois possibilités déterminent si l'utilisateur en cours peut voir les résultats dans le cache, en fonction de la valeur cache_scope :

  • Vous exécutez directement DBMS_CLOUD.SEND_REQUEST en tant qu'instruction de niveau supérieur. Les résultats de l'appel vers DBMS_CLOUD.SEND_REQUEST et de l'API REST sont enregistrés avec le même nom utilisateur. Dans ce cas, vous avez accès à tous les résultats avec la valeur par défaut, 'PRIVATE', définie pour cache_scope.

  • Vous écrivez la procédure avec droits d'un appelant wrapper. En tant qu'utilisateur en cours, votre appel avec DBMS_CLOUD.SEND_REQUEST appelle la procédure et les résultats de l'API REST sont enregistrés avec le même nom utilisateur. Dans ce cas, et vous avez accès à tous les résultats avec la valeur par défaut, 'PRIVATE', définie pour cache_scope.

  • Vous écrivez la procédure de droits d'un créateur de wrapper et celle-ci appartient à un autre utilisateur. Lorsque vous appelez DBMS_CLOUD.SEND_REQUEST au sein de la procédure, les résultats sont enregistrés avec le nom utilisateur du propriétaire de la procédure.

    Dans ce cas, un autre utilisateur de droits de créateur appelle DBMS_CLOUD.SEND_REQUEST et les résultats de l'API REST sont enregistrés avec le propriétaire de cette procédure de créateur. Dans ce cas, par défaut, lorsque cache_scope est PRIVATE', la session de l'appelant ne peut pas voir les résultats.

    Si le propriétaire de la procédure du créateur veut que les résultats soient disponibles pour tout utilisateur de session appelant, il doit définir cache_scope sur 'PUBLIC' dans DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD Vue SESSION_CLOUD_API_RESULTS de l'API REST

Vous pouvez enregistrer les résultats de l'API REST DBMS_CLOUD lorsque vous définissez le paramètre cache sur True avec DBMS_CLOUD.SEND_REQUEST. La vue SESSION_CLOUD_API_RESULTS décrit les colonnes que vous pouvez utiliser lorsque les résultats de l'API REST sont enregistrés.

La vue SESSION_CLOUD_API_RESULTS est la vue créée si vous mettez en cache les résultats avec DBMS_CLOUD.SEND_REQUEST. Vous pouvez interroger les résultats historiques qui appartiennent à votre session utilisateur. Lorsque la session se termine, les données dans SESSION_CLOUD_API_RESULTS sont purgées.

Colonne Description
URI URL de demande d'API REST DBMS_CLOUD
TIMESTAMP Horodatage de la réponse de l'API REST DBMS_CLOUD
CLOUD_TYPE Type de cloud d'API REST DBMS_CLOUD, tel qu'Oracle Cloud Infrastructure, AMAZON_S3 et AZURE_BLOB
REQUEST_METHOD Méthode de demande d'API REST DBMS_CLOUD, telle que GET, PUT et HEAD
REQUEST_HEADERS En-têtes de demande d'API REST DBMS_CLOUD
REQUEST_BODY_TEXT Corps de la demande d'API REST DBMS_CLOUD dans CLOB
RESPONSE_STATUS_CODE Code de statut de réponse de l'API REST DBMS_CLOUD, tel que 200(OK) et 404(Not Found)
RESPONSE_HEADERS En-têtes de réponse d'API REST DBMS_CLOUD
RESPONSE_BODY_TEXT Corps de réponse de l'API REST DBMS_CLOUD dans CLOB
SCOPE

cache_scope défini par DBMS_CLOUD.SEND_REQUEST. Les valeurs valides sont PUBLIC ou PRIVATE.

Fonction GET_RESPONSE_HEADERS

Cette fonction renvoie les en-têtes de réponse HTTP en tant que données JSON dans un objet JSON.

Syntaxe

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

Paramètres

Paramètre Description
resp

Type de réponse HTTP renvoyé par DBMS_CLOUD.SEND_REQUEST.

Exceptions

Exception Erreur Description
invalid_response ORA-20025

Objet de type de réponse non valide transmis à DBMS_CLOUD.GET_RESPONSE_HEADERS.

Fonction GET_RESPONSE_RAW

Cette fonction renvoie la réponse HTTP au format RAW. Ceci est utile si la réponse HTTP doit être au format binaire.

Syntaxe

DBMS_CLOUD.GET_RESPONSE_RAW(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN BLOB;

Paramètres

Paramètre Description
resp

Type de réponse HTTP renvoyé par DBMS_CLOUD.SEND_REQUEST.

Exceptions

Exception Erreur Description
invalid_response ORA-20025

Objet de type de réponse non valide transmis à DBMS_CLOUD.GET_RESPONSE_RAW.

Fonction GET_RESPONSE_STATUS_CODE

Cette fonction renvoie le code de statut de réponse HTTP sous forme d'entier. Le code statut permet d'identifier si la demande a réussi.

Syntaxe

DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN PLS_INTEGER;

Paramètres

Paramètre Description
resp

Type de réponse HTTP renvoyé par DBMS_CLOUD.SEND_REQUEST.

Exceptions

Exception Erreur Description
invalid_response ORA-20025

Objet de type de réponse non valide transmis à DBMS_CLOUD.GET_RESPONSE_STATUS_CODE.

Fonction GET_RESPONSE_TEXT

Cette fonction renvoie la réponse HTTP au format TEXT (VARCHAR2 ou CLOB). Habituellement, la plupart des API REST cloud renvoient une réponse JSON au format texte. Cette fonction est utile si vous prévoyez que la réponse HTTP est au format texte.

Syntaxe

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

Paramètres

Paramètre Description
resp

Type de réponse HTTP renvoyé par DBMS_CLOUD.SEND_REQUEST.

Exceptions

Exception Erreur Description
invalid_response ORA-20025

Objet de type de réponse non valide transmis à DBMS_CLOUD.GET_RESPONSE_TEXT.

Fonction GET_API_RESULT_CACHE_SIZE

Cette fonction renvoie la taille de cache des résultats configurée. La valeur de taille de cache s'applique uniquement à la session en cours.

Syntaxe

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST Fonction et procédure

Cette fonction et cette procédure démarrent une demande HTTP, obtiennent la réponse et mettent fin à la réponse. Cette fonction fournit un workflow pour l'envoi d'une demande d'API REST cloud avec des arguments et la fonction renvoie un code de réponse et une charge utile. Si vous utilisez la procédure, vous pouvez afficher les résultats et les détails de réponse à partir des résultats enregistrés avec la vue SESSION_CLOUD_API_RESULTS.

Syntaxe

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

Paramètres

Paramètre Description

credential_name

Nom des informations d'identification pour l'authentification auprès de l'API native cloud correspondante.

Vous pouvez utiliser 'OCI$RESOURCE_PRINCIPAL' en tant que credential_name lorsque le principal de ressource est activé. Pour plus d'informations, reportez-vous à ENABLE_RESOURCE_PRINCIPAL.

uri

URI HTTP pour effectuer la demande.

method

Méthode de demande HTTP : GET, PUT, POST, HEAD, DELETE. Utilisez la constante de package DBMS_CLOUD pour spécifier la méthode.

Pour plus d'informations, reportez-vous à DBMS_CLOUD Constantes d'API REST.

headers

En-têtes de demande HTTP pour l'API native cloud correspondante au format JSON. Les en-têtes d'authentification sont définis automatiquement et ne transmettent que des en-têtes personnalisés.

async_request_url

URL de demande asynchrone.

Pour obtenir l'URL, sélectionnez l'API de demande dans la liste des API (reportez-vous à https://docs.cloud.oracle.com/en-us/iaas/api/). Accédez ensuite à l'API de votre demande dans le panneau de gauche. Par exemple, API des services de base de données → Autonomous Database → StopAutonomousDatabase. Cette page affiche le répertoire de base de l'API (et l'adresse de base). Ajoutez ensuite l'adresse de base au chemin relatif obtenu pour le lien WorkRequest de la demande de travail.

wait_for_states

Le statut Attendre pour les états est de type DBMS_CLOUD_TYPES.wait_for_states_t. Les valeurs suivantes sont valides pour les états attendus : ACTIVE, CANCELED, COMPLETED, DELETED, FAILED et SUCCEEDED.

Plusieurs états sont autorisés pour wait_for_states. La valeur par défaut de wait_for_states est d'attendre l'un des états attendus : 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

timeout

Indique le délai d'expiration, en secondes, des demandes asynchrones avec les paramètres async_request_url et wait_for_states.

La valeur par défaut est 0. Indique qu'il faut attendre la fin de la demande sans délai d'attente.

cache

Si TRUE indique que la demande doit être mise en cache dans le cache d'API de résultat REST.

La valeur par défaut est FALSE, ce qui signifie que les demandes d'API REST ne sont pas mises en cache.

cache_scope

Indique si tout le monde peut accéder à ce cache de résultats de demande. Valeurs valides : "PRIVATE" et "PUBLIC". La valeur par défaut est "PRIVATE".

body

Corps de demande HTTP pour les demandes PUT et POST.

Exceptions

Exception Erreur Description
invalid_req_method ORA-20023

La méthode de demande transmise à DBMS_CLOUD.SEND_REQUEST n'est pas valide.

invalid_req_header ORA-20024

Les en-têtes de demande transmis à DBMS_CLOUD.SEND_REQUEST ne sont pas au format JSON valide.

Notes d'utilisation

  • Si vous utilisez Oracle Cloud Infrastructure, vous devez utiliser une valeur d'informations d'identification basée sur une clé de signature pour credential_name. Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

  • Les paramètres facultatifs async_request_url, wait_for_states et timeout vous permettent de gérer les demandes à longue durée d'exécution. A l'aide de ce formulaire asynchrone de send_request, la fonction attend le statut de fin indiqué dans wait_for_states avant de renvoyer. Avec ces paramètres dans la demande d'envoi, vous transmettez les états de retour attendus dans le paramètre wait_for_states, et vous utilisez le paramètre async_request_url pour indiquer une demande de travail associée, la demande ne revient pas immédiatement. Au lieu de cela, la demande sonde async_request_url jusqu'à ce que l'état de retour soit l'un des états attendus ou que timeout soit dépassé (timeout est facultatif). Si aucune valeur timeout n'est indiquée, la demande attend qu'un état trouvé dans wait_for_states se produise.

Procédure SET_API_RESULT_CACHE_SIZE

Cette procédure définit la taille maximale du cache pour la session en cours. La valeur de taille de cache s'applique uniquement à la session en cours.

Syntaxe

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

Paramètres

Paramètre Description
cache_size

Définissez la taille maximale du cache sur la valeur indiquée cache_size. Si la nouvelle taille de cache maximale est inférieure à la taille de cache actuelle, les enregistrements plus anciens sont supprimés jusqu'à ce que le nombre de lignes soit égal à la taille de cache maximale indiquée. La valeur maximale est 10000.

Si la taille du cache est définie sur 0, la mise en cache est désactivée dans la session.

La taille de cache par défaut est 10.

Exceptions

Exception Erreur Description
invalid API result cache size ORA-20032

La valeur minimale est 0 et la valeur maximale est 10000. Cette exception s'affiche lorsque la valeur d'entrée est inférieure à 0 ou supérieure à 10000.

Exemple

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

DBMS_CLOUD Exemples d'API REST

Affiche des exemples utilisant DBMS_CLOUD.SEND_REQUEST pour créer et supprimer un bucket Oracle Cloud Infrastructure Object Storage, ainsi qu'un exemple pour répertorier tous les compartiments de la location.

Remarque

Ces exemples présentent les API de demande Oracle Cloud Infrastructure et exigent que vous utilisiez des informations d'identification basées sur une clé de signature pour credential_name. Les informations d'identification basées sur la clé de signature Oracle Cloud Infrastructure incluent les arguments private_key et fingerprint.

Par exemple :

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;
/
Pour plus d'informations sur DBMS_CLOUD.CREATE_CREDENTIAL, reportez-vous à Procédure CREATE_CREDENTIAL.

Exemple de création de bucket

Affiche un exemple utilisant DBMS_CLOUD.SEND_REQUEST avec la méthode HTTP POST pour créer un bucket de banque d'objets nommé bucketname.

Pour plus de détails sur l'API de service Oracle Cloud Infrastructure Object Storage de cet exemple, reportez-vous à CreateBucket.

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

Notes :

  • Dans cet exemple, namespace-string est l'espace de noms d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

  • Où : region est une région d'adresse. Pour plus d'informations, reportez-vous à la référence d'API Object Storage dans Adresses et référence d'API. Par exemple, où region est : us-phoenix-1.

Exemple de suppression de bucket

Affiche un exemple utilisant DBMS_CLOUD.SEND_REQUEST avec la méthode HTTP DELETE pour supprimer un bucket de banque d'objets nommé bucketname.

Pour plus de détails sur l'API de service Oracle Cloud Infrastructure Object Storage de cet exemple, reportez-vous à DeleteBucket.

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

Notes :

  • Dans cet exemple, namespace-string est l'espace de noms d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

  • Où : region est une région d'adresse. Pour plus d'informations, reportez-vous à la référence d'API Object Storage dans Adresses et référence d'API. Par exemple, où region est : us-phoenix-1.

Exemple de liste de compartiments

Affiche un exemple utilisant DBMS_CLOUD.SEND_REQUEST avec la méthode HTTP GET pour répertorier tous les compartiments de la location (compartiment racine). Cet exemple montre comment transmettre des en-têtes de demande dans DBMS_CLOUD.SEND_REQUEST.

Pour plus de détails sur l'API de service Oracle Cloud Infrastructure Identity and Access Management pour cet exemple, reportez-vous à ListCompartments.

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

Où : region est une région d'adresse. Pour plus d'informations, reportez-vous à la référence d'API Identity and Access Management (IAM) dans Adresses et référence d'API. Par exemple, où region est : uk-london-1.

Exemple de demande asynchrone

Affiche un exemple utilisant DBMS_CLOUD.SEND_REQUEST avec la méthode HTTP POST pour effectuer l'opération d'arrêt Autonomous Database et attendre le statut. Cet exemple montre comment utiliser DBMS_CLOUD.SEND_REQUEST avec les paramètres async_request_url, wait_for_states et 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;
/

Où : region est une région d'adresse. Pour plus d'informations, reportez-vous à la référence d'API Identity and Access Management (IAM) dans Adresses et référence d'API. Par exemple, où region est : uk-london-1.

ocid est l'identificateur de ressource Oracle Cloud Infrastructure. Pour plus d'informations, reportez-vous à Identificateurs de ressource.



Légende de la note de bas de page

Note de bas de page 3 : La prise en charge des appels d'API REST Azure Cloud est limitée au domaine "blob.windows.net".