Copier les fichiers de mots de passe et de portefeuille dans le cloud

Copiez les fichiers de mot de passe et de portefeuille de la base de données principale vers la base de données de secours dans Oracle Cloud Infrastructure.

Obtenir le nom de la base de données et vérifier le portefeuille

Obtenez le nom de base de données unique et l'ID système Oracle (SID) de l'instance Oracle Cloud Infrastructure (OCI) et vérifiez l'emplacement du portefeuille.

Les noms de base de données doivent être identiques pour la base de données sur site et le système de base de données sur OCI.
  1. Dans OCI, obtenez le nom de base de données unique et le SID.
    ORACLE_UNQNAME est le current db_unique_name du système de base de données OCI. ORACLE_SID est le ONPREMSID. Dans cet exemple, le SID Oracle est ORCLCDB.
    env | grep ORA
  2. Vérifiez l'emplacement du fichier de portefeuille sur site en exécutant une commande SQL.
    select * from V$ENCRYPTION_WALLET;
  3. Notez l'emplacement du portefeuille pour la base de données de secours dans OCI. Vous en aurez besoin pour une étape ultérieure.
     /opt/oracle/dcs/commonstore/wallets/tde/ORACLE_UNQNAME/

    Par exemple, le portefeuille sur 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

    Par exemple, l'emplacement du portefeuille sur site :

    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

Enlever les fichiers de données de l'instance OCI

Enlevez les fichiers de données de l'instance Oracle Cloud Infrastructure (OCI).

  1. Dans l'instance OCI, créez un script pour enlever les fichiers de données.
    Exemple de script :
    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. En tant que sysdba, utilisez la commande shutdown immediate pour fermer, démonter et arrêter la base de données de secours sur OCI.
    SQL> shutdown immediate
  3. Dans le répertoire/tmp, ouvrez le fichier files.lst et supprimez les lignes a. et b. pour supprimer les fichiers de données.
    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.

Copier le mot de passe dans la base de données de secours

Copiez le fichier de mots de passe de la base de données sur site vers l'hôte de la base de données de secours à l'aide des adresses IP pour ouvrir un tunnel SSH entre l'hôte bastion et l'hôte de la base de données cible.

  1. Tunnel vers votre instance de base de données de secours à partir de votre hôte local via l'hôte bastion et copiez le fichier de mots de passe.
    Le fichier de mots de passe se trouve dans le répertoire suivant : $ORACLE_HOME/dbs/orapwORACLE_SID.
    Dans l'exemple suivant, remplacez id_rsa par vos clés SSH et utilisez l'adresse IP de votre hôte bastion et du noeud de base de données Oracle Cloud Infrastructure (OCI).
    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. Enregistrez le fichier copié dans l'instance de base de données de secours dans OCI.
    sudo cp orapwORACLE_SID /u01/app/oracle/product/19.0.0/dbhome_1/dbs/
  3. Exécutez la commande md5sum sur les sites et le fichier OCI orapwORACLE_SID et vérifiez qu'ils ont la même empreinte digitale.
    md5sum /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwORACLE_SID
    

Copier les fichiers de portefeuille dans la base de données de secours

Copiez le portefeuille de mots de passe dans le répertoire /home/oracle/ de l'hôte de la base de données de secours dans Oracle Cloud Infrastructure (OCI) à l'aide des adresses IP pour ouvrir un tunnel SSH entre l'hôte bastion et l'hôte de la base de données de secours.

  1. Localisez le portefeuille dans l'hôte sur site et rendez les fichiers de portefeuille lisibles, accessibles en écriture et exécutables par tous.
    cd /opt/oracle/admin/$ORCLSID/wallet
    Dans cet exemple, le portefeuille contient deux fichiers : ewallet.p12 et cwallet.sso. Rendez les deux fichiers lisibles, accessibles en écriture et exécutables par tous à l'aide de la commande chmod 777.
  2. Sur l'hôte de base de données OCI, vérifiez que le fichier $ORACLE_HOME/network/admin/sqlnet.ora contient le paramètre ENCRYPTION_WALLET_LOCATION dans sqlnet.ora.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE) (METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  3. Copiez le fichier de portefeuille vers l'hôte de base de données OCI dans le dossier /tmp à l'aide de la commande 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. Enlevez les fichiers de portefeuille existants de l'hôte de base de données OCI dans le répertoire /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.
  5. En tant qu'utilisateur OPC (et non l'utilisateur Oracle) sur l'hôte OCI, rendez les fichiers de portefeuille lisibles, accessibles en écriture et exécutables par tous.
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
  6. Copiez les fichiers de portefeuille du dossier /tmp vers /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME.