Kennwort- und Wallet-Dateien in die Cloud kopieren

Kopieren Sie das Kennwort und die Wallet-Dateien aus der Primärdatenbank in die Standby in Oracle Cloud Infrastructure.

Datenbankname abrufen und Wallet prüfen

Rufen Sie den eindeutigen Datenbanknamen und die Oracle System ID (SID) für die Oracle Cloud Infrastructure -(OCI-)Instanz ab, und prüfen Sie den Wallet-Speicherort.

Die Datenbanknamen müssen für die On-Premise-Datenbank und das Datenbanksystem auf OCI identisch sein.
  1. Rufen Sie in OCI den eindeutigen Datenbanknamen und die eindeutige SID ab.
    ORACLE_UNQNAME ist current db_unique_name für das OCI-Datenbanksystem. ORACLE_SID ist ONPREMSID. In diesem Beispiel ist die Oracle-SID ORCLCDB.
    env | grep ORA
  2. Prüfen Sie den Speicherort der On-Premise-Wallet-Datei, indem Sie einen SQL-Befehl ausführen.
    select * from V$ENCRYPTION_WALLET;
  3. Beachten Sie den Wallet-Speicherort für die Standby-Datenbank in OCI. Sie benötigen dies für einen späteren Schritt.
     /opt/oracle/dcs/commonstore/wallets/tde/ORACLE_UNQNAME/

    Beispiel: Das Wallet auf OCI:

    $ ls -lrt
    total 20
    -rw------- 1 oracle oinstall 2555 Aug 27 06:32 ewallet_2020082706324337.p12
    -rw------- 1 oracle oinstall 5467 Aug 27 06:32 ewallet.p12
    -rw------- 1 oracle oinstall 5512 Aug 27 06:32 cwallet.sso

    Beispiel: Speicherort des On-Premise-Wallets:

    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB/xdb_wallet
    bash-4.2$ ls -lrt
    total 8
    -rw-------. 1 oracle oinstall 3835 Aug 27 02:23 ewallet.p12
    -rw-------. 1 oracle oinstall 3880 Aug 27 02:23 cwallet.sso

Datendateien aus der OCI-Instanz entfernen

Entfernen Sie die Datendateien aus der Oracle Cloud Infrastructure -(OCI-)Instanz.

  1. Erstellen Sie in der OCI-Instanz ein Skript, um die Datendateien zu entfernen.
    Beispiel für ein Skript:
    SQL> set heading off linesize 999 pagesize 0 feedback off trimspool on
    SQL> spool /tmp/files.lst
    SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from 	v$logfile;
    SQL> spool off
    SQL> create pfile='/tmp/ ORACLE_UNQNAME.pfile' from spfile;         
    SQL> exit
  2. Verwenden Sie als sysdba den Befehl shutdown immediate, um die Standby-Datenbank auf OCI zu schließen, auszuhängen und herunterzufahren.
    SQL> shutdown immediate
  3. Öffnen Sie im Verzeichnis /tmp die Datei files.lst, und entfernen Sie die Zeilen a. und b., um die Datendateien zu entfernen.
    a.   SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile;
    b.   SQL> spool off
    c.   If you don’t have ASM disks, then you will have to remove ALL the asmcmd command from the files.lst else the database files won't be deleted.
    d.   Chmod 777 /tmp/files.lst
    e.   Save and Execute the Script. $ ./tmp/files.lst
    f.   All files for the starter database have now been removed.

Kennwort in Standbydatenbank kopieren

Kopieren Sie die Kennwortdatei aus der On-Premise-Datenbank in den Standbydatenbank-Host, indem Sie mit den IP-Adressen einen SSH-Tunnel zwischen dem Bastions-Host und dem Zieldatenbank-Host öffnen.

  1. Tunnel zur Standbydatenbankinstanz von Ihrem lokalen Host über den Bastionshost und kopieren Sie die Kennwortdatei.
    Die Kennwortdatei befindet sich im folgenden Verzeichnis: $ORACLE_HOME/dbs/orapwORACLE_SID.
    Ersetzen Sie im folgenden Beispiel id_rsa durch Ihre SSH-Schlüssel, und verwenden Sie die IP-Adresse Ihres Bastion-Hosts und des Oracle Cloud Infrastructure -(OCI-)Datenbankknotens.
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@IP_address_of_your_bastion_host" orapwORACLE_SID opc@IP address of your OCI DB Node:~/tmp
  2. Speichern Sie die kopierte Datei in der Standbydatenbankinstanz in OCI.
    sudo cp orapwORACLE_SID /u01/app/oracle/product/19.0.0/dbhome_1/dbs/
  3. Führen Sie den Befehl md5sum in der On-Premise- und OCI-Datei orapwORACLE_SID aus, und prüfen Sie, ob sie denselben Fingerabdruck haben.
    md5sum /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwORACLE_SID
    

Wallet-Dateien in die Standby-Datenbank kopieren

Kopieren Sie das Kennwort-Wallet in das Verzeichnis /home/oracle/ auf dem Standbydatenbankhost in Oracle Cloud Infrastructure (OCI), indem Sie mit den IP-Adressen einen SSH-Tunnel zwischen dem Bastionshost und dem Standbydatenbankhost öffnen.

  1. Suchen Sie das Wallet auf dem On-Premise-Host, und machen Sie die Wallet-Dateien von allen lesbar, beschreibbar und ausführbar.
    cd /opt/oracle/admin/$ORCLSID/wallet
    In diesem Beispiel enthält das Wallet zwei Dateien: ewallet.p12 und cwallet.sso. Machen Sie beide Dateien mit dem Befehl chmod 777 lesbar, schreibgeschützt und ausführbar.
  2. Prüfen Sie auf dem OCI-DB-Host, ob die Datei $ORACLE_HOME/network/admin/sqlnet.ora den ENCRYPTION_WALLET_LOCATION-Parameter in sqlnet.ora enthält.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE) (METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  3. Kopieren Sie die Wallet-Datei mit dem Tunnelbefehl in den OCI-DB-Host im Ordner /tmp.
    ~/Keys/id_rsa : Replace it with your Ssh keys
    192.0.2.254: IP address of your bastion host.
    10.10.30.2: IP address of your OCI DB Node.
    
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@192.0.2.254" ewallet.p12 opc@10.10.30.2:/tmp/
    
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@192.0.2.254" cwallet.sso opc@10.10.30.2:/tmp/
  4. Entfernen Sie die vorhandenen Wallet-Dateien aus dem OCI-DB-Host im Verzeichnis /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.
  5. Als OPC-Benutzer (nicht als Oracle-Benutzer) auf dem OCI-Host können die Wallet-Dateien von allen gelesen, geschrieben und ausgeführt werden.
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
  6. Kopieren Sie die Wallet-Dateien aus dem Ordner /tmp in /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.