DBMS_CLOUD - Unterprogramme und REST-APIs

In diesem Abschnitt werden die DBMS_CLOUD-Unterprogramme und REST-APIs behandelt, die mit Autonomous Database bereitgestellt werden.

Hinweis

Um DBMS_CLOUD-Unterprogramme mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer EXECUTE-Berechtigungen erteilen. Führen Sie den folgenden Befehl als ADMIN aus, um adb_user Berechtigungen zu erteilen:
GRANT EXECUTE ON DBMS_CLOUD TO adb_user;

Das Package DBMS_CLOUD besteht aus:

DBMS_CLOUD für Zugriffsverwaltung

Die Unterprogramme für die Zugangsdatenverwaltung im Package DBMS_CLOUD, einschließlich Erstellen, Löschen und Aktualisieren von Zugangsdaten.

Unterprogramm Beschreibung

Prozedur CREATE_CREDENTIAL

Diese Prozedur speichert Zugangsdaten für Cloud-Services in Autonomous Database.

Prozedur DROP_CREDENTIAL

Diese Prozedur entfernt vorhandene Zugangsdaten aus Autonomous Database.

Prozedur REFRESH_VAULT_CREDENTIAL

Mit dieser Prozedur wird das Vault Secret einer Vault-Secret-Zugangsdaten sofort aktualisiert, um die neueste Version des Vault Secrets für die angegebene credential_name in Autonomous Database abzurufen.

Prozedur UPDATE_CREDENTIAL

Diese Prozedur aktualisiert Zugangsdatenattribute für Cloud-Services in Autonomous Database.

Prozedur CREATE_CREDENTIAL

Diese Prozedur speichert Zugangsdaten für Cloud-Services in Autonomous Database.

Verwenden Sie gespeicherte Zugangsdaten für den Zugriff auf den Cloud-Service zum Laden von Daten, zum Abfragen externer Daten in der Cloud oder für andere Fälle, wenn Sie DBMS_CLOUD-Prozeduren mit einem Parameter credential_name verwenden. Diese Prozedur ist überladen:

  • Verwenden Sie die Oracle Cloud Infrastructure-bezogenen Parameter, wie user_ocid, tenancy_ocid, private_key und fingerprint nur, wenn Sie die Oracle Cloud Infrastructure-Signaturschlüsselauthentifizierung verwenden.

  • Verwenden Sie den Parameter params für eine der folgenden Optionen:

    • Zugangsdaten für Amazon-Ressourcennamen (ARNs)

    • Google Analytics oder Google BigQuery-Zugangsdaten

    • Vault-Secret-Zugangsdaten zur Verwendung mit einem unterstützten Vault:

      • Oracle Cloud Infrastructure Vault
      • Azure Key Vault
      • AWS Secrets Manager
      • GCP-Secret Manager

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der zu speichernden Zugangsdaten. Der Parameter credential_name muss den Benennungskonventionen von Oracle-Objekten entsprechen. Der Parameter credential_name kann als ID ohne Anführungszeichen oder als ID in Anführungszeichen definiert werden. Weitere Informationen finden Sie unter Benennungsregeln für Datenbankobjekte.

username

Mit den Argumenten username und password werden Ihre Zugangsdaten für Cloud-Services angegeben. In den Nutzungshinweisen werden die Angaben für username und password für verschiedene Cloud-Services beschrieben.

password

Mit den Argumenten username und password werden Ihre Zugangsdaten für Cloud-Services angegeben.

comments

Gibt Kommentartext für die Zugangsdaten an. Dieses Feld kann nützlich sein, um Zugangsdaten zu beschreiben und zu unterscheiden.

Die maximale Kommentarlänge beträgt 3800 Zeichen.

user_ocid

Gibt die OCID des Benutzers an. Weitere Einzelheiten zum Abrufen der OCID des Benutzers finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.

tenancy_ocid

Gibt die OCID des Mandanten an. Weitere Einzelheiten zum Abrufen der OCID des Mandanten finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.

private_key

Gibt den generierten Private Key an. Mit einer Passphrase generierte Private Keys werden nicht unterstützt. Sie müssen den Private Key ohne Passphrase generieren. Weitere Einzelheiten zum Generieren eines Schlüsselpaares im PEM-Format finden Sie unter So generieren Sie einen API-Signaturschlüssel.

fingerprint

Gibt einen Fingerprint an. Nachdem ein generierter Public Key in den Account des Benutzers hochgeladen wurde, wird der Fingerprint in der Konsole angezeigt. Verwenden Sie den angezeigten Fingerprint für dieses Argument. Weitere Einzelheiten finden Sie unter So rufen Sie den Fingerprint des Schlüssels ab und So generieren Sie einen API-Signaturschlüssel.

params

Gibt Zugangsdatenparameter für einen der folgenden Parameter an:

  • Zugangsdaten für Amazon-Ressourcennamen (ARNs)

  • Google Analytics oder Google BigQuery-Zugangsdaten

  • Vault-Secret-Zugangsdaten zur Verwendung mit Zugangsdaten vom Typ Benutzername/Kennwort, in denen Sie das Kennwort in einem unterstützten Vault speichern:

    • Oracle Cloud Infrastructure Vault

    • Azure Key Vault

    • AWS Secrets Manager

    • GCP-Secret Manager

    Um Vault-Secret-Zugangsdaten zu erstellen, benötigen Sie die Berechtigung EXECUTE für das Package DBMS_CLOUD.

Hinweise zur Verwendung

  • Dieser Vorgang speichert die Zugangsdaten in einem verschlüsselten Format in der Datenbank.

  • Sie können die Zugangsdaten in Ihrem Schema anzeigen, indem Sie die Tabelle user_credentials abfragen.

  • Sie können die Kommentare zu den Zugangsdaten in Ihrem Schema anzeigen, indem sie die Tabelle user_credentials abfragen. Beispiel:

    SELECT comments FROM user_credentials
            WHERE credential_name = 'MY_CRED';
  • Der ADMIN-Benutzer kann alle Zugangsdaten anzeigen, indem er die Tabelle dba_credentials abfragt.

  • Sie müssen Zugangsdaten nur einmal erstellen, es sei denn, Ihre Zugangsdaten für den Cloud-Service ändern sich. Nachdem Sie die Zugangsdaten gespeichert hat, können Sie denselben Zugangsdatennamen für DBMS_CLOUD-Prozeduren verwenden, die einen credential_name-Parameter erfordern.

  • Diese Prozedur ist überladen. Wenn Sie eines der schlüsselbasierten Authentifizierungsattribute user_ocid, tenancy_ocid, private_key oder fingerprint angeben, wird davon ausgegangen, dass der Aufruf auf einem Oracle Cloud Infrastructure-Signaturschlüssel basierende Zugangsdaten verwendet.

  • Sie können Zugangsdaten in der Ansicht ALL_CREDENTIALS auflisten. Beispiel: Führen Sie den folgenden Befehl aus, um Zugangsdaten aufzulisten:

    SELECT credential_name, username, comments FROM all_credentials;

Oracle Cloud Infrastructure-Zugangsdaten (Authentifizierungstoken)

In Oracle Cloud Infrastructure ist username Ihr Oracle Cloud Infrastructure-Benutzername. password ist Ihr Oracle Cloud Infrastructure-Authentifizierungstoken. Siehe Mit Authentifizierungstoken arbeiten.

Beispiel:

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

Verwenden Sie Authentifizierungstoken-basierte Zugangsdaten, wenn Sie Aufrufe in OCI Object Storage authentifizieren. Bei Aufrufen eines anderen Oracle Cloud Infrastructure-Cloudservicetyps verwenden Sie schlüsselbasierte Oracle Cloud Infrastructure-Signaturzugangsdaten.

Für OCI Object Storage muss der Parameterwert username die Identitätsdomain und den Benutzernamen aus Ihrem Profil enthalten. Die mit einem Benutzer verknüpfte Identitätsdomain finden Sie in der Oracle Cloud Infrastructure-Konsole.

Beispiel:

oracleidentitycloudservice/adb_user@example.com

Bei der Standardidentitätsdomain müssen Sie den Domainnamen Default nicht einschließen. Beispiel:

adb_user@example.com

Schlüsselbasierte Oracle Cloud Infrastructure-Signaturzugangsdaten

Verwenden Sie die Oracle Cloud Infrastructure-Parameter für Signaturschlüssel wie user_ocid, tenancy_ocid, private_key und fingerprint mit der Oracle Cloud Infrastructure-Signaturschlüsselauthentifizierung.

Beispiel:

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

Mit einer Passphrase generierte Private Keys werden nicht unterstützt. Sie müssen den Private Key ohne Passphrase generieren. Weitere Informationen finden Sie unter So generieren Sie einen API-Signaturschlüssel.

Oracle Cloud Infrastructure Object Storage Classic-Zugangsdaten

Wenn sich Ihre Quelldateien in Oracle Cloud Infrastructure Object Storage Classic befinden, ist username Ihr Oracle Cloud Infrastructure Classic-Benutzername und password Ihr Oracle Cloud Infrastructure Classic-Kennwort.

Zugangsdaten für Amazon Web Services (AWS)

Wenn sich Ihre Quelldateien in Amazon S3 befinden oder Sie eine AWS-API aufrufen, ist username die AWS-Zugriffsschlüssel-ID und password der AWS-Secret-Zugriffsschlüssel. Siehe AWS Identity and Access Management.

Microsoft Azure-Zugangsdaten

Wenn sich Ihre Quelldateien in Azure Blob Storage oder Azure Data Lake Storage befinden oder Sie eine Azure-API aufrufen, ist die username der Name Ihres Azure-Speicheraccounts und die password ein Zugriffsschlüssel für einen Azure-Speicheraccount. Siehe Azure-Speicheraccounts.

Amazon S3-kompatible Zugangsdaten

Service Zugangsdateninformationen

Oracle Cloud Infrastructure (Kunden-Secret Keys)

Wenn sich Ihre Quelldateien in Oracle Cloud Infrastructure befinden, müssen Sie Kunden-Secret Keys mit S3-kompatiblen URLs verwenden. Weitere Informationen finden Sie unter Mit Kunden-Secret Keys arbeiten.

Google Cloud Storage

Wenn sich Ihre Quelldateien in Google Cloud Storage befinden oder Sie Google Cloud Storage-APIs aufrufen, müssen Sie ein Google-Standardprojekt festlegen und einen HMAC-Schlüssel abrufen, um Zugangsdaten für die Angabe mit S3-kompatiblen Google Cloud Storage-URLs zu erstellen. Verwenden Sie die HMAC-Schlüssel-ID als Benutzernamen und das HMAC-Secret als Kennwort.

Weitere Informationen finden Sie unter Projekte und HMAC-Schlüssel.

Wasabi Hot Cloud Storage

Wenn sich Ihre Quelldateien in Wasabi Hot Cloud Storage befinden oder Sie Wasabi Hot Cloud Storage-APIs aufrufen, müssen Sie Zugriffsschlüssel erstellen, um Zugangsdaten für die Angabe mit S3-kompatiblen URLs zu erstellen. Verwenden Sie den Wasabi Hot Cloud Storage-Zugriffsschlüssel als Benutzernamen und den Wasabi Hot Cloud Storage-Secret Key als Kennwort.

Weitere Informationen finden Sie unter Wasabi-API-Zugriffsschlüsselset erstellen.

AWS Amazon-Ressourcennamen (ARN)-Zugangsdaten

Wenn Ihre Quelldateien in Amazon S3 gespeichert sind oder Sie eine AWS-API aufrufen, geben Sie mit params die Parameter für die Amazon-Ressourcennamen (ARN) an.

Parameter Wert
aws_role_arn

Gibt den Amazon-Ressourcennamen (ARN) an, der die AWS-Rolle identifiziert.

Wenn dieser Parameter beim Erstellen der Zugangsdaten nicht angegeben wird, wird ORA-20041 ausgelöst.

external_id_type

Legen Sie optional die external_id_type fest, um die OCID des Autonomous Database-Compartments, die Datenbank-OCID oder die Mandanten-OCID zu verwenden, indem Sie einen der folgenden Werte angeben: compartment_ocid, database_ocid oder tenant_ocid.

Wenn dieser Parameter beim Erstellen der Zugangsdaten nicht angegeben wird, lautet der Standardwert database_ocid.

Beispiel:

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

Persönliches GitHub-Zugriffstoken

Wenn sich Ihre Quelldateien in einem GitHub-Repository befinden oder Sie eine GitHub-API aufrufen, ist username Ihre GitHub-E-Mail, und password ist Ihr persönliches Zugriffstoken GitHub. Weitere Informationen finden Sie unter Personal Access Token erstellen.

Beispiel:

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

Google Analytics oder Google BigQuery Zugangsdaten

Wenn Sie auf Google Analytics oder Google BigQuery zugreifen, geben Sie mit dem Parameter params die Zugangsdatenparameter für Google OAuth 2.0 an.

Parameter Wert
gcp_oauth2

Gibt den OAuth 2.0-Zugriff für Google Analytics oder Google BigQuery mit einem JSON-Objekt an, das die folgenden Parameter und deren Werte enthält:

  • client_id: Rufen Sie die Client-ID in der Google-API-Konsole ab.

  • client_secret: In der Google-API-Konsole können Sie das Client Secret abrufen.

  • refresh_token: Mit einem Aktualisierungstoken kann Ihre Anwendung neue Zugriffstoken abrufen.

Weitere Informationen zu Google OAuth-Zugangsdaten finden Sie unter OAuth 2.0 für den Zugriff auf Google-APIs verwenden.

Beispiel:

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

Vault-Secret-Zugangsdaten mit Oracle Cloud Infrastructure Vault

Um Vault-Secret-Zugangsdaten mit Oracle Cloud Infrastructure Vault zu erstellen, geben Sie mit dem Parameter params die erforderlichen Parameter an:

  • username: Gibt den Benutzernamen eines beliebigen Typs von Zugangsdaten für Benutzername/Kennwort an, wie z.B. den Benutzernamen des OCI Swift-Kennworts. Beispiel: Wenn Sie Swift-Zugangsdaten mit dem Benutzernamen "scott" und dem Kennwort "password" haben, geben Sie "scott" als Parameter username an.

  • secret_id: Ist die Vault-Secret-ID. Geben Sie den Wert secret_id als Vault-Secret-OCID an. Weitere Informationen finden Sie unter Überblick über Vault.

  • region: Ist ein optionaler Parameter, der die oracle-Cloud-Regions-ID angibt. Die Region gibt an, wo sich das Oracle Cloud Infrastructure Vault Secret befindet, sofern angegeben.

    Standardmäßig verwendet CREATE_CREDENTIAL die region, die aus dem Regionsschlüssel in der secret_id zugeordnet ist. Ein Beispiel für eine Region ist us-ashburn-1.

    Eine komplette Liste der Regionen finden Sie unter Regionen und Availability-Domains.

Beispiel:

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

Hinweise zur Verwendung eines Oracle Cloud Infrastructure Vault-Secrets zum Speichern von Vault Secrets:

  • Wenn Sie einen Oracle Cloud Infrastructure Vault verwenden, müssen Sie in der Autonomous Database-Instanz die Principal-Authentifizierung mit DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL aktivieren.
  • In Oracle Cloud Infrastructure müssen Sie eine Policy für den Resource Principal angeben, um auf das Secret zuzugreifen.

