Ripristina dal backup

Ripristinare i dati dal backup del database di origine al database di destinazione.

Installa backup Oracle Database nel database di destinazione

Copiare il file oci_install.jar nell'host del database di destinazione ed eseguire il comando per installare Oracle Database Backup sulla destinazione.

Installare Oracle Database Backup Cloud Service nel database di origine
  1. Copiare il file oci_install.jar nell'host del database di destinazione tramite l'host bastion ed estrarre.
    BASTION_IP=BASTION_IP # public IP
    DB_HOST=DB_HOST # private IP
    
    scp -o ProxyCommand="ssh -W %h:%p
    opc@${BASTION_IP}" oci_install.jar 
    opc@${DB_HOST}:~/
    
    ssh -J opc@${BASTION_IP} opc@${DB_HOST} 'sudo chown oracle:oinstall oci_install.jar; sudo mv oci_install.jar
    /home/oracle/'
  2. SSH al database di destinazione OCI tramite l'host bastion con e passare all'utente oracle.
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. Eseguire il backup del wallet corrente e installare il wallet nel database di destinazione.
    mv $ORACLE_HOME/data/wallet $ORACLE_HOME/data/wallet_bck
    mkdir -p $ORACLE_HOME/data/wallet
    unzip wallet.zip -d $ORACLE_HOME/data/wallet/
  4. Eseguire il comando Database Cloud Backup Module per installare la libreria e creare il file config.
    Si tratta dello stesso comando eseguito per installare Oracle Database Backup Cloud Service nel database di origine, anche se la variabile ORACLE_HOME potrebbe essere diversa.
    java -jar oci_install.jar \
    -host https://objectstorage.region.oraclecloud.com \
    -pubFingerPrint wallet_public_key_fingerprint \
    -tOCID tenancy_OCID \
    -uOCID user_OCID \
    -cOCID compartment_OCID \
    -libDir $ORACLE_HOME/lib \
    -walletDir $ORACLE_HOME/data/wallet \
    -pvtKeyFile $ORACLE_HOME/data/wallet/oci_pvt \
    -bucket bucket_name \
    -configFile ~/config
    
    Il file config viene visualizzato nella cartella home dell'utente oracle.
  5. Eseguire il backup del file SPF del database di destinazione originale con SID_NAME.
    Se non si esegue il backup del file SPF del database di destinazione originale, RMAN tenterà di utilizzarlo per ripristinare il backup e non riuscire.
    mv $ORACLE_HOME/dbs/spfileSID_NAME.ora $ORACLE_HOME/dbs/spfileSID_NAME.ora.bck

Configurare lo storage di backup nel database di destinazione

Configurare il dispositivo di memorizzazione SBT_TAPE di backup nel database di destinazione.

  1. Eseguire il comando della destinazione RMAN.
    rman target /
  2. Configurare il dispositivo di memorizzazione SBT_TAPE di backup nel database di destinazione.
    Utilizzare la variabile di ambiente ORACLE_HOME per definire la libreria SBT.
    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    

Impostare il DBID e ripristinare il file SPF dal backup

Eseguire i comandi RMAN per impostare il DBID e la password di decifrazione per ripristinare il file SPF dal backup. Quando si imposta il DBID, si utilizzerà RMAN per sostituire il DBID di destinazione con il DBID di origine.

  1. Impostare l'ID database (DBID).
    RMAN> run {
    shutdown immediate;
    set dbid DBID number;
    STARTUP FORCE NOMOUNT;
    }
  2. Impostare la password di decifrazione (la password utilizzata per la cifratura) e ripristinare il file SPF dal backup.
    RMAN> SET DECRYPTION IDENTIFIED BY password;
    RMAN> set controlfile autobackup format for device type sbt to '%F';
    RMAN> run {
      allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore spfile from autobackup;
    }
  3. Esci da RMAN.

Creare una directory per il file di audit

Creare una directory di destinazione per il file di audit.

La posizione predefinita è /u01/app/oracle/admin/$ORACLE_SID/adump. Per visualizzare l'impostazione utilizzata dal database originale, cercare la stringa audit_file_dest nel file spfile ripristinato.

Il file spfile è un file binario che richiede l'analisi corretta delle stringhe. Tuttavia, possono essere presenti interruzioni di riga che impediscono a un grep semplice di fornire il percorso completo. L'opzione -s "" sulle stringhe rimuove le interruzioni di riga e il comando sed analizza il testo dopo audit_file_dest. Poiché il comando sed non gestisce l'espressione regolare non griedy, è necessario eseguire il comando awk per tagliare la fine del file.

  • Creare la cartella con il comando xargs aggiunto:
    strings -s "" ${ORACLE_HOME}/dbs/spfile*.ora | sed -E "s|.*audit_file_dest='(.*)'.*|\1|" | awk -F"'" '{print $1}' | xargs mkdir -p 

Ripristina e recupera il database

Utilizzare RMAN per ripristinare il control file dal backup, quindi ripristinare e recuperare il database. RMAN recupera il database utilizzando i redo log archiviati.

  1. Aprire RMAN e ripristinare il control file dal backup. Utilizzare il numero DBID e la password di decifrazione impostata in precedenza.
    Rman target /
    RMAN> set dbid DBID number;
    RMAN> STARTUP FORCE NOMOUNT;
    RMAN> SET DECRYPTION IDENTIFIED BY password;
    RMAN> set controlfile autobackup format for device type sbt to '%F';
    RMAN> run {
    allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore controlfile from autobackup;
      alter database mount;
    }
  2. Ripristinare e recuperare il database utilizzando RMAN.
    RMAN> run {
    CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    RESTORE DATABASE;
    RECOVER DATABASE;
    }
    Quando RMAN ha applicato l'ultimo redo log archiviato nel backup e non riesce a trovare altri log, viene visualizzato un messaggio simile al seguente: unable to find archived log
  3. Aprire il database con resetlogs.
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. Prontare il database di destinazione per la ricezione delle connessioni.
  5. Reintegrare il listener TNS modificando la configurazione del listener per creare un listener statico.
    nano $ORACLE_HOME/network/admin/listener.ora
  6. Aggiungere la sezione seguente al listener TNS per definire ORACLE_HOME e il nome CDB del database di origine.

    Sostituire ORACLE_HOME con il valore del percorso ORACLE_HOME e SID_NAME con il nome del servizio (nome CDB) del database di origine.

    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (ORACLE_HOME=ORACLE_HOME)
          (SID_NAME=SID_NAME))
      )
    
  7. Modificare il file tnsname.
    nano $ORACLE_HOME/network/admin/tnsnames.ora
  8. Modificare SERVICE_NAME in modo che corrisponda al nome SID del database di origine (senza il nome di dominio).
    (SERVICE_NAME = SID_NAME)
  9. Riavviare il listener.
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
Il database deve essere accessibile.