Restaurar de copia de seguridad

Restaure los datos de la copia de seguridad de la base de datos de origen en la base de datos de destino.

Instalación de la copia de seguridad de Oracle Database en la base de datos destino

Copie el archivo oci_install.jar en el host de la base de datos destino y ejecute el comando para instalar la copia de seguridad de Oracle Database en el destino.

Instalar Oracle Database Backup Cloud Service en la base de datos de origen
  1. Copie el archivo oci_install.jar en el host de la base de datos destino mediante el host bastión y descomprímalo.
    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 a la base de datos de destino de OCI a través del host bastión con el usuario oracle y cámbielo a él.
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. Realice una copia de seguridad de la cartera actual e instale la cartera en la base de datos de destino.
    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. Ejecute el comando Módulo de copia de seguridad en la nube de base de datos para instalar la biblioteca y crear el archivo config.
    Este es el mismo comando que ha ejecutado para instalar Oracle Database Backup Cloud Service en la base de datos origen, aunque la variable ORACLE_HOME puede ser diferente.
    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
    
    El archivo config aparece en la carpeta de inicio del usuario oracle.
  5. Realice una copia de seguridad del archivo SPF de la base de datos de destino original con SID_NAME.
    Si no realiza una copia de seguridad del archivo SPF de la base de datos destino original, RMAN intentará utilizarlo para restaurar la copia de seguridad y fallará.
    mv $ORACLE_HOME/dbs/spfileSID_NAME.ora $ORACLE_HOME/dbs/spfileSID_NAME.ora.bck

Configuración del almacenamiento de copia de seguridad en la base de datos de destino

Configure el dispositivo de almacenamiento SBT_TAPE de copia de seguridad en la base de datos de destino.

  1. Ejecute el comando de destino de RMAN.
    rman target /
  2. Configure el dispositivo de almacenamiento SBT_TAPE de copia de seguridad en la base de datos de destino.
    Utilice la variable de entorno ORACLE_HOME para definir la biblioteca SBT.
    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    

Definición del DBID y restauración del archivo SPF a partir de la copia de seguridad

Ejecute los comandos de RMAN para definir el DBID y la contraseña de descifrado para restaurar el archivo SPF a partir de la copia de seguridad. Al definir el DBID, utilizará RMAN para sustituir el DBID de destino por el DBID de origen.

  1. Defina el ID de base de datos (DBID).
    RMAN> run {
    shutdown immediate;
    set dbid DBID number;
    STARTUP FORCE NOMOUNT;
    }
  2. Defina la contraseña de descifrado (la contraseña que se utilizó para el cifrado) y restaure el archivo SPF a partir de la copia de seguridad.
    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. Salga de RMAN.

Creación de un directorio para el archivo de auditoría

Cree un directorio de destino para el archivo de auditoría.

La ubicación por defecto es /u01/app/oracle/admin/$ORACLE_SID/adump. Puede ver el valor utilizado por la base de datos original buscando en la spfile restaurada la cadena audit_file_dest.

spfile es un archivo binario que requiere que las cadenas se analicen correctamente. Sin embargo, los saltos de línea pueden estar presentes que impiden que una simple grep proporcione el camino completo. La opción -s "" de las cadenas elimina saltos de línea y el comando sed analiza el texto después de audit_file_dest. Debido a que el comando sed no maneja la expresión regular no codiciosa, el comando awk es necesario para recortar el final del archivo.

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

restauración y recuperación de la base de datos

Utilice RMAN para restaurar el archivo de control de la copia de seguridad y, a continuación, restaure y recupere la base de datos. RMAN recupera la base de datos mediante redo logs archivados.

  1. Abra RMAN y restaure el archivo de control de la copia de seguridad. Utilice el número DBID y la contraseña de decirción que ha definido anteriormente.
    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. Restaure y recupere la base de datos mediante 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;
    }
    Cuando RMAN ha aplicado el último redo log archivado en la copia de seguridad y no puede encontrar más logs, aparece un mensaje similar al siguiente: unable to find archived log
  3. Abra la base de datos con resetlogs.
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. Prepare la base de datos de destino para recibir conexiones.
  5. Vuelva a instanciar el listener TNS editando la configuración del listener para crear un listener estático.
    nano $ORACLE_HOME/network/admin/listener.ora
  6. Agregue la siguiente sección al listener TNS para definir ORACLE_HOME y el nombre de la CDB de la base de datos origen.

    Sustituya ORACLE_HOME por el valor de ruta de acceso ORACLE_HOME y SID_NAME por el nombre de servicio (nombre de CDB) de la base de datos origen.

    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (ORACLE_HOME=ORACLE_HOME)
          (SID_NAME=SID_NAME))
      )
    
  7. Edite el archivo tnsname.
    nano $ORACLE_HOME/network/admin/tnsnames.ora
  8. Edite SERVICE_NAME para que coincida con el nombre de SID de la base de datos origen (sin el nombre de dominio).
    (SERVICE_NAME = SID_NAME)
  9. Reinicie el listener.
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
Se debe poder acceder a la base de datos.