Um Vault-Secret-Zugangsdaten zu erstellen, benötigen Sie die Berechtigung EXECUTE für das Package DBMS_CLOUD.

Vault-Secret-Zugangsdaten mit Azure Key Vault

Um Azure Key Vault-Zugangsdaten zu erstellen, geben Sie mit dem Parameter params die erforderlichen Parameter an:

  • username: Gibt den Benutzernamen an, der mit dem Schlüssel verknüpft ist.

  • secret_id: Gibt den Secret-Namen an.

  • azure_vault_name: Gibt den Namen des Vaults an, in dem sich das Secret befindet.

Weitere Informationen finden Sie unter Key Vault erstellen.

Um Vault-Secret-Zugangsdaten zu erstellen, benötigen Sie die Berechtigung EXECUTE für das Package DBMS_CLOUD.

Vault-Secret-Zugangsdaten mit AWS Secrets Manager

Um Vault Secret-Zugangsdaten mit AWS Secrets Manager zu erstellen, geben Sie mit dem Parameter params die erforderlichen Parameter an:

  • username: Gibt den Zugriffsschlüssel für AWS Secrets Manager an.

  • secret_id: Ist AWS Secrets Manager AWS ARN.

  • region: (Optional) Gibt die AWS-Serviceregion an, in der sich der Vault und das Secret befinden. Ein Beispiel für die AWS-Region ist "us-east-2". Der Standardwert region ist die Region, die mit der ARN im Parameter secret_id angegeben ist.

    Weitere Informationen finden Sie unter AWS-Regionen verwalten.

    Um Vault-Secret-Zugangsdaten zu erstellen, benötigen Sie die Berechtigung EXECUTE für das Package DBMS_CLOUD.

Vault-Secret-Zugangsdaten mit GCP Secret Manager

Um GCP Secret Manager-Zugangsdaten zu erstellen, geben Sie mit dem Parameter params die erforderlichen Parameter an:

  • username: Gibt den mit dem Secret verknüpften Benutzernamen an.

  • secret_id: Ist der Secret-Name.

  • gcp_project_id: Gibt die ID des Projekts an, in dem sich das Secret befindet.

Weitere Informationen finden Sie unter Secret Manager.

Um Vault-Secret-Zugangsdaten zu erstellen, benötigen Sie die Berechtigung EXECUTE für das Package DBMS_CLOUD.

Prozedur DROP_CREDENTIAL

Diese Prozedur entfernt vorhandene Zugangsdaten aus Autonomous Database.

Syntax

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parameter

Parameter Beschreibung

credential_name

Der Name der zu entfernenden Zugangsdaten.

Prozedur REFRESH_VAULT_CREDENTIAL

Mit dieser Prozedur wird das Vault Secret einer Vault Secret-Zugangsdaten aktualisiert.

Mit dieser Prozedur können Sie das Vault Secret einer Vault-Secret-Zugangsdaten sofort aktualisieren, um die neueste Version des Vault Secrets für die angegebene credential_name abzurufen.

Syntax

DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL (
    credential_name   IN VARCHAR2);

Parameter

Parameter Beschreibung

credential_name

Der Name der zu aktualisierenden Zugangsdaten.

Hinweise zur Verwendung

  • Der ADMIN-Benutzer kann alle Zugangsdaten anzeigen, indem er die Tabelle dba_credentials abfragt.

  • Sie können Zugangsdaten in der Ansicht ALL_CREDENTIALS auflisten. Beispiel: Führen Sie den folgenden Befehl aus, um Zugangsdaten aufzulisten:

    SELECT credential_name, username, comments FROM all_credentials;

Beispiel

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

Prozedur UPDATE_CREDENTIAL

Mit dieser Prozedur werden Attribute mit einem neuen Wert für einen angegebenen credential_name aktualisiert.

Verwenden Sie gespeicherte Zugangsdaten zum Laden von Daten, zum Abfragen externer Daten in der Cloud oder überall, wo Sie DBMS_CLOUD-Prozeduren mit einem credential_name-Parameter verwenden.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der zu aktualisierenden Zugangsdaten.

attribute

Name des zu aktualisierenden Attributs.

Für Zugangsdaten des Typs "Benutzername/Kennwort" sind die gültigen Werte für attribute: USERNAME und PASSWORD.

Für Zugangsdaten für eine Amazon-ARN sind die gültigen attribute-Werte aws_role_arn und external_id_type.

Für Zugangsdaten für Google BigQuery oder Google Analytics sind die gültigen attribute-Werte: client_id, client_secret und refresh_token.

Je nach verwendetem Vault lauten für Vault-Secret-Zugangsdaten die gültigen attribute-Werte wie folgt:
  • Oracle Cloud Infrastructure Vault: secret_id, region

  • Azure Key Vault: secret_id, azure_vault_name

  • AWS Secrets Manager: secret_id, region

  • GCP-Secret-Manager: secret_id, gcp_project_id

Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

value

Neuer Wert für das angegebene Attribut.

Hinweise zur Verwendung

  • Beim Wert des Benutzernamens muss die Groß-/Kleinschreibung beachtet werden. Er darf keine doppelten Anführungszeichen oder Leerzeichen enthalten.

  • Der ADMIN-Benutzer kann alle Zugangsdaten anzeigen, indem er dba_credentials abfragt.

  • Sie müssen Zugangsdaten nur einmal erstellen, es sei denn, Ihre Zugangsdaten für den Cloud-Service ändern sich. Nachdem Sie die Zugangsdaten gespeichert hat, können Sie denselben Zugangsdatennamen für DBMS_CLOUD-Prozeduren verwenden, die einen credential_name-Parameter erfordern.

  • Sie können Zugangsdaten in der Ansicht ALL_CREDENTIALS auflisten. Beispiel: Führen Sie den folgenden Befehl aus, um Zugangsdaten aufzulisten:

    SELECT credential_name, username, comments FROM all_credentials;

Beispiele

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 für Objekte und Dateien

Die Unterprogramme für das Objekt- und Dateiverwaltung im Package DBMS_CLOUD.

Unterprogramm Beschreibung

Prozedur COPY_COLLECTION

Diese Prozedur lädt Daten aus Cloud Object Storage oder aus Dateien in einem Verzeichnis in eine vorhandene SODA-Collection.

Prozedur COPY_DATA

Mit dieser Prozedur werden Daten aus Cloud Object Storage oder aus Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen geladen.

COPY_DATA Prozedur für Avro-, ORC- oder Parquet-Dateien

Bei dieser Prozedur mit dem format-Parameter type, der auf den Wert orc, parquet oder avro gesetzt ist, werden Daten aus ORC-, Parquet- oder Avro-Dateien in der Cloud oder aus ORC-, Parquet- oder Avro-Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen geladen.

Ähnlich wie Textdateien werden die Daten aus der Quelldatei ORC, Parquet oder Avro in die bereits vorhandene interne Tabelle kopiert.

Prozedur COPY_OBJECT

Bei dieser Prozedur werden Dateien von einem Cloud-Objektspeicher-Bucket in einen anderen kopiert.

Prozedur CREATE_EXTERNAL_TABLE

Diese Prozedur erstellt eine externe Tabelle in Dateien in der Cloud oder in Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.
Prozedur CREATE_CLOUD_TABLE

Mit dieser Prozedur wird eine Cloud-Tabelle erstellt, in der alle persistenten Daten in Oracle-Managed Object Storage gespeichert werden.

CREATE_EXTERNAL_TABLE-Prozedur für Apache Iceberg

Mit diesem Verfahren werden externe Tabellen für Apache Iceberg-Tabellen in den unterstützten Konfigurationen erstellt.

CREATE_EXTERNAL_TABLE Prozedur für Avro-, ORC- oder Parquet-Dateien

Diese Prozedur, bei der der Parameter format type auf den Wert parquet, orc oder avro gesetzt ist, erstellt eine externe Tabelle mit Dateien im Parquet-, ORC- oder Avro-Format in der Cloud oder in einem Verzeichnis.

So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Prozedur CREATE_EXTERNAL_PART_TABLE

Diese Prozedur erstellt eine externe partitionierte Tabelle mit Dateien in der Cloud. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Prozedur CREATE_EXTERNAL_TEXT_INDEX

Mit dieser Prozedur wird ein Textindex für die Objektspeicherdateien erstellt.

Prozedur CREATE_HYBRID_PART_TABLE

Mit diesem Verfahren wird eine hybride partitionierte Tabelle erstellt. So können Sie Abfragen für hybride partitionierte Daten aus Autonomous Database ausführen.

Prozedur DELETE_ALL_OPERATIONS

Diese Prozedur löscht entweder alle in der Tabelle user_load_operations in Ihrem Schema protokollierten Dataload-Vorgänge oder alle Dataload-Vorgänge des angegebenen Typs, wie mit dem Parameter type angegeben.

Prozedur DELETE_FILE

Diese Prozedur entfernt die angegebene Datei aus dem angegebenen Verzeichnis in Autonomous Database

Prozedur DELETE_OBJECT

Diese Prozedur löscht das angegebene Objekt im Objektspeicher.

Prozedur DELETE_OPERATION

Diese Prozedur akzeptiert eine operation_id als Eingabe und löscht die Logs, die mit der angegebenen operation_id verknüpft sind.

Prozedur DROP_EXTERNAL_TEXT_INDEX

Bei dieser Prozedur wird der Textindex für die Objektspeicherdateien gelöscht.

Prozedur EXPORT_DATA

Diese Prozedur exportiert Daten aus Autonomous Database basierend auf dem Ergebnis einer Abfrage in Dateien in der Cloud. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden. Abhängig von der angegebenen Option für den format-Parameter type exportiert die Prozedur Zeilen in den Cloud-Objektspeicher als Text mit den Optionen CSV, JSON, Parquet oder XML oder mit dem Zugriffstreiber ORACLE_DATAPUMP, um Daten in eine Dumpdatei zu schreiben.

GET_OBJECT Prozedur und Funktion

Diese Prozedur ist überladen. Das Prozedurformular liest ein Objekt aus dem Cloud-Objektspeicher und kopiert es in Autonomous Database. Das Funktionsformular liest ein Objekt aus Cloud Object Storage und gibt eine BLOB an Autonomous Database zurück.

Funktion LIST_FILES

Diese Funktion listet die Dateien im angegebenen Verzeichnis auf. Die Ergebnisse umfassen die Dateinamen und zusätzliche Metadaten zu den Dateien, wie die Dateigröße in Byte sowie die Zeitstempel der Erstellung und der letzten Änderung.

Funktion LIST_OBJECTS

Diese Funktion listet Objekte am angegebenen Speicherort im Objektspeicher auf. Die Ergebnisse umfassen die Objektnamen und zusätzliche Metadaten zu den Objekten, wie Größe, Prüfsumme sowie Zeitstempel der Erstellung und der letzten Änderung.

Prozedur MOVE_OBJECT

Mit dieser Prozedur wird ein Objekt von einem Cloud-Objektspeicher-Bucket in einen anderen verschoben.

Prozedur PUT_OBJECT

Diese Prozedur ist überladen. In einem Formular kopiert die Prozedur eine Datei aus Autonomous Database in den Cloud-Objektspeicher. In einer anderen Form kopiert die Prozedur eine BLOB aus Autonomous Database in den Cloud Object Storage.

Prozedur SYNC_EXTERNAL_PART_TABLE

Mit diesem Verfahren wird das Aktualisieren einer externen partitionierten Tabelle aus Dateien in der Cloud vereinfacht. Führen Sie diese Prozedur aus, wenn neue Partitionen hinzugefügt werden oder wenn Partitionen aus der Objektspeicherquelle für die externe partitionierte Tabelle entfernt werden.

Prozedur VALIDATE_EXTERNAL_TABLE

Diese Prozedur validiert die Quelldateien für eine externe Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen.

Prozedur VALIDATE_EXTERNAL_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine externe partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für diese externe Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen.

Prozedur VALIDATE_HYBRID_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine hybride partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die mobile Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen.

Prozedur COPY_COLLECTION

Diese Prozedur lädt Daten aus dem Cloud-Objektspeicher in eine SODA-Collection oder aus einem Verzeichnis. Wenn die angegebene SODA-Collection nicht vorhanden ist, wird sie von der Prozedur erstellt. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

collection_name

Der Name der SODA-Collection, in die Daten geladen werden. Wenn bereits eine Collection mit diesem Namen vorhanden ist, werden die angegebenen Daten geladen. Andernfalls wird eine neue Collection erstellt.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste mit Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Beispiel:

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'

Das Format der URIs ist vom benutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste von Verzeichnissen und Dateinamen verwenden. Das Format für die Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden.

Reguläre Ausdrücke werden nicht unterstützt, wenn die Dateinamen in einem Verzeichnis angegeben werden. Sie können nur Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen verwendet werden. Das Zeichen "?" kann als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel:'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine kommagetrennte Verzeichnisliste: Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel:'"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Gibt an, dass filename mit einem Anführungszeichen (') beginnt.

format

Die Optionen, die das Format der Quelldateien beschreiben. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Unterstützte Formate sind: characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays, keyassignment und keypath.

Neben den genannten Formaten für JSON-Daten unterstützt Autonomous Database auch andere Formate. Eine Liste der Formatargumente, die von Autonomous Database unterstützt werden, finden Sie unter DBMS_CLOUD Packageformatoptionen.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

Prozedur COPY_DATA

Diese Prozedur lädt Daten aus Dateien der Cloud in vorhandene Autonomous Database-Tabellen oder aus Dateien eines Verzeichnisses. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle in der Datenbank. Die Zieltabelle muss erstellt werden, bevor Sie COPY_DATA ausführen.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis oder eine Tabellen-Hyperlink-URL mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt eine der folgenden Optionen an:

  • Durch Komma getrennte Liste der Quelldatei-URIs

  • Durch Komma getrennte Liste mit Tabellen-Hyperlink-URLs

  • Ein oder mehrere Verzeichnisse und Quelldateien

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

URIs für Cloud-Quelldatei

Dieser Parameter gibt entweder eine durch Komma getrennte Liste mit Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Beispiel:

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'

Das Format der URIs ist vom benutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

URL für Tabellen-Hyperlink

Sie können einen Tabellen-Hyperlink wie folgt verwenden:
  • Geben Sie eine einzelne Tabellen-Hyperlink-URL an.

    Beispiel:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Geben Sie eine durch Komma getrennte Liste mit Tabellen-Hyperlink-URLs an. Stellen Sie sicher, dass alle enthaltenen Tabellen-Hyperlinks dieselben Spaltennamen, Spaltenreihenfolge und Spaltendatentypen aufweisen.

    Beispiel:
    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'
    
Weitere Informationen finden Sie unter Info zu Tabellenhyperlinks in Autonomous Database und Prozedur CREATE_URL.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste von Verzeichnissen und Dateinamen verwenden. Das Format für die Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden.

Reguläre Ausdrücke werden nicht unterstützt, wenn die Dateinamen in einem Verzeichnis angegeben werden. Sie können nur Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen verwendet werden. Das Zeichen "?" kann als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel:'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine kommagetrennte Verzeichnisliste: Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel:'"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Gibt an, dass filename mit einem Anführungszeichen (') beginnt.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch die Zieltabellendefinition bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen zu field_list finden Sie unter Oracle® Database-Utilitys.

Wenn der Wert der Option type des Parameters format json lautet, wird dieser Parameter ignoriert.

Ein Beispiel mit field_list finden Sie unter Prozedur CREATE_EXTERNAL_TABLE.

format

Die Optionen, die das Format der Quell-, Log- und fehlerhaften Dateien beschreiben. Die Liste der Optionen und die Angabe der Werte finden sie unter DBMS_CLOUD Optionen für das Packageformat.

Optionen für das Avro-, ORC- oder Parquet-Dateiformat finden Sie unter DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Hinweis zur Verwendung

Das Standard-Datensatztrennzeichen ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Neuzeilenzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen ermittelt, wird es als Datensatz-Begrenzungszeichen für alle Dateien in der Prozedur verwendet. 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. Wenn die Quelldateien eine Kombination verschiedener Datensatzbegrenzungszeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien ändern, um dasselbe Datensatzbegrenzungszeichen zu verwenden, oder nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

Informationen zur Formatoption recorddelmiter finden Sie unter DBMS_CLOUD Packageformatoptionen.

Beispiele

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 Prozedur für Avro-, ORC- oder Parquet-Dateien

Bei dieser Prozedur mit dem format-Parameter type, der auf den Wert avro, orc oder parquet gesetzt ist, werden Daten aus Avro-, ORC- oder Parquet-Dateien in der Cloud oder aus Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen geladen.

Ähnlich wie Textdateien werden die Daten aus der Quelldatei Avro, ORC oder Parquet in die bereits vorhandene interne Tabelle kopiert.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle in der Datenbank. Die Zieltabelle muss erstellt werden, bevor Sie COPY_DATA ausführen.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste mit Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Beispiel:

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'

Das Format der URIs ist vom benutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste von Verzeichnissen und Dateinamen verwenden. Das Format für die Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden.

Reguläre Ausdrücke werden nicht unterstützt, wenn die Dateinamen in einem Verzeichnis angegeben werden. Sie können nur Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen verwendet werden. Das Zeichen "?" kann als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel:'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine kommagetrennte Verzeichnisliste: Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel:'"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Gibt an, dass filename mit einem Anführungszeichen (') beginnt.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

field_list

Wird für Avro-, ORC- oder Parquet-Dateien ignoriert.

Die Felder in der Quelle stimmen mit den Spalten der externen Tabelle nach Name überein. Quelldatentypen werden in den Datentyp der externen Tabellenspalte konvertiert.

Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Weitere Informationen zur Zuordnung von Parquet-Dateien finden Sie unter DBMS_CLOUD Package Parquet to Oracle Data Type Mapping.

Einzelheiten zum Mapping finden Sie unter DBMS_CLOUD Package Avro zu Oracle-Datentypzuordnung.

format

Die Optionen, die das Format der Quelldateien beschreiben. Für Avro-, ORC- oder Parquet-Dateien werden nur zwei Optionen unterstützt: siehe DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet.

Hinweise zur Verwendung

  • Wie bei anderen Datendateien generieren Avro-, ORC- und Parquet-Dataloads Logs, die in den Tabellen dba_load_operations und user_load_operations angezeigt werden können. Jeder Ladevorgang fügt einen Datensatz zu dba[user]_load_operations hinzu, der die Tabelle mit den Logs angibt.

    Die Logtabelle enthält zusammenfassende Informationen über den Ladevorgang.

  • Wenn für Avro, ORC oder Parquet der Parameter format type auf den Wert avro, orc oder parquet gesetzt ist, ist die Tabelle BADFILE_TABLE immer leer.

    • Bei Parquet-Dateien lösen PRIMARY KEY-Constraint-Fehler einen ORA-Fehler aus.

    • Wenn Daten für eine Spalte einen Konvertierungsfehler feststellen. Beispiel: Die Zielspalte ist nicht groß genug, um den konvertierten Wert aufzunehmen, wird der Wert für die Spalte auf NULL gesetzt. Dies führt nicht zu einem abgelehnten Datensatz.

Prozedur COPY_OBJECT

Mit dieser Prozedur wird ein Objekt aus einem Cloud-Objektspeicher-Bucket oder -Ordner in einen anderen kopiert.

Der Quell- und Ziel-Bucket oder -Ordner kann sich im selben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in unterschiedlichen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Name der Quellzugangsdaten wird standardmäßig auch vom Zielspeicherort verwendet, wenn kein Zielzugangsdatenname angegeben ist.

Syntax

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Quellobjektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_object_uri

Gibt den URI an, der auf den Quell-Object Storage-Bucket oder den Quellordner verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_object_uri

Gibt die URI für den Zielobjektspeicher an.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort des Ziels.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_object_uri auf den source_credential_name-Wert gesetzt.

Beispiel

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

Prozedur CREATE_CLOUD_TABLE

Mit diesem Verfahren wird eine Cloud-Tabelle erstellt. Alle Cloud-Tabellendaten werden im von Oracle verwalteten Object Storage gespeichert (Cloud-Tabellen speichern nur ihre Metadaten in der Datenbank).

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Cloud-Tabelle.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die Cloud-Tabelle.

Hinweise zur Verwendung

  • DEFAULT-Attribute: Die column_list kann die DEFAULT-Klausel enthalten, die wie die DEFAULT-Klausel in einer normalen CREATE TABLE-Klausel funktioniert. Informationen zum Verhalten der DEFAULT-Klausel finden Sie unter CREATE TABLE.

  • Mit DROP TABLE können Sie eine Cloud-Tabelle löschen. Cloud-Tabellen unterstützen den Papierkorb nicht.

    Beispiel:

    DROP TABLE CLOUD_TAB1; 
  • Sie können SELECT-, INSERT- und UPDATE-Berechtigungen für eine Cloud-Tabelle erteilen. Einer Cloud-Tabelle können keine anderen Berechtigungen erteilt werden.

    Weitere Informationen finden Sie unter Konfigurieren von Berechtigungen und Rollenautorisierung.

Beispiele

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

Prozedur CREATE_EXTERNAL_PART_TABLE

Diese Prozedur erstellt eine externe partitionierte Tabelle auf Dateien in der Cloud oder aus Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Gibt die vollständige Partitionierungsklausel an, einschließlich der Speicherortinformationen für einzelne Partitionen.

Wenn Sie den Parameter partitioning_clause verwenden, ist der Parameter file_uri_list nicht zulässig.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste mit Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Diese Option wird nur bei externen Tabellen unterstützt, die für eine Datei in Object Storage erstellt werden.

Beispiel:

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'

Wenn Sie den Parameter file_uri_list verwenden, ist der Parameter partitioning_clause nicht zulässig.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle. Dieser Parameter hat die folgenden Anforderungen, je nach Typ der mit dem Parameter file_uri_list angegebenen Datendateien:

  • Der Parameter column_list ist für unstrukturierte Dateien erforderlich. Bei unstrukturierten Dateien, z.B. bei CSV-Textdateien, muss der Parameter column_list alle Spaltennamen und Datentypen in der Datendatei sowie die aus dem Objektnamen abgeleiteten Partitionsspalten angeben.

  • Der Parameter column_list ist bei strukturierten Dateien optional. Beispiel: Bei Avro-, ORC- oder Parquet-Datendateien ist column_list nicht erforderlich. Wenn die Option column_list nicht enthalten ist, muss der format-Parameter partition_columns Spezifikationen für Spaltennamen (name) und Datentypen (type) enthalten.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen zu field_list finden Sie unter Oracle® Database-Utilitys.

format

Die Formatoption partition_columns gibt die Spaltennamen und Datentypen DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE von Partitionsspalten an, wenn die Partitionsspalten vom Dateipfad abgeleitet werden, je nach Typ der Datendatei, strukturiert oder unstrukturiert:

  • Wenn die DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE den Parameter column_list enthält und die Datendateien unstrukturiert sind, z.B. bei CSV-Textdateien, enthält partition_columns den Datentyp nicht. Beispiel: Verwenden Sie ein Format wie das Folgende für diesen Typ von partition_columns-Spezifikation:

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

    Der Datentyp ist nicht erforderlich, da er im Parameter DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list angegeben ist.

  • Wenn DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE den Parameter column_list nicht enthält und die Datendateien strukturiert sind, wie Avro-, ORC- oder Parquet-Dateien, enthält die Option partition_columns sowohl den Spaltennamen, die Unterklausel name als auch den Datentyp type-Unterklausel. Beispiel: Im Folgenden wird eine partition_columns-Spezifikation dargestellt:

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

Wenn die Datendateien unstrukturiert sind und die Unterklausel type mit partition_columns angegeben wird, wird die Unterklausel type ignoriert.

Bei Objektnamen, die nicht auf dem Hive-Format basieren, muss die Reihenfolge der angegebenen partition_columns-Spalten mit der Reihenfolge übereinstimmen, wie sie im Objektnamen im Dateipfad angezeigt werden, der im Parameter file_uri_list angegeben ist.

Alle Parameteroptionen für format, die das Format der Quelldateien beschreiben, finden Sie unter DBMS_CLOUD Packageformatoptionen.

Hinweise zur Verwendung

  • Sie können diese Prozedur nicht mit den Parametern partitioning_clause und file_uri_list aufrufen.

  • Die Angabe des Parameters column_list ist bei strukturierten Datendateien, einschließlich Avro-, Parquet- oder ORC-Datendateien, optional. Wenn column_list nicht angegeben ist, muss die Option format-Parameter partition_columns sowohl name als auch type enthalten.

  • Der Parameter column_list ist für unstrukturierte Datendateien erforderlich, wie CSV-Textdateien.

  • Die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Objektspeicherservices, einschließlich:
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage oder Azure Data Lake Storage

    • Amazon S3

    • Amazon S3-kompatibel, einschließlich: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage und Wasabi Hot Cloud Storage.

    • GitHub-Repository

    Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

  • Das Verfahren DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE unterstützt externe partitionierte Dateien in Verzeichnissen, entweder in einem lokalen Dateisystem oder in einem Netzwerkdateisystem.

  • Wenn Sie DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE mit dem Parameter file_uri_list aufrufen, müssen die im Dateinamen des Cloud-Objektspeichers angegebenen Spaltentypen einen der folgenden Typen aufweisen:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • Das Standard-Datensatztrennzeichen ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Neuzeilenzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen ermittelt, wird es als Datensatz-Begrenzungszeichen für alle Dateien in der Prozedur verwendet. 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. Wenn die Quelldateien eine Kombination verschiedener Datensatzbegrenzungszeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien ändern, um dasselbe Datensatzbegrenzungszeichen zu verwenden, oder nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

    Informationen zur Formatoption recorddelmiter finden Sie unter DBMS_CLOUD Packageformatoptionen.

  • Die externen partitionierten Tabellen, die Sie mit DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE erstellen, enthalten zwei unsichtbare Spalten file$path und file$name. Mit diesen Spalten können Sie ermitteln, aus welcher Datei ein Datensatz stammt.

    • file$path: Gibt den Dateipfadtext bis zum Anfang des Objektnamens an.

    • file$name: Gibt den Objektnamen an, einschließlich des gesamten Textes, der dem Bucket-Namen folgt.

Beispiele

Beispiel mit dem Parameter 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;                     
/

Beispiel für die Parameter file_uri_list und column_list mit unstrukturierten Datendateien:

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

Beispiel mit dem Parameter file_uri_list ohne den Parameter column_list mit strukturierten Datendateien:

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

Prozedur CREATE_EXTERNAL_TABLE

Diese Prozedur erstellt eine externe Tabelle in Dateien in der Cloud oder aus Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis oder eine Tabellen-Hyperlink-URL mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt eine der folgenden Optionen an:

  • Durch Komma getrennte Liste der Quelldatei-URIs.

  • Durch Komma getrennte Liste der Tabellen-Hyperlink-URLs.

  • Mindestens ein Verzeichnis und eine Quelldatei.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Diese Option wird nur bei externen Tabellen unterstützt, die für eine Datei in Object Storage erstellt werden.

Beispiel:

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'

Das Format der URIs ist vom benutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

URL für Tabellen-Hyperlink

Mit einem Tabellen-Hyperlink-URL können Sie eine externe Tabelle wie folgt erstellen:
  • Geben Sie eine einzelne Hyperlink-URL für Autonomous Database-Tabellen an. Sie können auch Filter und Klauseln auf die Daten anwenden, wenn Sie Daten aus der Tabelle lesen. Beispiel: Sie können die Daten mit der WHERE-Klausel filtern oder sie mit der ORDER BY-Klausel sortieren.

    Beispiel:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Geben Sie eine durch Komma getrennte Liste der Autonomous Database-Tabellen-Hyperlinks-URLs an. Stellen Sie sicher, dass alle enthaltenen Tabellen-Hyperlinks dieselben Spaltennamen, Spaltenreihenfolge und Spaltendatentypen im selben Schema aufweisen müssen.

    Beispiel:
    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'
    
Hinweis

Tabellen-Hyperlink-URLs unterstützen keine Platzhalter.
Weitere Informationen finden Sie unter Info zu Tabellenhyperlinks in Autonomous Database und Prozedur CREATE_URL.
Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste von Verzeichnissen und Dateinamen verwenden. Das Format für die Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden.

Reguläre Ausdrücke werden nicht unterstützt, wenn die Dateinamen in einem Verzeichnis angegeben werden. Sie können nur Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen verwendet werden. Das Zeichen "?" kann als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel:'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine kommagetrennte Verzeichnisliste: Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel:'"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Gibt an, dass filename mit einem Anführungszeichen (') beginnt.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle Database-Tabellen. Weitere Informationen zu field_list finden Sie unter ORACLE_LOADER Access Driver field_list unter field_definitions-Klausel in Oracle Database Utilities.

format

Die Optionen, die das Format der Quelldateien beschreiben. Die Liste der Optionen und die Angabe der Werte finden sie unter DBMS_CLOUD Optionen für das Packageformat.

Dateien im Avro-, ORC- oder Parquet-Format finden Sie unter CREATE_EXTERNAL_TABLE Procedure for Avro, ORC, or Parquet Files.

Hinweise zur Verwendung

  • Die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Objektspeichermedien. Dazu gehören:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage oder Azure Data Lake Storage

    • Amazon S3

    • Amazon S3-kompatibel, einschließlich: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage und Wasabi Hot Cloud Storage.

    • GitHub-Repository

    • Oracle Cloud Infrastructure Object Storage mit Tabellen-Hyperlink-URLs

    Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

  • Das Standard-Datensatztrennzeichen ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Neuzeilenzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen ermittelt, wird es als Datensatz-Begrenzungszeichen für alle Dateien in der Prozedur verwendet. 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. Wenn die Quelldateien eine Kombination verschiedener Datensatzbegrenzungszeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien ändern, um dasselbe Datensatzbegrenzungszeichen zu verwenden, oder nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

    Informationen zur Formatoption recorddelimiter finden Sie unter DBMS_CLOUD Packageformatoptionen.

Beispiel

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

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

CREATE_EXTERNAL_TABLE-Prozedur für Apache Iceberg

Mit diesem Verfahren werden externe Tabellen für Apache Iceberg-Tabellen in den unterstützten Konfigurationen erstellt.

