Wallet Key Needed - PDB needs to import keys from source

A la hora de abrir una PDB, nos encontramos que la PDB estaba abierta pero en modo RESTRICTED=YES

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         4 XXXXXX                         READ ONLY  YES

¿Por qué sucede esto? Para poder tener una pista del porqué sucede esto, tenemos que mirar PDB_PLUG_IN_VIOLATIONS.

SQL> set linesize 1000 pages 100
SQL> column message format a100
SQL> column cause format a40
SQL> column name format a20
SQL> Select Name, Cause, Type, Message, Status  From Pdb_Plug_In_Violations Where TYPE='ERROR' Order By Name;
NAME      CAUSE                TYPE   MESSAGE                                                                                              STATUS
-------- --------------------- ------ --------------------------------------
XXXXXX    Wallet Key Needed    ERROR  PDB needs to import keys from source.                                                             PENDING

A la hora de migrar la PDB, parece que la parte de la Wallet no se ha cargado bien. Vamos a tener que exportarla de origen e importar/generar de nuevo en OCI.

Lo primero que vamos hacer es exportarla de origen

SQL> administer key management export encryption keys with secret "pass" to '/tmp/origen.exp' identified by "pass";

Una vez exportada la subimos a OCI vía scp y la cargamos en nuestra base de datos. Un consejo, siempre que trabajemos con wallet, hacemos una backup.

A nivel de CDB$Root

SQL> !mv /opt/oracle/dcs/commonstore/wallets/$ORACLE_UNQNAME/tde/cwallet.sso /opt/oracle/dcs/commonstore/wallets/$ORACLE_UNQNAME/tde/cwallet.sso.bck
SQL> administer key management set keystore close;
SQL> administer key management set keystore open identified by "pass";
SQL> administer key management set key identified by "pass" with backup;
SQL> administer key management create AUTO_LOGIN keystore from keystore '/opt/oracle/dcs/commonstore/wallets/$ORACLE_UNQNAME/tde' identified by "pass";

A nivel de PDB

SQL> administer key management set keystore open identified by "pass";
SQL> administer key management import keys with secret "pass" from '/tmp/origen.exp' identified by "pass" with backup;

Cerramos y abrimos la PDB

SQL> ALTER PLUGGABLE DATABASE CLOSE;
SQL> ALTER PLUGGABLE DATABASE OPEN;

Revisamos como se ha abierto la PDB

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         4 XXXXXX                         READ WRITE NO

Perfecto, se ha podido abrir la BBDD sin restricciones. Espero que os sirva.