Wiederherstellen aus Backup

Stellen Sie die Daten aus dem Datenbankbackup der Quelldatenbank in der Zieldatenbank wieder her.

Oracle Database-Backup in der Zieldatenbank installieren

Kopieren Sie die Datei oci_install.jar auf den Zieldatenbankhost, und führen Sie den Befehl aus, um Oracle Database Backup auf dem Ziel zu installieren.

Oracle Database Backup Cloud Service in der Quelldatenbank installieren
  1. Kopieren Sie die Datei oci_install.jar über den Bastionhost auf den Zieldatenbankhost, und dekomprimieren Sie sie.
    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. Stellen Sie über den Bastionhost eine SSH-Verbindung zur OCI-Zieldatenbank her, und wechseln Sie zum Benutzer oracle.
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. Sichern Sie das aktuelle Wallet, und installieren Sie das Wallet in der Zieldatenbank.
    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. Führen Sie den Befehl "Database Cloud Backup Module" aus, um die Library zu installieren und die Datei config zu erstellen.
    Dies ist derselbe Befehl, mit dem Sie Oracle Database Backup Cloud Service in der Quelldatenbank installiert haben, obwohl die Variable ORACLE_HOME möglicherweise anders ist.
    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
    
    Die Datei config wird im Home-Ordner des Benutzers oracle angezeigt.
  5. Backup der ursprünglichen SPF-Datei der Zieldatenbank mit SID_NAME.
    Wenn Sie die ursprüngliche SPF-Datei der Zieldatenbank nicht sichern, versucht RMAN, das Backup wiederherzustellen, und schlägt fehl.
    mv $ORACLE_HOME/dbs/spfileSID_NAME.ora $ORACLE_HOME/dbs/spfileSID_NAME.ora.bck

Backupspeicher in der Zieldatenbank konfigurieren

Konfigurieren Sie das Backupspeichergerät SBT_TAPE in der Zieldatenbank.

  1. Führen Sie den RMAN-Zielbefehl aus.
    rman target /
  2. Konfigurieren Sie das Backupspeichergerät SBT_TAPE in der Zieldatenbank.
    Verwenden Sie die Umgebungsvariable ORACLE_HOME, um die SBT-Library zu definieren.
    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    

DBID festlegen und SPF-Datei aus Backup wiederherstellen

Führen Sie RMAN-Befehle aus, um die DBID und das Entschlüsselungskennwort festzulegen, um die SPF-Datei aus dem Backup wiederherzustellen. Wenn Sie die DBID festlegen, ersetzen Sie die Ziel-DBID mit RMAN durch die Quell-DBID.

  1. Legen Sie die Datenbank-ID (DBID) fest.
    RMAN> run {
    shutdown immediate;
    set dbid DBID number;
    STARTUP FORCE NOMOUNT;
    }
  2. Legen Sie das Entschlüsselungskennwort (das Kennwort, das für die Verschlüsselung verwendet wurde) fest, und stellen Sie die SPF-Datei aus einem Backup wieder her.
    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. Beenden Sie RMAN.

Verzeichnis für die Auditdatei erstellen

Erstellen Sie ein Zielverzeichnis für die Auditdatei.

Das Standardverzeichnis ist /u01/app/oracle/admin/$ORACLE_SID/adump. Sie können die von der ursprünglichen Datenbank verwendete Einstellung anzeigen, indem Sie im wiederhergestellten spfile nach der Zeichenfolge audit_file_dest suchen.

spfile ist eine Binärdatei, für die Zeichenfolgen ordnungsgemäß geparst werden müssen. Es können jedoch Zeilenumbrüche vorhanden sein, die verhindern, dass eine einfache Grep den vollständigen Pfad bereitstellt. Die Option -s "" für Zeichenfolgen entfernt Zeilenumbrüche, und der Befehl sed parst den Text nach audit_file_dest aus. Da der Befehl sed keinen nicht-gierigen regulären Ausdruck verarbeitet, ist der Befehl awk erforderlich, um das Ende der Datei zu kürzen.

  • Erstellen Sie den Ordner mit dem hinzugefügten Befehl xargs:
    strings -s "" ${ORACLE_HOME}/dbs/spfile*.ora | sed -E "s|.*audit_file_dest='(.*)'.*|\1|" | awk -F"'" '{print $1}' | xargs mkdir -p 

Datenbank zurückschreiben und wiederherstellen

Verwenden Sie RMAN, um die Kontrolldatei aus dem Backup zurückzuschreiben und anschließend die Datenbank zurückzuschreiben und wiederherzustellen. RMAN stellt die Datenbank mit archivierten Redo Logs wieder her.

  1. Öffnen Sie RMAN, und schreiben Sie die Kontrolldatei aus dem Backup zurück. Verwenden Sie die DBID-Nummer und das zuvor festgelegte Decyrptionskennwort.
    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. Restore und Recovery der Datenbank mit 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;
    }
    Wenn RMAN das letzte archivierte Redo-Log im Backup angewendet hat und keine weiteren Logs finden kann, wird eine Meldung wie die Folgende angezeigt: unable to find archived log
  3. Öffnen Sie die Datenbank mit resetlogs.
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. Bereiten Sie die Zieldatenbank auf den Empfang von Verbindungen vor.
  5. Starten Sie den TNS-Listener neu, indem Sie die Listener-Konfiguration bearbeiten, um einen statischen Listener zu erstellen.
    nano $ORACLE_HOME/network/admin/listener.ora
  6. Fügen Sie dem TNS-Listener den folgenden Abschnitt hinzu, um ORACLE_HOME und den CDB-Namen der Quelldatenbank zu definieren.

    Ersetzen Sie ORACLE_HOME durch den Pfadwert ORACLE_HOME und SID_NAME durch den Servicenamen (CDB-Name) der Quelldatenbank.

    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (ORACLE_HOME=ORACLE_HOME)
          (SID_NAME=SID_NAME))
      )
    
  7. Bearbeiten Sie die Datei tnsname.
    nano $ORACLE_HOME/network/admin/tnsnames.ora
  8. Bearbeiten Sie SERVICE_NAME so, dass es mit dem SID-Namen der Quelldatenbank (ohne Domainnamen) übereinstimmt.
    (SERVICE_NAME = SID_NAME)
  9. Starten Sie den Listener neu.
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
Die Datenbank sollte zugänglich sein.