Diese spezifischen Konfigurationen werden unterstützt:

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten, die für den Zugriff auf die Datendateien, die Metadatendateien und den Iceberg-Katalog verwendet werden (sofern verwendet).

Bei AWS- und OCI-Konfigurationen müssen die Zugangsdaten wie unter Prozedur CREATE_CREDENTIAL beschrieben erstellt werden.

AWS Amazon Resource Names-(ARN-)Zugangsdaten werden derzeit nicht unterstützt.

file_uri_list

Muss NULL sein, wenn ein Iceberg-Katalog angegeben ist (siehe Parameter format unten). Wenn kein Eisbergkatalog verwendet wird, muss die file_uri_list die URI für die Eisberg-Metadatendatei enthalten.

column_list

Muss NULL sein, da die Spaltennamen und -typen automatisch aus Iceberg-Metadaten abgeleitet werden.

Die Spaltennamen entsprechen den Namen in den zugrunde liegenden Datendateien (Parquet, Avro, ORC). Die Oracle-Datentypen werden anhand der Parquet-/Avro-/ORC-Zuordnungen zwischen Iceberg und den Datentypen Parquet, Avro und ORC abgeleitet. Daher können Benutzer die column_list nicht angeben.

field_list

Muss NULL sein, da Spaltennamen und Datentypen automatisch aus den Iceberg-Metadaten abgeleitet werden.

format

Der Parameter format hat je nach Typ der Iceberg-Tabelle eine andere Struktur und welche Informationen zum Erstellen der externen Tabelle verwendet werden, z.B. Informationen aus einem Datenkatalog oder eine direkte Metadaten-URI.

Weitere Informationen finden Sie unter Iceberg-Unterstützung für OCI Data Flow-Beispiele und DBMS_CLOUD URI-Formate.

Beispielformatparameter für AWS Iceberg-Tabellen mit einem AWS Glue-Katalog

Ein Beispielparameter format beim Erstellen von Tabellen über eine AWS Iceberg-Tabelle mit einem AWS Glue-Katalog lautet wie folgt:

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'))); 
Dabei enthält der Parameter access_protocol ein JSON-Objekt mit zwei Elementen wie folgt:
  • protocol_type: Muss "iceberg" sein
  • protocol_config: Ein verschachteltes JSON-Objekt, das die Iceberg-Katalogdetails angibt.
    • iceberg_catalog_type: Muss 'aws_glue' sein
    • iceberg_glue_region: Die Katalogregion, z.B. 'us-west-1'
    • iceberg_table_path: Ein glue database.glue table name-Pfad.

Beispielformatparameter für AWS Iceberg-Tabelle mit einer Metadatendatei-URI

Ein Beispielparameter format beim Erstellen von Tabellen über eine AWS Iceberg-Tabelle mit einer Metadatendatei-URI lautet wie folgt:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Beispielformatparameter für OCI Iceberg-Tabelle mit HadoopCatalog-Katalog

Ein Beispielparameter format beim Erstellen von Tabellen über eine OCI Iceberg-Tabelle, die von OCI Data Flow mit dem HadoopCatalog-Katalog erstellt wurde, lautet wie folgt:
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')));
Dabei enthält der Parameter access_protocol ein JSON-Objekt mit zwei Elementen wie folgt:
  • protocol_type: Muss 'iceberg' sein
  • protocol_config: Ein verschachteltes JSON-Objekt, das die Iceberg-Katalogdetails angibt.
    • iceberg_catalog_type: Muss 'hadoop' sein
    • iceberg_warehouse: Der Warehouse-Verzeichnispfad, der beim Generieren der Tabelle im nativen URI-Format verwendet wird.
    • iceberg_table_path: Der Pfad database_name.table name, der beim Erstellen der Tabelle verwendet wird.

Beispielformatparameter für OCI Iceberg-Tabelle mit der URI der Metadatendatei

Ein Beispielparameter format beim Erstellen von Tabellen über eine OCI Iceberg-Tabelle mit der URI der Metadatendatei lautet wie folgt:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Dabei enthält der Parameter access_protocol ein JSON-Objekt mit einem Element wie folgt:
  • protocol_type: Muss 'iceberg' sein

CREATE_EXTERNAL_TABLE Prozedur für Avro-, ORC- oder Parquet-Dateien

Bei dieser Prozedur mit dem Parameter format type, der auf den Wert avro, orc oder parquet gesetzt ist, wird eine externe Tabelle mit Dateien im Avro-, ORC- oder Parquet-Format in der Cloud oder in einem Verzeichnis erstellt.

So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste mit Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird.

Diese Option wird nur bei externen Tabellen unterstützt, die für eine Datei in Object Storage erstellt werden.

Beispiel:

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'

Das Format der URIs ist vom benutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste von Verzeichnissen und Dateinamen verwenden. Das Format für die Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden.

Reguläre Ausdrücke werden nicht unterstützt, wenn die Dateinamen in einem Verzeichnis angegeben werden. Sie können nur Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen verwendet werden. Das Zeichen "?" kann als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel:'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine kommagetrennte Verzeichnisliste: Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel:'"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Gibt an, dass filename mit einem Anführungszeichen (') beginnt.

column_list

(Optional) Wenn dieses Feld angegeben wird, wird der Parameter format->schema überschrieben, der angibt, dass das Schema, die Spalten und die Datentypen automatisch abgeleitet werden. Weitere Informationen finden Sie im Formatparameter.

Wenn die column_list für die Avro-, ORC- oder Parquet-Quelle angegeben wird, müssen die Spaltennamen mit den in der Datei gefundenen Spalten übereinstimmen. Oracle-Datentypen müssen den Datentypen Avro, ORC oder Parquet entsprechend zugeordnet werden.

Weitere Informationen zu Parquet-Dateien finden Sie unter DBMS_CLOUD Package Parquet to Oracle Data Type Mapping.

Weitere Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Weitere Informationen zu Avro-Dateien finden Sie unter DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

field_list

Wird für Avro-, ORC- oder Parquet-Dateien ignoriert.

Die Felder in der Quelle stimmen mit den Spalten der externen Tabelle nach Name überein. Quelldatentypen werden in den Datentyp der externen Tabellenspalte konvertiert.

Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD Package ORC to Oracle Data Type Mapping

Weitere Informationen zu Parquet-Dateien finden Sie unter DBMS_CLOUD Package Parquet to Oracle Data Type Mapping.

Weitere Informationen zu Avro-Dateien finden Sie unter DBMS_CLOUD Package Avro to Oracle Data Type Mapping.

format

For Avro, ORC, or Parquet type source files, see DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet for details.

Beispiele ORC

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

Beispiele Avro

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

Beispiele Parkett

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

Zuordnung von Avro-, ORC- oder Parquet-Spaltennamen zu Oracle-Spaltennamen

Informationen zur Zuordnung von Spaltennamen und zur Konvertierung von Spaltennamen in Oracle SQL finden Sie unter DBMS_CLOUD Package Avro, ORC und Parquet to Oracle Column Name Mapping.

Prozedur CREATE_EXTERNAL_TEXT_INDEX

Mit dieser Prozedur wird ein Textindex für Object Storage-Dateien erstellt.

Die Prozedur CREATE_EXTERNAL_TEXT_INDEX erstellt einen Textindex für die Object Storage-Dateien, die im Verzeichnis location_uri angegeben sind. Der Index wird in regelmäßigen Abständen aktualisiert, für alle neuen Ergänzungen oder Löschungen, die mit Dateien auf der URI des Standorts vorgenommen werden.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort. Bei öffentlichen, vorab authentifizierten oder vorab signierten Bucket-URIs kann ein NULL-Wert angegeben werden.

Weitere Informationen finden Sie unter Policys und Rollen zum Zugriff auf Ressourcen konfigurieren.

Wenn Sie keinen credential_name-Wert angeben, wird credential_name auf einen NULL-Wert gesetzt.

location_uri

Gibt den Objektspeicher-Bucket oder die Ordner-URI an.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

index_name Gibt den Namen des Index an, den Sie für die Dateien am Speicherort location_uri erstellen.

Dieser Parameter ist obligatorisch.

format

Gibt zusätzliche Konfigurationsoptionen an. Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:

refresh_rate: Gibt die Häufigkeit in Minuten an, mit der der lokale Index aktualisiert wird. Neue Dateiuploads und -löschungen führen zu einer Indexaktualisierung. Der Standardwert beträgt 5 Minuten.

binary_files: Gibt an, ob der Inhalt der zu indizierenden Dateien binär ist. Beispiel: PDF, MS-Word. Der Standardwert ist FALSE.

json_index: Gibt an, ob der Inhalt der zu indizierenden Dateien JSON oder Zeilen-JSON ist. Der Standardwert ist FALSE.

json_index_doc_sep: Gibt das Trennzeichen an, das für die Vorabverarbeitung von JSON-Zeilendokumenten verwendet wird. Der Standardwert ist '\n' (neue Zeile).

json_index_doc_len: Gibt die Länge jedes JSON-Dokuments im Objekt an. Der Standardwert ist 32767 und der Höchstwert 200000.

file_compression: Gibt das Komprimierungsformat der JSON-Dateien an. Der Standardwert ist gzip.

stop_words: Gibt eine Liste von Stoppwörtern an, die beim Erstellen von Indizes angegeben werden können.

Der Wert stop_words gibt an, ob es sich um eine Liste mit Stoppwörtern oder um eine Tabelle mit Stoppwörtern handelt. Wenn ein JSON-Array als Parameter für Stoppwörter angegeben wird, wird es als Liste behandelt. Andernfalls wird der Parameter für Stoppwörter als Tabellenname behandelt, dessen Spalte "STOP_WORDS" zum Lesen in der Liste der Stoppwörter verwendet wird.

Sie können Stoppwörter mit den folgenden Methoden angeben:

  • JSON-Array: Beispiel: format := '{"stop_words":["king","queen"]}'
  • Stoppworttabellenname: Beispiel: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Wenn Sie keinen Parameter format angeben, wird format auf einen Wert NULL gesetzt.

Beispiel

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

Prozedur CREATE_HYBRID_PART_TABLE

Mit diesem Verfahren wird eine hybride partitionierte Tabelle erstellt. Auf diese Weise können Sie Abfragen für hybride partitionierte Daten aus Autonomous Database mit Datenbankobjekten und -dateien in der Cloud oder Datenbankobjekten und -dateien in einem Verzeichnis ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Gibt die vollständige Partitionierungsklausel an, einschließlich der Speicherortinformationen für einzelne Partitionen.

Um Verzeichnisse zu verwenden, unterstützt die Partitionierungsklausel die Werte LOCATION und DEFAULT DIRECTORY.

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in den Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" gelten als Platzhalterzeichen, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Muster regulärer Ausdrücke werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem Musterabgleich identisch, der von der Funktion REGEXP_LIKE ausgeführt wird. Reguläre Ausdrucksmuster werden für Verzeichnisnamen nicht unterstützt.

Beispiel:

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

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen zu field_list finden Sie unter Oracle® Database-Utilitys.

format

Die Optionen, die das Format der Quelldateien beschreiben. Die Liste der Optionen und die Angabe der Werte finden sie unter DBMS_CLOUD Optionen für das Packageformat.

Hinweise zur Verwendung

  • Die Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Objektspeicherservices, einschließlich:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage oder Azure Data Lake Storage

    • Amazon S3

    • Amazon S3-kompatibel, einschließlich: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage und Wasabi Hot Cloud Storage.

    • GitHub-Repository

    Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

  • Die Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE unterstützt hybride partitionierte Dateien in Verzeichnissen, entweder in einem lokalen Dateisystem oder in einem Netzwerkdateisystem.

  • Die externen partitionierten Tabellen, die Sie mit DBMS_CLOUD.CREATE_HYBRID_PART_TABLE erstellen, enthalten zwei unsichtbare Spalten file$path und file$name. Mit diesen Spalten können Sie ermitteln, aus welcher Datei ein Datensatz stammt.

    • file$path: Gibt den Dateipfadtext bis zum Anfang des Objektnamens an.

    • file$name: Gibt den Objektnamen an, einschließlich des gesamten Textes, der dem Bucket-Namen folgt.

Beispiele

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

Prozedur DELETE_ALL_OPERATIONS

Diese Prozedur löscht entweder alle in der Tabelle user_load_operations in Ihrem Schema protokollierten Dataload-Vorgänge oder alle Dataload-Vorgänge des angegebenen Typs, wie mit dem Parameter type angegeben.

Syntax

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parameter

Parameter Beschreibung

type

Gibt den zu löschenden Vorgangstyp an. Typwerte finden Sie in der Spalte TYPE in der Tabelle user_load_operations.

Wenn kein type angegeben wird, werden alle Zeilen gelöscht.

Hinweise zur Verwendung

  • Mit diesem Verfahren werden derzeit ausgeführte Vorgänge (Vorgänge mit dem Status "Wird ausgeführt") nicht gelöscht.

  • Mit diesem Verfahren werden alle Logging-Tabellen und Logdateien gelöscht, die mit den Vorgängen verknüpft sind.

Prozedur DELETE_FILE

Diese Prozedur entfernt die angegebene Datei aus dem angegebenen Verzeichnis in Autonomous Database.

Syntax

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

Parameter

Parameter Beschreibung

directory_name

Der Name des Verzeichnisses in der Autonomous Database-Instanz.

file_name

Der Name der zu entfernenden Datei.

force

Fehler ignorieren und nicht melden, wenn die Datei nicht vorhanden ist. Gültige Werte sind: TRUE und FALSE. Der Standardwert ist FALSE.

Hinweis

Um DBMS_CLOUD.DELETE_FILE mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Schreibberechtigungen auf das Verzeichnis erteilen, in dem die Datei enthalten ist. Beispiel: Führen Sie als ADMIN den folgenden Befehl aus, um adb_user Schreibberechtigungen zu erteilen:
GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Beispiel

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

Prozedur DELETE_OBJECT

Diese Prozedur löscht das angegebene Objekt im Objektspeicher.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

object_uri

Objekt- oder Datei-URI des zu löschenden Objekts. Das Format der URI ist vom eingesetzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

force

Fehler ignorieren und nicht melden, wenn das Objekt nicht vorhanden ist. Gültige Werte sind: TRUE und FALSE. Der Standardwert ist FALSE.

Beispiel

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

Prozedur DELETE_OPERATION

Diese Prozedur löscht die Dataload-Einträge für die angegebene Vorgangs-ID, die in den Tabellen user_load_operations oder dba_load_operations in Ihrem Schema angemeldet ist.

Syntax

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parameter

Parameter Beschreibung

id

Gibt die Vorgangs-ID an, die mit den zu löschenden Logdateieinträgen verknüpft ist.

Hinweis zur Verwendung

  • Mit dieser Prozedur werden alle Logging-Tabellen und Logdateien gelöscht, die mit der in der Eingabe angegebenen Vorgangs-ID verknüpft sind.

Beispiel

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

Prozedur DROP_EXTERNAL_TEXT_INDEX

Bei dieser Prozedur wird der Textindex für die Object Storage-Dateien gelöscht.

Die Prozedur DROP_EXTERNAL_TEXT_INDEX löscht den angegebenen Index, der mit der Prozedur CREATE_EXTERNAL_TEXT_INDEX erstellt wurde.

