Copia i file password e wallet nel cloud

Copiare i file password e wallet dal database primario in standby in Oracle Cloud Infrastructure.

Recupera il nome del database e verifica il wallet

Recupera il nome database univoco e il SID (ID sistema) Oracle per l'istanza OCI (Oracle Cloud Infrastructure) e verifica la posizione del wallet.

I nomi del database devono essere uguali per il database in locale e per il sistema di database su OCI.
  1. In OCI, recuperare il nome e il SID del database univoco.
    ORACLE_UNQNAME è current db_unique_name per il sistema di database OCI. ORACLE_SID è ONPREMSID. In questo esempio il SID Oracle è ORCLCDB.
    env | grep ORA
  2. Controllare la posizione del file wallet in locale eseguendo un comando SQL.
    select * from V$ENCRYPTION_WALLET;
  3. Tenere presente la posizione del wallet per il database in standby in OCI. Avrete bisogno di questo per un passo successivo.
     /opt/oracle/dcs/commonstore/wallets/tde/ORACLE_UNQNAME/

    Ad esempio, il wallet su 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

    Ad esempio, la posizione del wallet locale:

    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

Rimuovi i file di dati dall'istanza OCI

Rimuovere i file di dati dall'istanza OCI (Oracle Cloud Infrastructure).

  1. Nell'istanza OCI creare uno script per rimuovere i file di dati.
    Di seguito è riportato uno script di esempio.
    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. Come sysdba, utilizzare il comando shutdown immediate per chiudere, disinstallare e chiudere il database in standby su OCI.
    SQL> shutdown immediate
  3. Nella directory /tmp aprire il file files.lst e rimuovere le righe a. e b. per rimuovere i file di dati.
    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.

Copia la password nel database in standby

Copiare il password file dal database in locale all'host del database in standby utilizzando gli indirizzi IP per aprire un tunnel SSH tra l'host del bastione e l'host del database di destinazione.

  1. Tunnel nell'istanza del database in standby dall'host locale tramite l'host bastion e copia il password file.
    Il password file si trova nella seguente directory: $ORACLE_HOME/dbs/orapwORACLE_SID.
    Nell'esempio seguente, sostituire id_rsa con le chiavi SSH e utilizzare l'indirizzo IP dell'host bastion e del nodo di database OCI (Oracle Cloud Infrastructure).
    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. Salvare il file copiato nell'istanza del database in standby in OCI.
    sudo cp orapwORACLE_SID /u01/app/oracle/product/19.0.0/dbhome_1/dbs/
  3. Eseguire il comando md5sum nel file locale e OCI orapwORACLE_SID e verificare che abbiano la stessa impronta digitale.
    md5sum /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwORACLE_SID
    

Copia i file wallet nel database in standby

Copiare il wallet delle password nella directory /home/oracle/ dell'host del database in standby in Oracle Cloud Infrastructure (OCI) utilizzando gli indirizzi IP per aprire un tunnel SSH tra l'host del bastione e l'host del database in standby.

  1. Individuare il wallet nell'host locale e rendere i file wallet leggibili, scrivibili ed eseguibili da tutti.
    cd /opt/oracle/admin/$ORCLSID/wallet
    In questo esempio, il wallet contiene due file: ewallet.p12 e cwallet.sso. Rendere entrambi i file leggibili, scrivibili ed eseguibili da tutti utilizzando il comando chmod 777.
  2. Nell'host DB OCI verificare che il file $ORACLE_HOME/network/admin/sqlnet.ora contenga il parametro ENCRYPTION_WALLET_LOCATION in sqlnet.ora.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE) (METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  3. Copiare il file wallet nell'host DB OCI nella cartella /tmp utilizzando il comando tunnel.
    ~/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. Rimuovere i file wallet esistenti dall'host DB OCI nella directory /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.
  5. Poiché l'utente OPC (non l'utente Oracle) sull'host OCI, rende i file wallet leggibili, scrivibili ed eseguibili da tutti.
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
  6. Copiare i file wallet dalla cartella /tmp in /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.