Restaurer à partir d'une sauvegarde

Restaurez les données de la sauvegarde de la base de données source vers la base de données cible.

Installation de la sauvegarde Oracle Database sur la base de données cible

Copiez le fichier oci_install.jar sur l'hôte de base de données cible et exécutez la commande pour installer la sauvegarde Oracle Database sur la cible.

Installation d'Oracle Database Backup Cloud Service sur la base de données source
  1. Copiez le fichier oci_install.jar sur l'hôte de base de données cible via l'hôte de bastion et décompressez-le.
    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 to the OCI target database through the bastion host with, and switch to the oracle user.
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. Sauvegardez le portefeuille en cours et installez-le sur la base de données cible.
    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. Exécutez la commande Database Cloud Backup Module pour installer la bibliothèque et créer le fichier config.
    Il s'agit de la même commande que celle que vous avez exécutée pour installer Oracle Database Backup Cloud Service sur la base de données source, bien que la variable ORACLE_HOME puisse être différente.
    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
    
    Le fichier config apparaît dans le dossier d'accueil de l'utilisateur oracle.
  5. Sauvegardez le fichier SPF de la base de données cible d'origine à l'aide de SID_NAME.
    Si vous ne sauvegardez pas le fichier SPF de la base de données cible d'origine, RMAN tente de l'utiliser pour restaurer la sauvegarde et échoue.
    mv $ORACLE_HOME/dbs/spfileSID_NAME.ora $ORACLE_HOME/dbs/spfileSID_NAME.ora.bck

Configurer le stockage de sauvegarde sur la base de données cible

Configurez le périphérique de stockage SBT_TAPE de sauvegarde sur la base de données cible.

  1. Exécutez la commande de cible RMAN.
    rman target /
  2. Configurez le périphérique de stockage SBT_TAPE de sauvegarde sur la base de données cible.
    Utilisez la variable d'environnement ORACLE_HOME pour définir la bibliothèque SBT.
    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    

Définir le DBID et restaurer le fichier SPF à partir de la sauvegarde

Exécutez les commandes RMAN pour définir le DBID et le mot de passe de décryptage afin de restaurer le fichier SPF à partir de la sauvegarde. Lors de la définition du DBID, vous utiliserez RMAN pour remplacer le DBID cible par le DBID source.

  1. Définissez l'ID de base de données (DBID).
    RMAN> run {
    shutdown immediate;
    set dbid DBID number;
    STARTUP FORCE NOMOUNT;
    }
  2. Définissez le mot de passe de décryptage (mot de passe utilisé pour le cryptage) et restaurez le fichier SPF à partir de la sauvegarde.
    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. Quittez RMAN.

Créer un répertoire pour le fichier d'audit

Créez un répertoire de destination pour le fichier d'audit.

L'emplacement par défaut est /u01/app/oracle/admin/$ORACLE_SID/adump. Vous pouvez visualiser le paramètre utilisé par la base de données d'origine en recherchant la chaîne audit_file_dest dans spfile restauré.

spfile est un fichier binaire qui nécessite une analyse correcte des chaînes. Cependant, il peut y avoir des sauts de ligne qui empêchent un simple grep de fournir le chemin complet. L'option -s "" sur les chaînes enlève les sauts de ligne et la commande sed analyse le texte après audit_file_dest. Etant donné que la commande sed ne gère pas les expressions régulières non gourmandes, la commande awk est nécessaire pour couper la fin du fichier.

  • Créez le dossier avec la commande xargs ajoutée :
    strings -s "" ${ORACLE_HOME}/dbs/spfile*.ora | sed -E "s|.*audit_file_dest='(.*)'.*|\1|" | awk -F"'" '{print $1}' | xargs mkdir -p 

Restauration et récupération de la base de données

Utilisez RMAN pour restaurer le fichier de contrôle à partir de la sauvegarde, puis restaurez et récupérez la base de données. RMAN récupère la base de données à l'aide des fichiers de journalisation archivés.

  1. Ouvrez RMAN et restaurez le fichier de contrôle à partir de la sauvegarde. Utilisez le numéro DBID et le mot de passe de description que vous avez définis précédemment.
    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. Restaurez et récupérez la base de données à l'aide de 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;
    }
    Lorsque RMAN a appliqué le dernier fichier de journalisation archivé de la sauvegarde et qu'il ne trouve plus de journaux, un message semblable au suivant s'affiche : unable to find archived log
  3. Ouvrez la base de données avec resetlogs.
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. Prêtez la base de données cible à recevoir des connexions.
  5. Rétablissez le processus d'écoute TNS en modifiant la configuration du processus d'écoute pour créer un processus d'écoute statique.
    nano $ORACLE_HOME/network/admin/listener.ora
  6. Ajoutez la section suivante au processus d'écoute TNS pour définir ORACLE_HOME et le nom de la base de données Conteneur de la base de données source.

    Remplacez ORACLE_HOME par la valeur de chemin ORACLE_HOME et SID_NAME par le nom de service (nom de base de données Conteneur) de la base de données source.

    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (ORACLE_HOME=ORACLE_HOME)
          (SID_NAME=SID_NAME))
      )
    
  7. Modifiez le fichier tnsname.
    nano $ORACLE_HOME/network/admin/tnsnames.ora
  8. Modifiez SERVICE_NAME pour qu'il corresponde au nom de SID de la base de données source (sans le nom de domaine).
    (SERVICE_NAME = SID_NAME)
  9. Redémarrez le processus d'écoute.
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
La base de données doit être accessible.