Syntax

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parameter

Parameter Beschreibung
index_name

Gibt den Namen des Index an, den Sie löschen.

Der Indexname muss mit dem Namen übereinstimmen, der zum Zeitpunkt der Indexerstellung angegeben wurde.

Dieser Parameter ist obligatorisch.

Beispiel

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

Prozedur EXPORT_DATA

Diese Prozedur exportiert Daten aus Autonomous Database basierend auf dem Ergebnis einer Abfrage. Dieses Verfahren ist überlastet und unterstützt das Schreiben von Dateien in die Cloud oder in ein Verzeichnis.

Basierend auf dem Parameter format type exportiert die Prozedur Dateien in die Cloud oder in ein Verzeichnisverzeichnis als Textdateien im CSV-, JSON-, Parquet- oder XML-Format oder mit dem Zugriffstreiber ORACLE_DATAPUMP, um Daten in eine Oracle Datapump-Dumpdatei zu schreiben.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn der Parameter für Zugangsdaten nicht enthalten ist, gibt dies die Ausgabe in ein Verzeichnis an.

file_uri_list

Je nach Wert des Formatparameters und je nachdem, ob Sie einen Parameter für Zugangsdaten einschließen, gibt es verschiedene Formen:
  • Wenn der format-Parameterwert type json lautet: Die JSON im Objektspeicher oder in dem angegebenen Verzeichnisspeicher wird mit einem generierten Dateinamen basierend auf dem Wert des Parameters file_uri_list gespeichert. Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

  • Wenn der Wert des format-Parameters type datapump ist, ist file_uri_list eine durch Komma getrennte Liste der Dumpdateien. Gibt die Dateien an, die im Objektspeicher erstellt werden sollen. Die Verwendung von Platzhaltern und Ersetzungszeichen wird in file_uri_list nicht unterstützt.

  • Wenn der Parameter credential_name nicht angegeben ist, geben Sie einen Verzeichnisnamen in file_uri_list an.

Das Format der URIs ist vom genutzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

format

Eine JSON-Zeichenfolge, die Exportformatoptionen bereitstellt.

Folgende Option wird unterstützt:

  • type: Die Option type format ist erforderlich und muss einen der folgenden Werte aufweisen: csv | datapump | json | parquet | xml.

Siehe DBMS_CLOUD Package Format Options for EXPORT_DATA.

query

Verwenden Sie diesen Parameter, um eine SELECT-Anweisung anzugeben, damit nur die erforderlichen Daten exportiert werden. Die Abfrage bestimmt den Inhalt der Dateien, die Sie als CSV-, JSON-, Parquet- oder XML-Textdateien oder als Dumpdateien exportieren. Beispiel:

SELECT warehouse_id, quantity FROM inventories

Weitere Informationen mit dem Format type-Wert datapump finden Sie unter Oracle Data Pump - Datenfilter exportieren und Daten mit dem Zugriffstreiber ORACLE_DATAPUMP entladen und laden.

Wenn der Wert für format type json lautet, wird jedes Abfrageergebnis geprüft, und wenn es sich nicht um JSON handelt, wie mit der Funktion bestimmt: JSON_OBJECT_T.parse(), transformiert DBMS_CLOUD.EXPORT_DATA die Abfrage in die Funktion JSON_OBJECT, um die Zeile in JSON zu konvertieren. Weitere Informationen finden Sie unter JSON_OBJECT_T Objekttyp.

Beispiel:

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

operation_id

Mit diesem Parameter kann der Fortschritt und der endgültige Status des Exportvorgangs als entsprechende ID in der USER_LOAD_OPERATIONS-Ansicht verfolgt werden.

Hinweise zur Verwendung:

  • Der angegebene Parameterwert query kann bei Bedarf eine erweiterte Abfrage sein, z.B. eine Abfrage, die Joins oder Unterabfragen enthält.

  • Je nach angegebenem Formatparameter gibt DBMS_CLOUD.EXPORT_DATA die Ergebnisse der angegebenen Abfrage im Cloud-Objektspeicher oder an einen Verzeichnisspeicher in einem der folgenden Formate aus:

  • Bei einer CSV-, JSON- oder XML-Ausgabe wird standardmäßig eine neue Ausgabedatei erstellt, wenn eine generierte Datei 10 MB Daten enthält. Wenn Sie jedoch weniger als 10 MB an Ergebnisdaten haben, können mehrere Ausgabedateien vorhanden sein, abhängig vom Datenbankservice und der Anzahl der ECPUs (OCPUs, wenn Ihre Datenbank OCPUs verwendet) für die Autonomous Database-Instanz.

    Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

    Die standardmäßige Chunk-Größe der Ausgabedatei beträgt 10 MB für CSV, JSON oder XML. Sie können diesen Wert mit der Option format-Parameter maxfilesize ändern. Weitere Informationen finden Sie unter DBMS_CLOUD Package Format Options for EXPORT_DATA.

  • Bei der Parquet-Ausgabe ist jede generierte Datei kleiner als 128 MB, und es können mehrere Ausgabedateien generiert werden. Wenn Sie jedoch weniger als 128 MB Ergebnisdaten haben, können mehrere Ausgabedateien vorhanden sein, abhängig vom Datenbankservice und der Anzahl der ECPUs (OCPUs, wenn Ihre Datenbank OCPUs verwendet) für die Autonomous Database-Instanz.

    Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

Verwendungshinweise für ORACLE_DATAPUMP-Ausgabe (DBMS_CLOUD.EXPORT_DATA mit format-Parameter type-Option datapump):

  • EXPORT_DATA verwendet DATA_PUMP_DIR als Standardloggingverzeichnis. Daher ist die Schreibberechtigung für DATA_PUMP_DIR erforderlich, wenn die ORACLE_DATAPUMP-Ausgabe verwendet wird.

  • Autonomous Database-Export mit DBMS_CLOUD.EXPORT_DATA und format-Parameter type-Option datapump unterstützt nur Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic-Objektspeicher oder Verzeichnisausgabe.

  • Wenn Sie DBMS_CLOUD.EXPORT_DATA mit dem Parameter format der Option type der Option datapump angeben, kann der Parameterwert credential_name kein OCI-Resource Principal sein.

  • Oracle Data Pump unterteilt jeden Teil der Dumpdatei in kleinere Chunks, um schnellere Uploads zu ermöglichen. In der Oracle Cloud Infrastructure Object Storage-Konsole werden für jeden exportierten Teil der Dumpdatei mehrere Dateien angezeigt. Die Größe der tatsächlichen Dumpdateien wird als null (0) angezeigt und die Größe der zugehörigen Datei-Chunks als 10 MB oder weniger. Beispiel:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Wenn Sie die Null-Byte-Dumpdatei aus der Oracle Cloud Infrastructure-Konsole oder mit der Oracle Cloud Infrastructure-CLI herunterladen, erhalten Sie nicht die vollständigen Dumpdateien. Um die vollständigen Dumpdateien aus dem Objektspeicher herunterzuladen, verwenden Sie ein Tool wie cURL, das Swift unterstützt. Geben Sie Ihre Benutzeranmeldung und Ihr Swift-Authentifizierungstoken an.
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    Wenn Sie eine Datei mit den DBMS_CLOUD-Prozeduren importieren, die den Parameter format type mit dem Wert "datapump" unterstützen, müssen Sie nur den Namen der primären Datei angeben. Die Prozeduren, die den Formattyp "datapump" unterstützen, ermitteln die Chunks und laden Sie sie automatisch herunter.

    Wenn Sie DBMS_CLOUD.DELETE_OBJECT verwenden, erkennt und löscht die Prozedur automatisch die Chunks, wenn die Prozedur die primäre Datei löscht.

  • Die Prozedur DBMS_CLOUD.EXPORT_DATA erstellt die Dumpdatei(en) aus den von Ihnen angegebenen file_uri_list-Werten wie folgt:

    • Da weitere Dateien benötigt werden, erstellt die Prozedur zusätzliche Dateien aus der file_uri_list.

    • Die Prozedur überschreibt keine Dateien. Wenn eine Dumpdatei in der Datei file_uri_list vorhanden ist, meldet DBMS_CLOUD.EXPORT_DATA einen Fehler.

    • DBMS_CLOUD.EXPORT_DATA erstellt keine Buckets.

  • Die Anzahl der Dumpdateien, die DBMS_CLOUD.EXPORT_DATA generiert, wird bei der Ausführung der Prozedur bestimmt. Die Anzahl der generierten Dumpdateien hängt von der Anzahl der Dateinamen ab, die Sie im Parameter file_uri_list angeben, sowie von der Anzahl der Autonomous Database-OCPUs, die für die Instanz verfügbar sind, der Serviceebene und der Größe der Daten.

    Beispiel: Wenn Sie eine 1 OCPU-Autonomous Database-Instanz oder den low-Service verwenden, wird eine einzelne Dumpdatei ohne Parallelität exportiert, selbst wenn Sie mehrere Dateinamen angeben. Wenn Sie eine 4-OCPU-Autonomous Database-Instanz mit dem Service medium oder high verwenden, können die Jobs parallel ausgeführt werden, und mehrere Dumpdateien werden exportiert, wenn Sie mehrere Dateinamen angeben.

  • Die Dumpdateien, die Sie mit DBMS_CLOUD.EXPORT_DATA erstellen, können nicht mit Oracle Data Pump impdp importiert werden. Je nach Datenbank können Sie diese Dateien wie folgt verwenden:

    • In einer Autonomous Database können Sie die Dumpdateien mit den DBMS_CLOUD-Prozeduren verwenden, die den Parameter format type mit dem Wert "datapump" unterstützen. Sie können die Dumpdateien mit DBMS_CLOUD.COPY_DATA importieren, oder Sie können DBMS_CLOUD.CREATE_EXTERNAL_TABLE aufrufen, um eine externe Tabelle zu erstellen.

    • In jeder anderen Oracle Database, wie Oracle Database 19c On-Premise, können Sie die mit der Prozedur DBMS_CLOUD.EXPORT_DATA erstellten Dumpdateien mit dem Zugriffstreiber ORACLE_DATAPUMP importieren. Weitere Informationen finden Sie unter Daten mit dem Zugriffstreiber ORACLE_DATAPUMP entladen und laden.

  • Der angegebene Parameterwert query kann bei Bedarf eine erweiterte Abfrage sein, z.B. eine Abfrage, die Joins oder Unterabfragen enthält.

Verwendungshinweise für DBMS_CLOUD.EXPORT_DATA mit Ausgabe in ein Verzeichnis

  • Das angegebene Verzeichnis muss vorhanden sein, und Sie müssen als Benutzer ADMIN angemeldet sein oder WRITE-Zugriff auf das Verzeichnis haben.

  • DBMS_CLOUD.EXPORT_DATA erstellt keine Verzeichnisse.

  • Die Prozedur überschreibt keine Dateien. Beispiel: Wenn eine Dumpdatei in file_uri_list vorhanden ist, meldet DBMS_CLOUD.EXPORT_DATA einen Fehler wie:

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

Beispiele

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Parameter type im Format mit dem Wert 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;
/  

In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Parameter type im Format mit dem Wert 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;
/  

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Parameter type im Format mit dem Wert 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;
/

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Parameter type im Format mit dem Wert 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;
/  

Das folgende Beispiel zeigt, wie DBMS_CLOUD.EXPORT_DATA Daten mit dem Parameter type und dem Wert datapump in ein Verzeichnis exportiert:

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 Prozedur und Funktion

Diese Prozedur ist überladen. Das Prozedurformular liest ein Objekt aus dem Cloud-Objektspeicher und kopiert es in Autonomous Database. Das Funktionsformular liest ein Objekt aus Cloud Object Storage und gibt eine BLOB an Autonomous Database zurück.

Syntax

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;

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

object_uri

Objekt- oder Datei-URI. Das Format der URI ist vom eingesetzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

directory_name

Der Name des Verzeichnisses in der Datenbank.

Fußnote 1
Sie können einen Tabellen-Hyperlink-URL wie folgt verwenden:
  • Geben Sie eine einzelne Hyperlink-URL für Autonomous Database-Tabellen an.

  • Geben Sie eine durch Komma getrennte Liste der Autonomous Database-Tabellen-Hyperlinks-URLs an. Stellen Sie sicher, dass alle enthaltenen Tabellen-Hyperlinks dieselben Spaltennamen, Spaltenreihenfolge und Spaltendatentypen im selben Schema aufweisen müssen.

Weitere Informationen finden Sie unter Info zu Tabellenhyperlinks in Autonomous Database und Prozedur CREATE_URL.

file_name

Gibt den Namen der zu erstellenden Datei an. Wenn kein Dateiname angegeben wird, wird der Dateiname nach dem letzten Schrägstrich im Parameter object_uri verwendet. Verwenden Sie in Sonderfällen, z.B. wenn der Dateiname Schrägstriche enthält, den Parameter file_name.

startoffset

Der Offset in Byte, ab dem die Prozedur mit dem Lesen beginnt.

endoffset

Der Offset in Byte, bei dem die Prozedur den Lesevorgang beendet.

compression

Gibt die Komprimierung an, mit der das Objekt gespeichert wird. Wenn compression auf ‘AUTO’ gesetzt ist, wird die Datei dekomprimiert (der Wert ‘AUTO’ impliziert, dass das mit object_uri angegebene Objekt mit Gzip komprimiert ist).

Fußnote 1

Hinweis

Um DBMS_CLOUD.GET_OBJECT mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer WRITE-Berechtigungen für das Verzeichnis erteilen. Beispiel: Führen Sie den folgenden Befehl als ADMIN aus, um adb_user Schreibberechtigungen zu erteilen:

GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Rückgabewerte

Das Funktionsformular liest aus dem Objektspeicher, und DBMS_CLOUD.GET_OBJECT gibt einen BLOB zurück.

Beispiele

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

So lesen Sie Zeichendaten aus einer Datei im Objektspeicher:

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;

So fügen Sie ein Bild hinzu, das im Objektspeicher in einem BLOB in der Datenbank gespeichert ist:


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

In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

Funktion LIST_FILES

Diese Funktion listet die Dateien im angegebenen Verzeichnis auf. Die Ergebnisse umfassen die Dateinamen und zusätzliche Metadaten zu den Dateien, wie die Dateigröße in Byte sowie die Zeitstempel der Erstellung und der letzten Änderung.

Syntax

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parameter

Parameter Beschreibung

directory_name

Der Name des Verzeichnisses in der Datenbank.

Hinweise zur Verwendung

  • Um DBMS_CLOUD.LIST_FILES mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Lesezugriffsberechtigungen für das Verzeichnis erteilen. Beispiel: Führen Sie den folgenden Befehl als ADMIN aus und erteilen Sie adb_user Leseberechtigungen:

    GRANT READ ON DIRECTORY data_pump_dir TO adb_user;
  • Dies ist eine Pipelined-Tabellenfunktion mit dem Rückgabetyp DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES ruft den Prüfsummenwert nicht ab und gibt NULL für dieses Feld zurück.

Beispiel

Dies ist eine Pipelined-Funktion, die eine Zeile für jede Datei zurückgibt. Beispiel: Verwenden Sie die folgende Abfrage, um diese Funktion zu verwenden:

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

