Query su file di dump di Data Pump esterni

È inoltre possibile eseguire query sui file di dump di Oracle Data Pump nel cloud creando una tabella esterna utilizzando DBMS_CLOUD.CREATE_EXTERNAL_TABLE.

I file di origine per creare questo tipo di tabella esterna devono essere esportati dal sistema di origine utilizzando il driver di accesso ORACLE_DATAPUMP nelle tabelle esterne. Vedere Caricamento e caricamento dei dati con il driver di accesso ORACLE_DATAPUMP per i dettagli sull'esportazione mediante il driver di accesso ORACLE_DATAPUMP.

Per creare una tabella esterna, spostare innanzitutto i file di dump di Oracle Data Pump esportati utilizzando il driver di accesso ORACLE_DATAPUMP nell'area di memorizzazione degli oggetti, quindi utilizzare DBMS_CLOUD.CREATE_EXTERNAL_TABLE per creare la tabella esterna.

I file di origine in questo esempio sono i file di dump di Oracle Data Pump, exp01.dmp e exp02.dmp.

  1. Memorizzare le credenziali dell'area di memorizzazione degli oggetti utilizzando la procedura DBMS_CLOUD.CREATE_CREDENTIAL.

    Ad esempio:

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

    Questa operazione memorizza le credenziali nel database in un formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale. Tenere presente che questo passo è obbligatorio una sola volta a meno che le credenziali dell'area di memorizzazione degli oggetti non vengano modificate. Una volta memorizzate le credenziali, è possibile utilizzare lo stesso nome credenziale per creare tabelle esterne.

    Per informazioni sui parametri username e password per i diversi servizi di storage degli oggetti, vedere CREATE_CREDENTIAL Procedure.

  2. Creare una tabella esterna sopra i file di origine utilizzando la procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE.

    Ad esempio:

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'CHANNELS_EXT',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp01.dmp,
                         https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp02.dmp'
        format => json_object('type' value 'datapump', 'rejectlimit' value '1'),
        column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)' );
    END;
    /
    

    Di seguito sono riportati i parametri disponibili.

    • table_name: è il nome della tabella esterna.

    • credential_name: indica il nome della credenziale creata nel passo precedente.

    • file_uri_list: è una lista delimitata da virgole dei file di dump di Data Pump su cui si desidera eseguire la query.

    • format: definisce le opzioni che è possibile specificare per descrivere il formato del file di origine definisce le opzioni che è possibile specificare per descrivere il formato del file di origine. Quando si specifica il tipo 'datapump', l'unico altro parametro di formato valido è 'rejectlimit'.

    • column_list: è una lista delimitata da virgole delle definizioni di colonna nei file di origine.

    In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

    È ora possibile eseguire query sulla tabella esterna creata nel passo precedente. Ad esempio:

    SELECT count(*) FROM channels_ext;

    Per impostazione predefinita, il database prevede che tutte le righe nel file di dati esterno siano valide e corrispondano sia alle definizioni dei tipi di dati di destinazione sia alla definizione del formato dei file. Nell'ambito della convalida, DBMS_CLOUD verifica che tutte le parti del file di dump necessarie siano presenti e controlla inoltre che i file di dump siano validi e non danneggiati (ad esempio exp01.dmp, exp02.dmp e così via). È possibile utilizzare l'opzione di formato DBMS_CLOUD rejectlimit per eliminare questi errori. In alternativa, è anche possibile convalidare la tabella esterna creata per visualizzare i messaggi di errore e le righe rifiutate. Per ulteriori informazioni, vedere Convalida dati esterni.

    Per informazioni dettagliate sui parametri, vedere CREATE_EXTERNAL_TABLE Procedure.

    Per ulteriori informazioni sui servizi di storage degli oggetti cloud supportati, vedere DBMS_CLOUD Formati URI.