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.

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

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

Installer Oracle Database Backup Cloud Service sur la base de données source
  1. Copiez le fichier oci_install.jar sur l'hôte de la base de données cible au moyen de l'hôte bastion et décompressez.
    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. Connectez-vous à la base de données cible OCI au moyen de l'hôte bastion et passez à l'utilisateur oracle.
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. Sauvegardez le portefeuille courant 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 s'affiche dans le dossier de base de l'utilisateur oracle.
  5. Sauvegardez le fichier SPF de la base de données cible initiale avec 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 échouer.
    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 cible RMAN.
    rman target /
  2. Configurez le périphérique de stockage de sauvegarde SBT_TAPE 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 des commandes RMAN pour définir le DBID et le mot de passe de déchiffrement afin de restaurer le fichier SPF à partir d'une 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 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échiffrement (mot de passe utilisé pour le chiffrement) et restaurez le fichier SPF à partir d'une 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 de vérification

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 voir le paramètre utilisé par la base de données initiale en recherchant la chaîne audit_file_dest dans la spfile restaurée.

spfile est un fichier binaire qui nécessite une analyse correcte des chaînes. Cependant, des sauts de ligne peuvent être présents qui empêchent une simple grep de fournir le chemin complet. L'option -s "" sur les chaînes supprime les sauts de ligne et la commande sed analyse le texte après audit_file_dest. Comme la commande sed ne gère pas l'expression rationnelle non gourmande, la commande awk est nécessaire pour couper la fin du fichier.

  • Créez le dossier à l'aide de 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 

Restaurer et récupérer la base de données

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

  1. Ouvrez RMAN et restaurez le fichier de contrôle à partir d'une sauvegarde. Utilisez le numéro DBID et le mot de passe de déchiffrement 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é dans la sauvegarde et qu'il ne trouve plus de fichiers de journalisation, un message similaire au suivant s'affiche : unable to find archived log
  3. Ouvrez la base de données à l'aide de resetlogs.
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. Prêt pour la base de données cible à recevoir des connexions.
  5. Rétablissez le module d'écoute TNS en modifiant la configuration du module d'écoute pour créer un module d'écoute statique.
    nano $ORACLE_HOME/network/admin/listener.ora
  6. Ajoutez la section suivante au module 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 du service (nom de la 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 IDS de la base de données source (sans le nom de domaine).
    (SERVICE_NAME = SID_NAME)
  9. Redémarrez le module 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.