Funktion LIST_OBJECTS

Diese Funktion listet Objekte am angegebenen Speicherort im Objektspeicher auf. Die Ergebnisse umfassen die Objektnamen und zusätzliche Metadaten zu den Objekten, wie Größe, Prüfsumme sowie Zeitstempel der Erstellung und der letzten Änderung.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

location_uri

Objekt- oder Datei-URI. Das Format der URI ist vom eingesetzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

Hinweise zur Verwendung

  • Je nach den Funktionen des Objektspeichers gibt DBMS_CLOUD.LIST_OBJECTS keine Werte für bestimmte Attribute zurück, und der Rückgabewert für das Feld lautet in diesem Fall NULL.

    Alle unterstützten Objektspeicher geben Werte für die Felder OBJECT_NAME, BYTES und CHECKSUM zurück.

    In der folgenden Tabelle wird die Unterstützung für die Felder CREATED und LAST_MODIFIED nach Objektspeicher angezeigt:

    Objektspeicher CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure-nativ Gibt den Zeitstempel zurück Gibt den Zeitstempel zurück
    Oracle Cloud Infrastructure – Swift Gibt NULL zurück Gibt den Zeitstempel zurück
    Oracle Cloud Infrastructure Classic Gibt NULL zurück Gibt den Zeitstempel zurück
    Amazon S3 Gibt NULL zurück Gibt den Zeitstempel zurück
    Amazon S3-kompatibel Gibt NULL zurück Gibt den Zeitstempel zurück
    Azure Gibt den Zeitstempel zurück Gibt den Zeitstempel zurück
    GitHub-Repository    
  • Der Prüfsummenwert ist die Prüfsumme MD5. Dies ist eine Hexadezimalzahl mit 32 Zeichen, die für den Objektinhalt berechnet wird. Wenn OCI$RESOURCE_PRINCIPAL-Zugangsdaten verwendet werden, wird ein anderer Prüfsummenwert erwartet.

  • Dies ist eine Pipelined-Tabellenfunktion mit dem Rückgabetyp DBMS_CLOUD_TYPES.list_object_ret_t.

Beispiel

Dies ist eine Pipelined-Funktion, die eine Zeile für jedes Objekt zurückgibt. Beispiel: Verwenden Sie die folgende Abfrage, um diese Funktion zu verwenden:

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          

In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

Prozedur MOVE_OBJECT

Mit dieser Prozedur wird ein Objekt aus einem Cloud-Objektspeicher-Bucket oder -Ordner in einen anderen verschoben.

Der Quell- und Ziel-Bucket oder -Ordner kann sich im selben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in unterschiedlichen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Name der Quellzugangsdaten wird standardmäßig auch vom Zielspeicherort verwendet, wenn kein Zielzugangsdatenname angegeben ist.

Syntax

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Quellobjektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_object_uri

Gibt den URI an, der auf den Quell-Object Storage-Bucket oder den Quellordner verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_object_uri

Gibt die URI für den Object Storage-Ziel-Bucket oder -Ordner an, in den die Dateien verschoben werden müssen.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort des Ziels.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_object_uri auf den source_credential_name-Wert gesetzt.

Beispiel

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

Prozedur PUT_OBJECT

Diese Prozedur ist überladen. In einem Formular kopiert die Prozedur eine Datei aus Autonomous Database in den Cloud-Objektspeicher. In einer anderen Form kopiert die Prozedur eine BLOB aus Autonomous Database in den Cloud Object Storage.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

object_uri

Objekt- oder Datei-URI. Das Format der URI ist vom eingesetzten Cloud-Objektspeichersystem abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für DBMS_CLOUD.

directory_name

Der Name des Verzeichnisses in Autonomous Database.

Fußnote 2

contents

Gibt die BLOB an, die aus Autonomous Database in den Cloud-Objektspeicher kopiert werden soll.

file_name

Der Name der Datei im angegebenen Verzeichnis.

compression

Gibt die Komprimierung an, mit der das Objekt gespeichert wird.

Standardwert: NULL

Fußnote 2

Hinweis

Um DBMS_CLOUD.PUT_OBJECT mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Leseberechtigungen auf dem Verzeichnis erteilen. Beispiel: Führen Sie den folgenden Befehl als ADMIN aus, um adb_user Leseberechtigungen zu erteilen:

GRANT READ ON DIRECTORY data_pump_dir TO adb_user;

Beispiel

So verarbeiten Sie BLOB-Daten nach der datenbankinternen Verarbeitung und speichern die Daten dann direkt in einer Datei im Objektspeicher:

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

Hinweise zur Verwendung

Je nach Cloud-Objektspeicher ist die Größe des Objekts, das Sie übertragen, wie folgt begrenzt:

Cloud Object Storage-Service Limit für Objektübertragungsgröße

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage oder Azure Data Lake Storage

256 MB

Amazon S3-kompatibel

Vom Objektspeicherprovider festgelegt. Weitere Informationen entnehmen Sie bitte der entsprechenden Dokumentation.

Der Oracle Cloud Infrastructure-Objektspeicher lässt das Schreiben von Dateien in einen öffentlichen Bucket ohne Angabe von Zugangsdaten nicht zu (mit Oracle Cloud Infrastructure können Benutzer Objekte aus öffentlichen Buckets herunterladen). Daher müssen Sie einen Zugangsdatennamen mit gültigen Zugangsdaten angeben, um ein Objekt in einem öffentlichen Oracle Cloud Infrastructure-Bucket mit PUT_OBJECT zu speichern.

Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

Prozedur SYNC_EXTERNAL_PART_TABLE

Mit diesem Verfahren wird das Aktualisieren einer externen partitionierten Tabelle aus Dateien in der Cloud vereinfacht. Führen Sie diese Prozedur aus, wenn neue Partitionen hinzugefügt werden oder wenn Partitionen aus der Objektspeicherquelle für die externe partitionierte Tabelle entfernt werden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle. Die Zieltabelle muss erstellt werden, bevor Sie DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE ausführen.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

update_columns

Die neuen Dateien können eine Änderung am Schema bewirken. Folgende Aktualisierungen werden unterstützt: neue Spalten, gelöschte Spalten. Aktualisierungen vorhandener Spalten, z.B. eine Änderung des Datentyps, werfen Fehler aus.

Standardwert: False

Prozedur VALIDATE_EXTERNAL_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine externe partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für diese externe Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

partition_name

Wenn definiert, wird nur eine bestimmte Partition validiert. Wenn keine Angabe gemacht wird, lesen Sie alle Partitionen sequenziell, bis rowcount erreicht ist.

subpartition_name

Wenn definiert, wird nur eine bestimmte Unterpartition validiert. Wenn keine Angabe gemacht wird, werden alle externen Partitionen oder Unterpartitionen sequenziell gelesen, bis rowcount erreicht ist.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

partition_key_validation

Nur für interne Verwendung. Verwenden Sie diesen Parameter nicht.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.

Prozedur VALIDATE_EXTERNAL_TABLE

Diese Prozedur validiert die Quelldateien für eine externe Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.

Wenn sich die externe Tabelle auf Avro-, ORC- oder Parquet-Dateien bezieht, wird die Validierung bei der ersten abgelehnten Zeile gestoppt.

Wenn die externe Tabelle den Parameter format type angibt, der auf den Wert avro, orc oder parquet gesetzt ist, hat der Parameter stop_on_error effektiv immer den Wert TRUE. Daher ist die Tabellen-Badfile für eine externe Tabelle, die sich auf Avro-, ORC- oder Parquet-Dateien bezieht, immer leer.

Hinweise zur Verwendung

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funktioniert sowohl mit partitionierten externen Tabellen als auch mit hybriden partitionierten Tabellen. Dadurch werden möglicherweise Daten aus allen externen Partitionen gelesen, bis rowcount erreicht ist oder stop_on_error angewendet wird. Sie haben keine Kontrolle darüber, welche Partition oder Teile einer Partition in welcher Reihenfolge gelesen werden.

Prozedur VALIDATE_HYBRID_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine hybride partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die mobile Tabelle angegebenen Formatoptionen in einer Badfile-Tabelle in Autonomous Database nicht entsprechen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

partition_name

Wenn definiert, wird nur eine bestimmte Partition validiert. Wenn keine Angabe gemacht wird, lesen Sie von allen externen Partitionen sequenziell, bis rowcount erreicht ist.

subpartition_name

Wenn definiert, wird nur eine bestimmte Unterpartition validiert. Wenn keine Angabe gemacht wird, werden alle externen Partitionen oder Unterpartitionen sequenziell gelesen, bis rowcount erreicht ist.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

partition_key_validation

Nur für interne Verwendung. Verwenden Sie diesen Parameter nicht.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.

DBMS_CLOUD für Dateiverwaltung im Bulkverfahren

Die Unterprogramme für Bulkdateivorgänge im Package DBMS_CLOUD.

Unterprogramm Beschreibung
Prozedur BULK_COPY

Bei dieser Prozedur werden Dateien von einem Cloud-Objektspeicher-Bucket in einen anderen kopiert.

Prozedur BULK_DELETE

Mit dieser Prozedur werden Dateien aus dem Cloud-Objektspeicher-Bucket oder -Ordner gelöscht.

Prozedur BULK_DOWNLOAD

Mit dieser Prozedur werden Dateien aus dem Cloud-Objektspeicher-Bucket in ein Verzeichnis in Autonomous Database heruntergeladen.

Prozedur BULK_MOVE

Mit diesem Verfahren werden Dateien von einem Cloud-Objektspeicher-Bucket in einen anderen verschoben.

Prozedur BULK_UPLOAD

Mit dieser Prozedur werden Dateien aus einem Verzeichnis in Autonomous Database in den Cloud-Objektspeicher hochgeladen.

Prozedur BULK_COPY

Mit dieser Prozedur werden Dateien von einem Cloud-Objektspeicher-Bucket in einen anderen kopiert. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Sie können die Liste der zu löschenden Dateien mit einem regulären Ausdrucksmuster filtern, das mit dem Operator REGEXP_LIKE kompatibel ist.

Der Quell- und Ziel-Bucket oder -Ordner kann sich im selben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in unterschiedlichen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Name der Quellzugangsdaten wird standardmäßig auch vom Zielspeicherort verwendet.

Syntax

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

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_location_uri

Gibt den URI an, der auf den Quell-Object Storage-Bucket oder den Quellordner verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_location_uri

Gibt die URI für den Ziel-Object Storage-Bucket oder -Ordner an, in den die Dateien kopiert werden müssen.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort des Ziels.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_location_uri auf den source_credential_name-Wert gesetzt.

regex_filter

Gibt den REGEX-Ausdruck zum Filtern von Dateien an. Das REGEX-Ausdrucksmuster muss mit dem Operator REGEXP_LIKE kompatibel sein.

Wenn Sie keinen regex_filter-Wert angeben, wird regex_filter auf NULL gesetzt.

Weitere Informationen finden Sie unter REGEXP_LIKE Bedingung.

format

Gibt die zusätzlichen Konfigurationsoptionen für den Dateivorgang an. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:
  • logretention: Es akzeptiert einen Ganzzahlwert, der die Dauer in Tagen bestimmt, für die die Statustabelle für einen Bulkvorgang beibehalten wird.

    Der Standardwert ist 2 Tage.

  • logprefix: Es akzeptiert einen Zeichenfolgenwert, der die Präfixzeichenfolge für die Statustabelle für den Bulkvorgang bestimmt.

    Der Vorgangstyp ist der Standardwert. Für BULK_COPY ist der Standardwert logprefix COPYOBJ.

  • priority: Es akzeptiert einen Zeichenfolgenwert, der die Anzahl der gleichzeitig ausgeführten Dateivorgänge bestimmt.

    Ein Vorgang mit einer höheren Priorität belegt mehr Datenbankressourcen und sollte schneller ausgeführt werden.

    Folgende Werte werden akzeptiert:

    • HIGH: Bestimmt die Anzahl der parallelen Dateien, die mit der ECPU-Anzahl der Datenbank verarbeitet werden (OCPU-Anzahl, wenn Ihre Datenbank OCPUs verwendet)

    • MEDIUM: Bestimmt die Anzahl gleichzeitiger Prozesse mit dem Nebenläufigkeitslimit für den Mediumservice. Der Standardwert ist 4.

    • LOW: Verarbeiten Sie die Dateien in serieller Reihenfolge.

    Der Standardwert ist MEDIUM.

    Die maximale Anzahl nebenläufiger Dateivorgänge ist auf 64 begrenzt.

Wenn Sie keinen format-Wert angeben, wird format auf NULL gesetzt.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Hinweise zur Verwendung

  • Ein Fehler wird zurückgegeben, wenn die Quell- und Ziel-URI auf denselben Objektspeicher-Bucket oder -Ordner verweisen.

Beispiel

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

Prozedur BULK_DELETE

Mit dieser Prozedur werden Dateien im Bulkverfahren aus dem Cloud Object Storage gelöscht. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden. Sie können die Liste der zu löschenden Dateien mit einem regulären Ausdrucksmuster filtern, das mit dem Operator REGEXP_LIKE kompatibel ist.

Syntax

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

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

location_uri

Gibt einen URI an, der auf einen Object Storage-Speicherort in Autonomous Database verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

regex_filter

Gibt den REGEX-Ausdruck zum Filtern von Dateien an. Das REGEX-Ausdrucksmuster muss mit dem Operator REGEXP_LIKE kompatibel sein.

Wenn Sie keinen regex_filter-Wert angeben, wird regex_filter auf NULL gesetzt.

Weitere Informationen finden Sie unter REGEXP_LIKE Bedingung.

format

Gibt die zusätzlichen Konfigurationsoptionen für den Dateivorgang an. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:
  • logretention: Es akzeptiert einen Ganzzahlwert, der die Dauer in Tagen bestimmt, für die die Statustabelle für einen Bulkvorgang beibehalten wird.

    Der Standardwert ist 2 Tage.

  • logprefix: Es akzeptiert einen Zeichenfolgenwert, der die Präfixzeichenfolge für die Statustabelle für den Bulkvorgang bestimmt.

    Der Vorgangstyp ist der Standardwert. Für BULK_DELETE ist der Standardwert logprefix DELETE.

  • priority: Es akzeptiert einen Zeichenfolgenwert, der die Anzahl der gleichzeitig ausgeführten Dateivorgänge bestimmt.

    Ein Vorgang mit einer höheren Priorität belegt mehr Datenbankressourcen und wird früher abgeschlossen.

    Folgende Werte werden akzeptiert:

    • HIGH: Bestimmt die Anzahl der parallelen Dateien, die mit der ECPU-Anzahl der Datenbank verarbeitet werden (OCPU-Anzahl, wenn Ihre Datenbank OCPUs verwendet).

    • MEDIUM: Bestimmt die Anzahl gleichzeitiger Prozesse mit dem Nebenläufigkeitslimit für den Mediumservice. Der Standardwert ist 4.

    • LOW: Verarbeiten Sie die Dateien in serieller Reihenfolge.

    Der Standardwert ist MEDIUM.

    Die maximale Anzahl nebenläufiger Dateivorgänge ist auf 64 begrenzt.

Wenn Sie keinen format-Wert angeben, wird format auf NULL gesetzt.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

Prozedur BULK_DOWNLOAD

