Hybride partitionierte Daten abfragen

Wenn Sie interne Daten und mehrere Datendateien im Objektspeicher als einzelne logische Tabelle abfragen möchten, können Sie eine hybride partitionierte Tabelle verwenden, um die Daten als einzelnes Objekt darzustellen. Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE, um eine hybride partitionierte Tabelle zu erstellen.

Wenn Ihre Daten, ob intern oder extern, in feiner Granularität als mehrere logische Partitionen dargestellt werden können, wird dringend empfohlen, eine hybride partitionierte Tabelle mit mehreren internen und externen Partitionen zu erstellen, wobei die logische Partitionierung Ihrer Daten für den Abfragezugriff beibehalten wird.

Wenn Sie eine hybride partitionierte Tabelle erstellen, nehmen Sie eine Partitionierungsklausel in die DBMS_CLOUD.CREATE_HYBRID_PART_TABLE-Anweisung auf. Die Partitionierungsklausel, die Sie einfügen, hängt von Ihren Datendateien und dem verwendeten Partitionierungstyp ab. Weitere Informationen finden Sie unter Hybrid partitionierte Tabellen erstellen.

  1. Speichern Sie die Zugangsdaten für den Objektspeicher mit der Prozedur DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiel:

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

    Das Erstellen von Zugangsdaten für den Zugriff auf den Oracle Cloud Infrastructure-Objektspeicher ist nicht erforderlich, wenn Sie Resource-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen nutzen.

    Bei diesem Vorgang werden die Zugangsdaten in der Datenbank in einem verschlüsselten Format gespeichert. Sie können einen beliebigen Namen für den Zugangsdatennamen verwenden. Beachten Sie, dass dieser Schritt nur einmal erforderlich ist, wenn sich die Zugangsdaten des Objektspeichers nicht ändern. Nachdem Sie die Zugangsdaten gespeichert haben, können Sie denselben Zugangsdatennamen zum Erstellen hybrider partitionierter Tabellen verwenden.

    Informationen zu den Parametern username und password für verschiedene Objektspeicherservices finden Sie unter Prozedur CREATE_CREDENTIAL.

  2. Erstellen Sie eine hybride partitionierte Tabelle auf der Basis der Quelldateien mit der Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE.

    Die Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Objektspeicherservices. Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
          table_name =>'HPT1',  
          credential_name =>'DEF_CRED_NAME',  
          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
                  ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_11.txt'') ,
                partition p2 values less than (2000) external location
                  ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_21.txt'') ,
                partition p3 values less than (3000) )'
         );
    END;
    /
    

    Die Parameter sind:

    • table_name: ist der hybride partitionierte Tabellenname.

    • credential_name: Der Name der Zugangsdaten, die im vorherigen Schritt erstellt wurden.

    • partitioning_clause: ist die vollständige Partitionierungsklausel, einschließlich der Speicherortinformationen für einzelne Partitionen.

    • format: Definiert die Optionen, die Sie zur Beschreibung des Formats der Quelldatei angeben können.

      Wenn die Daten in den Quelldateien verschlüsselt sind, entschlüsseln Sie die Daten, indem Sie den Parameter format mit der Option encryption angeben. Weitere Informationen zum Entschlüsseln von Daten finden Sie unter Daten beim Importieren aus Object Storage entschlüsseln.

    • column_list: Eine durch Komma getrennte Liste der Spaltendefinitionen in den Quelldateien.

    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.

    Jetzt können Sie Abfragen für die hybride partitionierte Tabelle ausführen, die Sie im vorherigen Schritt erstellt haben. Ihre Autonomous Database nutzt die Partitionierungsinformationen Ihrer hybriden partitionierten Tabelle, um sicherzustellen, dass die Abfrage nur auf relevante Datendateien im Objektspeicher zugreift. Beispiel: Die folgende Abfrage liest nur Datendateien aus Partition P1:

    SELECT * FROM hpt1 WHERE col1 < 750;

    Die hybriden 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. Weitere Informationen finden Sie unter Metadatenspalten für externe Tabellen.

    Wenn die Quelldateien Zeilen enthalten, die nicht mit den angegebenen Formatoptionen übereinstimmen, gibt die Abfrage einen Fehler aus. Sie können DBMS_CLOUD-Parameter wie rejectlimit verwenden, um diese Fehler zu unterdrücken. Alternativ können Sie auch die erstellte hybride partitionierte Tabelle validieren, um die Fehlermeldungen und abgelehnten Zeilen anzuzeigen, damit Sie die Formatoptionen entsprechend ändern können. Weitere Informationen finden Sie unter Externe Daten validieren und Hybrid partitionierte Daten validieren.

    Ausführliche Informationen zu den Parametern finden Sie unter Prozedur CREATE_HYBRID_PART_TABLE.

    Weitere Informationen zu den unterstützten Cloud-Objektspeicherservices finden Sie unter DBMS_CLOUD URI-Formate.