Esegui migrazione database applicazione

Oracle Autonomous Transaction Processing rimuove la necessità di gestire, applicare patch e ottimizzare l'host e il software del database, pertanto fornisce solo l'accesso al livello di schema del database. Per questo motivo, gli strumenti di migrazione disponibili per la migrazione di un database in locale all'elaborazione autonoma delle transazioni si basano su Data Pump, uno strumento di migrazione a livello di schema incluso in Oracle Database.

Informazioni sulla migrazione del database dell'applicazione

Il processo di migrazione del database consiste nella creazione di un dump dello schema di database nel database di origine, nel caricamento di tale dump nello storage degli oggetti in Oracle Cloud Infrastructure (OCI), nella configurazione del database Autonomous Transaction Processing da importare dallo storage degli oggetti e nell'importazione del dump dello schema di database da Oracle Cloud Infrastructure Object Storage.

Di seguito viene riportata una panoramica del processo.

  1. Esportare lo schema o gli schemi di database in un file di dump locale.
  2. Spostare il file di dump nello storage degli oggetti utilizzando la CLI OCI.
  3. Recupera l'OCID del database autonomo.
  4. Recupera il wallet per accedere al database autonomo dal database di origine (o da un host alternativo).
  5. Creare un tunnel locale per il database autonomo per la configurazione.
  6. Ottenere un token di autenticazione OCI per il database autonomo per accedere a Oracle Cloud Infrastructure Object Storage.
  7. Configurare le credenziali di accesso autonomo al database.
  8. Importare il file di dump da Oracle Cloud Infrastructure Object Storage nel database autonomo.

Esportare lo schema e i dati del database

Esportare lo schema di database e i dati in un singolo file di dump.

  1. Creare una cartella export per il file di dump.
    Si noti che stiamo creando un singolo dump di file, che può essere estremamente grande in alcune circostanze. Vedere altre opzioni per l'utilizzo di Data Pump per creare file multiparte.
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. Spostare il file di dump nel bucket Oracle Cloud Infrastructure Object Storage creato in precedenza utilizzando l'interfaccia della riga di comando Oracle Cloud Infrastructure (OCI).
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

Recupera OCID di Autonomous Database

Recupera OCID, IP endpoint privato e URL endpoint privato del database Oracle Autonomous Transaction Processing.

  1. Nella console di Oracle Cloud Infrastructure selezionare Oracle Database, quindi Elaborazione transazione autonoma.
  2. Selezionare il compartimento dalla lista dei compartimenti sul lato sinistro della pagina.
    Il compartimento è il punto in cui sono state distribuite le risorse.
  3. Fare clic sul database di cui si è eseguito il provisioning in precedenza per ottenere i dettagli.
  4. Copiare OCID, IP endpoint privato e URL endpoint privato (nome host) e salvarli in un notepad per un secondo momento.

Recupera il file wallet del database

Recuperare il file wallet del database Oracle Autonomous Transaction Processing e aggiornare la posizione impostando la directory in modo che punti alla posizione wallet nel file sqlnet.ora.

  1. Utilizzare l'interfaccia della riga di comando Oracle Cloud Infrastructure (OCI) per ottenere il file wallet del database Autonomous Transaction Processing utilizzando OCID e password.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. Estrarre il wallet.
    unzip wallet.zip
  3. Modificare il file sqlnet.ora e sostituire il valore della directory in modo che corrisponda alla posizione dei file wallet decompressi.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. Impostare la variabile di ambiente TNS_ADMIN in modo che corrisponda alla cartella in cui è stato decompresso il wallet.
    export TNS_ADMIN=$(pwd)

Creare un tunnel locale per Autonomous Database tramite un host di base