Mit dieser Prozedur werden Dateien aus Cloud Object Storage in ein Autonomous Database-Verzeichnis heruntergeladen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden. Sie können die Liste der herunterzuladenden Dateien mit einem regulären Ausdrucksmuster filtern, das mit dem Operator REGEXP_LIKE kompatibel ist.

Syntax

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

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

location_uri

Gibt einen URI an, der auf einen Object Storage-Speicherort in Autonomous Database verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

directory_name

Der Name des Verzeichnisses in der Autonomous Database, aus dem Sie die Dateien herunterladen möchten.

Dieser Parameter ist obligatorisch.

regex_filter

Gibt den REGEX-Ausdruck zum Filtern von Dateien an. Das REGEX-Ausdrucksmuster muss mit dem Operator REGEXP_LIKE kompatibel sein.

Wenn Sie keinen regex_filter-Wert angeben, wird regex_filter auf NULL gesetzt.

Weitere Informationen finden Sie unter REGEXP_LIKE Bedingung.

format

Gibt die zusätzlichen Konfigurationsoptionen für den Dateivorgang an. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:
  • logretention: Es akzeptiert einen Ganzzahlwert, der die Dauer in Tagen bestimmt, für die die Statustabelle für einen Bulkvorgang beibehalten wird.

    Der Standardwert ist 2 Tage.

  • logprefix: Es akzeptiert einen Zeichenfolgenwert, der die Präfixzeichenfolge für die Statustabelle für den Bulkvorgang bestimmt. Für BULK_DOWNLOAD ist der Standardwert logprefix DOWNLOAD.

    Der Vorgangstyp ist der Standardwert.

  • priority: Es akzeptiert einen Zeichenfolgenwert, der die Anzahl der gleichzeitig ausgeführten Dateivorgänge bestimmt.

    Ein Vorgang mit einer höheren Priorität belegt mehr Datenbankressourcen und wird früher abgeschlossen.

    Folgende Werte werden akzeptiert:

    • HIGH: Bestimmt die Anzahl der parallelen Dateien, die mit der ECPU-Anzahl der Datenbank verarbeitet werden (OCPU-Anzahl, wenn Ihre Datenbank OCPUs verwendet).

    • MEDIUM: Bestimmt die Anzahl gleichzeitiger Prozesse mit dem Nebenläufigkeitslimit für den Mediumservice. Der Standardwert ist 4.

    • LOW: Verarbeiten Sie die Dateien in serieller Reihenfolge.

    Der Standardwert ist MEDIUM.

    Die maximale Anzahl nebenläufiger Dateivorgänge ist auf 64 begrenzt.

Wenn Sie keinen format-Wert angeben, wird format auf NULL gesetzt.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

Prozedur BULK_MOVE

Mit dieser Prozedur werden Dateien per Bulkvorgang von einem Cloud Object Storage-Bucket oder -Ordner in einen anderen verschoben. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Sie können die Liste der zu löschenden Dateien mit einem regulären Ausdrucksmuster filtern, das mit dem Operator REGEXP_LIKE kompatibel ist.

Der Quell- und Ziel-Bucket oder -Ordner kann sich im selben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in unterschiedlichen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Name der Quellzugangsdaten wird standardmäßig auch vom Zielspeicherort verwendet, wenn kein Zielzugangsdatenname angegeben ist.

Der erste Schritt beim Verschieben von Dateien besteht darin, sie in den Zielspeicherort zu kopieren und dann die Quelldateien zu löschen, sobald sie erfolgreich kopiert wurden.

Das Objekt wird umbenannt und nicht verschoben, wenn der Objektspeicher Umbenennungsvorgänge zwischen Quell- und Zielspeicherorten zulässt.

Syntax

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

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Quellobjektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_location_uri

Gibt den URI an, der auf den Quell-Object Storage-Bucket oder den Quellordner verweist.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_location_uri

Gibt die URI für den Object Storage-Ziel-Bucket oder -Ordner an, in den die Dateien verschoben werden müssen.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort des Ziels.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_location_uri auf den source_credential_name-Wert gesetzt.

regex_filter

Gibt den REGEX-Ausdruck zum Filtern von Dateien an. Das REGEX-Ausdrucksmuster muss mit dem Operator REGEXP_LIKE kompatibel sein.

Wenn Sie keinen regex_filter-Wert angeben, wird regex_filter auf NULL gesetzt.

Weitere Informationen finden Sie unter REGEXP_LIKE Bedingung.

format

Gibt die zusätzlichen Konfigurationsoptionen für den Dateivorgang an. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:
  • logretention: Es akzeptiert einen Ganzzahlwert, der die Dauer in Tagen bestimmt, für die die Statustabelle für einen Bulkvorgang beibehalten wird.

    Der Standardwert ist 2 Tage.

  • logprefix: Es akzeptiert einen Zeichenfolgenwert, der die Präfixzeichenfolge für die Statustabelle für den Bulkvorgang bestimmt.

    Der Vorgangstyp ist der Standardwert. Für BULK_MOVE ist der Standardwert logprefix MOVE.

  • priority: Es akzeptiert einen Zeichenfolgenwert, der die Anzahl der gleichzeitig ausgeführten Dateivorgänge bestimmt.

    Ein Vorgang mit einer höheren Priorität belegt mehr Datenbankressourcen und wird früher abgeschlossen.

    Folgende Werte werden akzeptiert:

    • HIGH: Bestimmt die Anzahl der parallelen Dateien, die mit der ECPU-Anzahl der Datenbank verarbeitet werden (OCPU-Anzahl, wenn Ihre Datenbank OCPUs verwendet).

    • MEDIUM: Bestimmt die Anzahl gleichzeitiger Prozesse mit dem Nebenläufigkeitslimit für den Mediumservice. Der Standardwert ist 4.

    • LOW: Verarbeiten Sie die Dateien in serieller Reihenfolge.

    Der Standardwert ist MEDIUM.

    Die maximale Anzahl nebenläufiger Dateivorgänge ist auf 64 begrenzt.

Wenn Sie keinen format-Wert angeben, wird format auf NULL gesetzt.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

Ein Fehler wird zurückgegeben, wenn die Quell- und Ziel-URI auf denselben Objektspeicher-Bucket oder -Ordner verweisen.

Prozedur BULK_UPLOAD

Mit dieser Prozedur werden Dateien aus einem Autonomous Database-Verzeichnis in Cloud Object Storage kopiert. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

Wenn Sie keinen credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

location_uri

Gibt einen URI an, der auf einen Object Storage-Speicherort verweist, um Dateien hochzuladen.

Dieser Parameter ist obligatorisch.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate.

directory_name

Der Name des Verzeichnisses in der Autonomous Database, aus dem Sie Dateien hochladen.

Dieser Parameter ist obligatorisch.

regex_filter

Gibt den REGEX-Ausdruck zum Filtern von Dateien an. Das REGEX-Ausdrucksmuster muss mit dem Operator REGEXP_LIKE kompatibel sein.

Wenn Sie keinen regex_filter-Wert angeben, wird regex_filter auf NULL gesetzt.

Weitere Informationen finden Sie unter REGEXP_LIKE Bedingung.

format

Gibt die zusätzlichen Konfigurationsoptionen für den Dateivorgang an. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:
  • logretention: Es akzeptiert einen Ganzzahlwert, der die Dauer in Tagen bestimmt, für die die Statustabelle für einen Bulkvorgang beibehalten wird.

    Der Standardwert ist 2 Tage.

  • logprefix: Es akzeptiert einen Zeichenfolgenwert, der die Präfixzeichenfolge für die Statustabelle für den Bulkvorgang bestimmt.

    Der Vorgangstyp ist der Standardwert. Für BULK_UPLOAD ist der Standardwert logprefix UPLOAD.

  • priority: Es akzeptiert einen Zeichenfolgenwert, der die Anzahl der gleichzeitig ausgeführten Dateivorgänge bestimmt.

    Ein Vorgang mit einer höheren Priorität belegt mehr Datenbankressourcen und wird früher abgeschlossen.

    Folgende Werte werden akzeptiert:

    • HIGH: Bestimmt die Anzahl der parallelen Dateien, die mit der ECPU-Anzahl der Datenbank verarbeitet werden (OCPU-Anzahl, wenn Ihre Datenbank OCPUs verwendet).

    • MEDIUM: Bestimmt die Anzahl gleichzeitiger Prozesse mit dem Nebenläufigkeitslimit für den Mediumservice. Der Standardwert ist 4.

    • LOW: Verarbeiten Sie die Dateien in serieller Reihenfolge.

    Der Standardwert ist MEDIUM.

    Die maximale Anzahl nebenläufiger Dateivorgänge ist auf 64 begrenzt.

Wenn Sie keinen format-Wert angeben, wird format auf NULL gesetzt.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

DBMS_CLOUD-REST-APIs

In diesem Abschnitt werden die REST-APIs DBMS_CLOUD beschrieben, die mit Autonomous Database bereitgestellt werden.

REST-API Beschreibung

Funktion GET_RESPONSE_HEADERS

Diese Funktion gibt die HTTP-Antwortheader als JSON-Daten in einem JSON-Objekt in Autonomous Database zurück.

Funktion GET_RESPONSE_RAW

Diese Funktion gibt die HTTP-Antwort im RAW-Format Autonomous Database zurück. Dies ist nützlich, wenn die HTTP-Antwort als Binärformat erwartet wird.

Funktion GET_RESPONSE_STATUS_CODE

Diese Funktion gibt den HTTP-Antwortstatuscode als Ganzzahl in Autonomous Database zurück. Mit dem Statuscode können Sie feststellen, ob die Anforderung erfolgreich war.

Funktion GET_RESPONSE_TEXT

Diese Funktion gibt die HTTP-Antwort im TEXT-Format (VARCHAR2 oder CLOB) in Autonomous Database zurück. Normalerweise geben die meisten Cloud-REST-APIs eine JSON-Antwort im Textformat zurück. Diese Funktion ist nützlich, wenn Sie erwarten, dass die HTTP-Antwort im Textformat vorliegt.

Funktion GET_API_RESULT_CACHE_SIZE

Diese Funktion gibt die konfigurierte Ergebniscachegröße zurück.

SEND_REQUEST Funktion und Prozedur

Diese Funktion startet eine HTTP-Anforderung, ruft die Antwort ab und beendet die Antwort in Autonomous Database. Diese Funktion bietet einen Workflow zum Senden einer Cloud-REST-API-Anforderung mit Argumenten sowie einem Antwortcode und einer Payload für die Rückgabe.

Prozedur SET_API_RESULT_CACHE_SIZE

Diese Prozedur legt die maximale Cachegröße für die aktuelle Session fest.

DBMS_CLOUD REST-APIs - Überblick

Wenn Sie PL/SQL in Ihrer Anwendung verwenden und Cloud-REST-APIs aufrufen müssen, können Sie DBMS_CLOUD.SEND_REQUEST verwenden, um die REST-API-Anforderungen zu senden.

Mit den REST-API-Funktionen DBMS_CLOUD können Sie HTTP-Anforderungen mit DBMS_CLOUD.SEND_REQUEST ausführen und Ergebnisse abrufen und speichern. Diese Funktionen stellen eine generische API bereit, mit der Sie jede REST-API mit den folgenden unterstützten Cloud-Services aufrufen können:

DBMS_CLOUD REST-API-Konstanten

Beschreibt die DBMS_CLOUD-Konstanten zum Erstellen von HTTP-Anforderungen mit DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD unterstützt die HTTP-Methoden GET, PUT, POST, HEAD und DELETE. Die REST-API-Methode, die für eine HTTP-Anforderung verwendet werden soll, ist in der Regel in der Cloud-REST-API-Dokumentation dokumentiert.

Name Typ Wert
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 REST-API-Ergebniscache

Sie können die REST-API-Ergebnisse DBMS_CLOUD speichern, wenn Sie den Parameter cache mit DBMS_CLOUD.SEND_REQUEST auf "true" setzen. Die Ansicht SESSION_CLOUD_API_RESULTS beschreibt die Spalten, die Sie verwenden können, wenn REST-API-Ergebnisse gespeichert werden.

Standardmäßig speichern REST-API-Aufrufe vom Typ DBMS_CLOUD keine Ergebnisse für Ihre Session. In diesem Fall verwenden Sie die Funktion DBMS_CLOUD.SEND_REQUEST, um Ergebnisse zurückzugeben.

Wenn Sie DBMS_CLOUD.SEND_REQUEST verwenden und den Parameter cache auf TRUE setzen, werden Ergebnisse gespeichert, und Sie können vergangene Ergebnisse in der Ansicht SESSION_CLOUD_API_RESULTS anzeigen. Das Speichern und Abfragen historischer Ergebnisse von REST-API-Anforderungen für DBMS_CLOUD kann Ihnen helfen, wenn Sie mit Ihren vorherigen Ergebnissen in Ihren Anwendungen arbeiten müssen.

Beispiel: Um aktuelle REST-API-Ergebnisse der DBMS_CLOUD abzufragen, verwenden Sie die Ansicht SESSION_CLOUD_API_RESULTS:

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

Wenn Sie die REST-API-Ergebnisse DBMS_CLOUD mit DBMS_CLOUD.SEND_REQUEST speichern, sind die gespeicherten Daten nur innerhalb derselben Session (Verbindung) verfügbar. Nach dem Beenden der Session sind die gespeicherten Daten nicht mehr verfügbar.

Mit DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE und DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE können Sie die REST-API-Cachegröße DBMS_CLOUD anzeigen und festlegen sowie das Caching deaktivieren.

Parameter DBMS_CLOUD REST-API-Ergebnisse cache_scope

Wenn Sie die REST-API-Ergebnisse DBMS_CLOUD mit DBMS_CLOUD.SEND_REQUEST speichern, wird der Zugriff auf die Ergebnisse in SESSION_CLOUD_API_RESULTS basierend auf dem Wert von cache_scope bereitgestellt.