Creare un tunnel configurando l'indirizzo IP pubblico dell'host bastion.

  1. Ottieni l'IP pubblico dell'host bastione dall'output terreno.
    Se il server Tomcat Apache è stato distribuito in una subnet pubblica, è possibile utilizzare l'IP pubblico del server Tomcat, altrimenti utilizzare l'indirizzo IP pubblico dell'host bastion.
  2. Definire l'IP bastione per creare un tunnel.
    export BASTION_IP=Public IP of the bastion
  3. Eseguire il comando per esportare l'host DB utilizzando l'indirizzo IP dell'endpoint privato per il database Autonomous Transaction Processing e ssh nell'host del database.
    DB_HOST è l'IP endpoint privato raccolto in precedenza.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    Quando viene richiesto, immettere per confermare il nuovo host.
  4. Modificare il file /etc/hosts per puntare all'host endpoint privato del database autonomo a 127.0.0.1 (localhost).
    Esegue la ricerca nell'host endpoint privato nel file tnsnames.ora.
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. Verificare che l'endpoint sia corretto.
    cat /etc/hosts
    L'output deve essere simile al seguente:
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

Genera token di autenticazione

Generare un token da utilizzare durante lo spostamento dei dati in Oracle Cloud Infrastructure Object Storage e nel database Oracle Autonomous Transaction Processing. La stringa Token di autenticazione viene visualizzata solo quando la si crea, quindi assicurarsi di copiare immediatamente il token di autenticazione in una posizione sicura.
  1. Eseguire il login alla console di Oracle Cloud Infrastructure
  2. Fare clic sull'icona Utente per aprire il menu Profilo, quindi fare clic su Impostazioni utente.
    Prendi nota del tuo nome utente completo (potrebbe essere la tua e-mail, o la tua e-mail prefissata con il servizio Single Sign-On. , se attivato).
  3. Fare clic su Token di autenticazione, quindi su Genera token.
  4. Fornire una descrizione significativa per il token di autenticazione e fare clic su Genera token.
  5. Copiare il token e salvarlo in modo da recuperarlo in seguito.
    Il token viene visualizzato una sola volta. Quando si chiude la finestra di dialogo, non sarà più possibile visualizzare il token nella console.
  6. Fare clic su Chiudi.

Configurare la credenziale cloud in Autonomous Database

Aggiungere il nome utente Oracle Cloud Infrastructure (OCI) e la password del token di autenticazione come credenziali predefinite per il database Oracle Autonomous Transaction Processing.

  1. Utilizzando SQLPLus Instant Client, connettersi al database remoto Autonomous Transaction Processing tramite il tunnel creato in precedenza.
    sqlplus admin@atp_db_name_high
  2. Al prompt immettere la password di amministratore per il database Autonomous Transaction Processing.
    atp_admin_password configurato nel file terraform.tfvars.
  3. Assicurarsi di aver eseguito il login a un prompt SQLPlus.
    SQL>
  4. Creare la credenziale cloud OCI nel database Autonomous Transaction Processing utilizzando il comando seguente, con il nome utente OCI e la password del token di autenticazione OCI.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. Impostare le credenziali come credenziale predefinita.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. Esci da SQLPlus.
    SQL> exit

Importa il file di dump in Autonomous Database

Utilizzare Data Pump per importare il dump dei dati nel database Autonomous Transaction Processing.

  1. Definire le variabili di ambiente per l'area (ad esempio us-ashburn-1), lo spazio di nomi, il bucket, il nome file, il nome del database Autonomous Transaction Processing (ad esempio atpdb) e la password amministratore Autonomous Transaction Processing.
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. Eseguire il comando riportato di seguito.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    Il primo tentativo non riuscirà con un errore: ORA-01950: no privileges on tablespace 'DATA'. Andare al passo successivo per assegnare una quota all'utente creato dallo schema di database.

  3. Concedere all'utente una tablespace illimitata.
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    Dovrebbe essere visualizzato il seguente output.
    Grant Succeeded
  4. Eliminare le tabelle create nel passo 2 per consentire la creazione dei dati durante l'esecuzione successiva.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. Eseguire il comando seguente per importare i dati ora che l'utente dispone di una quota valida.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    Verranno visualizzati errori correlati all'utente già esistente. Questo è normale perché gli oggetti sono stati creati quando abbiamo eseguito il comando la prima volta nel passo 2.
Il database viene migrato.