Standardmäßig ist cache_scope 'PRIVATE', und nur der aktuelle Benutzer der Session kann auf die Ergebnisse zugreifen. Wenn Sie cache_scope auf 'PUBLIC' setzen, können alle Sessionbenutzer auf die Ergebnisse zugreifen. Der Standardwert für cache_scope gibt an, dass jeder Benutzer nur die REST-API-Ergebnisse DBMS_CLOUD.SEND_REQUEST anzeigen kann, die von den Prozeduren generiert werden, die er mit den Rechten des Aufrufers aufruft. Wenn Sie DBMS_CLOUD.SEND_REQUEST in einer Session aufrufen, gibt es drei Möglichkeiten, die basierend auf dem Wert cache_scope bestimmen, ob der aktuelle Benutzer Ergebnisse im Cache anzeigen kann:

  • Sie führen DBMS_CLOUD.SEND_REQUEST direkt als Anweisung der obersten Ebene aus. Der Aufruf von DBMS_CLOUD.SEND_REQUEST und die REST-API-Ergebnisse werden mit demselben Benutzernamen gespeichert. In diesem Fall haben Sie Zugriff auf alle Ergebnisse mit dem Standardwert "PRIVATE'", der für cache_scope festgelegt ist.

  • Sie schreiben die Rechteprozedur eines Wrapper-Ausführers. Als aktueller Benutzer ruft Ihr Aufruf mit DBMS_CLOUD.SEND_REQUEST die Prozedur auf, und die REST-API-Ergebnisse werden mit demselben Benutzernamen gespeichert. In diesem Fall haben Sie Zugriff auf alle Ergebnisse mit dem Standardwert "PRIVATE'", der für cache_scope festgelegt ist.

  • Sie schreiben die Rechteprozedur eines Wrapper-Definers, und die Prozedur gehört einem anderen Benutzer. Wenn Sie DBMS_CLOUD.SEND_REQUEST innerhalb der Prozedur aufrufen, werden die Ergebnisse mit dem Benutzernamen des Prozedurverantwortlichen gespeichert.

    In diesem Fall ruft ein anderer Benutzer mit den Berechtigungen eines Eigentümers DBMS_CLOUD.SEND_REQUEST auf, und die REST-API-Ergebnisse werden mit dem Eigentümer dieser Prozedur gespeichert. Wenn cache_scope in diesem Fall standardmäßig PRIVATE' ist, kann die Session des ausführenden Benutzers die Ergebnisse nicht sehen.

    Wenn der Eigentümer der Prozedur des Eigentümers die Ergebnisse für jeden aufrufenden Sessionbenutzer verfügbar machen möchte, muss er cache_scope in der DBMS_CLOUD.SEND_REQUEST auf 'PUBLIC' setzen.

DBMS_CLOUD REST-API SESSION_CLOUD_API_RESULTS-Ansicht

Sie können die REST-API-Ergebnisse DBMS_CLOUD speichern, wenn Sie den Parameter cache mit DBMS_CLOUD.SEND_REQUEST auf "true" setzen. Die Ansicht SESSION_CLOUD_API_RESULTS beschreibt die Spalten, die Sie verwenden können, wenn REST-API-Ergebnisse gespeichert werden.

Die Ansicht SESSION_CLOUD_API_RESULTS ist die Ansicht, die erstellt wird, wenn Sie Ergebnisse mit DBMS_CLOUD.SEND_REQUEST cachen. Sie können historische Ergebnisse abfragen, die zu Ihrer Benutzersession gehören. Wenn die Session beendet wird, werden die Daten in der SESSION_CLOUD_API_RESULTS gelöscht.

Spalte Beschreibung
URI Die REST-API-Anforderungs-URL DBMS_CLOUD
TIMESTAMP Zeitstempel der REST-API-Antwort DBMS_CLOUD
CLOUD_TYPE Der REST-API-Cloudtyp DBMS_CLOUD, wie Oracle Cloud Infrastructure, AMAZON_S3 und AZURE_BLOB
REQUEST_METHOD Die REST-API-Anforderungsmethode DBMS_CLOUD, wie GET, PUT, HEAD
REQUEST_HEADERS Die REST-API-Anforderungsheader DBMS_CLOUD
REQUEST_BODY_TEXT Der REST-API-Anforderungsbody DBMS_CLOUD in CLOB
RESPONSE_STATUS_CODE Der REST-API-Antwortstatuscode DBMS_CLOUD, wie 200(OK), 404(Not Found)
RESPONSE_HEADERS Die REST-API-Antwortheader DBMS_CLOUD
RESPONSE_BODY_TEXT Der REST-API-Antwortbody DBMS_CLOUD in CLOB
SCOPE

Die cache_scope, die von DBMS_CLOUD.SEND_REQUEST festgelegt wird. Gültige Werte sind PUBLIC oder PRIVATE.

Funktion GET_RESPONSE_HEADERS

Diese Funktion gibt die HTTP-Antwortheader als JSON-Daten in einem JSON-Objekt zurück.

Syntax

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

Parameter

Parameter Beschreibung
resp

HTTP-Antworttyp von DBMS_CLOUD.SEND_REQUEST zurückgegeben.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid_response ORA-20025

Ungültiges Antworttypobjekt an DBMS_CLOUD.GET_RESPONSE_HEADERS übergeben.

Funktion GET_RESPONSE_RAW

Diese Funktion gibt die HTTP-Antwort im RAW-Format zurück. Dies ist nützlich, wenn die HTTP-Antwort als Binärformat erwartet wird.

Syntax

DBMS_CLOUD.GET_RESPONSE_RAW(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN BLOB;

Parameter

Parameter Beschreibung
resp

HTTP-Antworttyp von DBMS_CLOUD.SEND_REQUEST zurückgegeben.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid_response ORA-20025

Ungültiges Antworttypobjekt an DBMS_CLOUD.GET_RESPONSE_RAW übergeben.

Funktion GET_RESPONSE_STATUS_CODE

Diese Funktion gibt den HTTP-Antwortstatuscode als Ganzzahl zurück. Mit dem Statuscode können Sie feststellen, ob die Anforderung erfolgreich war.

Syntax

DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN PLS_INTEGER;

Parameter

Parameter Beschreibung
resp

HTTP-Antworttyp von DBMS_CLOUD.SEND_REQUEST zurückgegeben.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid_response ORA-20025

Ungültiges Antworttypobjekt an DBMS_CLOUD.GET_RESPONSE_STATUS_CODE übergeben.

Funktion GET_RESPONSE_TEXT

Diese Funktion gibt die HTTP-Antwort im Format TEXT (VARCHAR2 oder CLOB) zurück. Normalerweise geben die meisten Cloud-REST-APIs eine JSON-Antwort im Textformat zurück. Diese Funktion ist nützlich, wenn Sie erwarten, dass die HTTP-Antwort im Textformat vorliegt.

Syntax

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

Parameter

Parameter Beschreibung
resp

HTTP-Antworttyp von DBMS_CLOUD.SEND_REQUEST zurückgegeben.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid_response ORA-20025

Ungültiges Antworttypobjekt an DBMS_CLOUD.GET_RESPONSE_TEXT übergeben.

Funktion GET_API_RESULT_CACHE_SIZE

Diese Funktion gibt die konfigurierte Ergebniscachegröße zurück. Der Wert für die Cachegröße gilt nur für die aktuelle Session.

Syntax

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST Funktion und Prozedur

Diese Funktion und Prozedur startet eine HTTP-Anforderung, ruft die Antwort ab und beendet die Antwort. Diese Funktion bietet einen Workflow zum Senden einer Cloud-REST-API-Anforderung mit Argumenten. Die Funktion gibt einen Antwortcode und eine Payload zurück. Wenn Sie die Prozedur verwenden, können Sie Ergebnisse und Antwortdetails aus den gespeicherten Ergebnissen mit der Ansicht SESSION_CLOUD_API_RESULTS anzeigen.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für die Authentifizierung mit der entsprechenden Cloud-nativen API.

Sie können 'OCI$RESOURCE_PRINCIPAL' als credential_name verwenden, wenn der Resource Principal aktiviert ist. Weitere Informationen finden Sie unter ENABLE_RESOURCE_PRINCIPAL.

uri

HTTP-URI für die Anforderung.

method

HTTP-Anforderungsmethode: GET, PUT, POST, HEAD, DELETE. Geben Sie die Methode mit der Packagekonstante DBMS_CLOUD an.

Weitere Informationen finden Sie unter REST-API-Konstanten DBMS_CLOUD.

headers

HTTP-Anforderungsheader für die entsprechende Cloud-native API im JSON-Format. Die Authentifizierungsheader werden automatisch festgelegt. Übergeben Sie nur benutzerdefinierte Header.

async_request_url

Eine asynchrone Anforderungs-URL.

Um die URL abzurufen, wählen Sie die Anforderungs-API aus der Liste der APIs aus (siehe https://docs.cloud.oracle.com/en-us/iaas/api/). Navigieren Sie dann im linken Fensterbereich, um die API für Ihre Anforderung zu suchen. Beispiel: Datenbankservices-API → Autonomous Database → StopAutonomousDatabase. Auf dieser Seite wird das API-Home (und der Basisendpunkt) angezeigt. Hängen Sie dann den Basisendpunkt an den relativen Pfad an, der für den Link WorkRequest der Arbeitsanforderung abgerufen wurde.

wait_for_states

"Auf Status warten" ist ein Status vom Typ: DBMS_CLOUD_TYPES.wait_for_states_t. Folgende Werte sind für erwartete Statuswerte gültig: "ACTIVE", "CANCELED", "COMPLETED", "DELETED", "FAILED", "SUCCEEDED".

Für wait_for_states sind mehrere Status zulässig. Der Standardwert für wait_for_states besteht darin, auf einen der erwarteten Status zu warten: 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

timeout

Gibt den Timeout in Sekunden für asynchrone Anforderungen mit den Parametern async_request_url und wait_for_states an.

Der Standardwert ist 0. Gibt an, dass ohne Timeout auf den Abschluss der Anforderung gewartet wird.

cache

Wenn TRUE angibt, dass die Anforderung im REST-Ergebnis-API-Cache gecacht werden soll.

Der Standardwert ist FALSE. Das bedeutet, dass REST-API-Anforderungen nicht gecacht werden.

cache_scope

Gibt an, ob jeder Zugriff auf diesen Anforderungsergebniscache haben kann. Gültige Werte: "PRIVATE" und "PUBLIC". Der Standardwert ist "PRIVATE".

body

HTTP-Anforderungsbody für PUT- und POST-Anforderungen.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid_req_method ORA-20023

An DBMS_CLOUD.SEND_REQUEST übergebene Anforderungsmethode ist ungültig.

invalid_req_header ORA-20024

An DBMS_CLOUD.SEND_REQUEST übergebene Anforderungsheader haben kein gültiges JSON-Format.

Hinweise zur Verwendung

  • Wenn Sie Oracle Cloud Infrastructure verwenden, müssen Sie einen signierungsschlüsselbasierten Zugangsdatenwert für die credential_name verwenden. Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  • Mit den optionalen Parametern async_request_url, wait_for_states und timeout können Sie Anforderungen mit langer Ausführungszeit verarbeiten. Mit dieser asynchronen Form von send_request wartet die Funktion auf den Abschlussstatus, der in wait_for_states angegeben ist, bevor sie zurückkehrt. Wenn diese Parameter in der Sendeanforderung die erwarteten Rückgabezustände im Parameter wait_for_states übergeben und Sie mit dem Parameter async_request_url eine zugeordnete Arbeitsanforderung angeben, wird die Anforderung nicht sofort zurückgegeben. Stattdessen prüft die Anforderung async_request_url, bis der Rückgabestatus einer der erwarteten Statuswerte ist oder timeout überschritten wird (timeout ist optional). Wenn kein timeout angegeben ist, wartet die Anforderung, bis ein Status in wait_for_states auftritt.

Prozedur SET_API_RESULT_CACHE_SIZE

Diese Prozedur legt die maximale Cachegröße für die aktuelle Session fest. Der Wert für die Cachegröße gilt nur für die aktuelle Session.

Syntax

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

Parameter

Parameter Beschreibung
cache_size

Legen Sie die maximale Cachegröße auf den angegebenen Wert cache_size fest. Wenn die neue maximale Cachegröße kleiner als die aktuelle Cachegröße ist, werden ältere Datensätze gelöscht, bis die Anzahl der Zeilen der angegebenen maximalen Cachegröße entspricht. Der Höchstwert ist 10000.

Wenn die Cachegröße auf 0 gesetzt ist, ist das Caching in der Session deaktiviert.

Die Standardcachegröße ist 10.

Ausnahmen

Ausnahme Fehler Beschreibung
invalid API result cache size ORA-20032

Der Mindestwert ist 0 und der Höchstwert ist 10000. Diese Ausnahme wird angezeigt, wenn der Eingabewert kleiner als 0 oder größer als 10000 ist.

Beispiel

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

DBMS_CLOUD REST-API-Beispiele

Zeigt Beispiele zum Erstellen und Löschen eines Oracle Cloud Infrastructure Object Storage-Buckets mit DBMS_CLOUD.SEND_REQUEST und ein Beispiel zum Auflisten aller Compartments im Mandanten an.

Hinweis

Diese Beispiele zeigen die Oracle Cloud Infrastructure-Anforderungs-APIs und erfordern, dass Sie eine signaturschlüsselbasierte Zugangsdaten für die credential_name verwenden. Oracle Cloud Infrastructure-Signaturschlüssel-basierte Zugangsdaten umfassen die Argumente private_key und fingerprint.

Beispiel:

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;
/
Informationen zu DBMS_CLOUD.CREATE_CREDENTIAL finden Sie unter Prozedur CREATE_CREDENTIAL.

Bucket erstellen - Beispiel

Zeigt ein Beispiel mit der Methode DBMS_CLOUD.SEND_REQUEST mit HTTP POST, um einen Objektspeicher-Bucket mit dem Namen bucketname zu erstellen.

Details zur Oracle Cloud Infrastructure Object Storage Service-API finden Sie in diesem Beispiel unter 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;
/

Hinweise:

  • In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

  • Dabei ist region eine Endpunktregion. Weitere Informationen finden Sie in der Object Storage-API-Referenz unter API-Referenz und -Endpunkte. Beispiel: region ist: us-phoenix-1.

Bucket löschen - Beispiel

Zeigt ein Beispiel mit DBMS_CLOUD.SEND_REQUEST und der HTTP-Methode DELETE zum Löschen eines Objektspeicher-Buckets namens bucketname an.

Details zur Oracle Cloud Infrastructure Object Storage Service-API finden Sie in diesem Beispiel unter 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;
/

Hinweise:

  • In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

  • Dabei ist region eine Endpunktregion. Weitere Informationen finden Sie in der Object Storage-API-Referenz unter API-Referenz und -Endpunkte. Beispiel: region ist: us-phoenix-1.

Beispiel für Compartments auflisten

Zeigt ein Beispiel mit DBMS_CLOUD.SEND_REQUEST und der HTTP-Methode GET an, um alle Compartments im Mandanten (Root Compartment) aufzulisten. Dieses Beispiel zeigt, wie Anforderungsheader in DBMS_CLOUD.SEND_REQUEST übergeben werden.

Einzelheiten zur Oracle Cloud Infrastructure Identity and Access Management-Service-API für dieses Beispiel finden Sie unter 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;
/

Dabei ist region eine Endpunktregion. Weitere Informationen finden Sie in der Identity and Access Management-(IAM-)API-Referenz in API-Referenz und -Endpunkte. Beispiel: region ist: uk-london-1.

Beispiel für asynchrone Anforderungen

Zeigt ein Beispiel mit DBMS_CLOUD.SEND_REQUEST und der HTTP-Methode POST, um den Autonomous Database-Stoppvorgang auszuführen und auf den Status zu warten. In diesem Beispiel wird gezeigt, wie Sie DBMS_CLOUD.SEND_REQUEST mit den Parametern async_request_url, wait_for_states und timeout verwenden.

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

Dabei ist region eine Endpunktregion. Weitere Informationen finden Sie in der Identity and Access Management-(IAM-)API-Referenz in API-Referenz und -Endpunkte. Beispiel: region ist: uk-london-1.

ocid ist die Oracle Cloud Infrastructure-Ressourcen-ID. Weitere Informationen finden Sie unter Ressourcen-IDs.



Fußnotenlegende

Fußnote 3: Die Unterstützung für REST-API-Aufrufe in Azure Cloud ist auf die Domain "blob.windows.net" beschränkt.