Wallet Key Needed - PDB needs to import keys from source

David SanzDavid Sanz
2 min read

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.

0
Subscribe to my newsletter

Read articles from David Sanz directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

David Sanz
David Sanz

Soy desarrollador, Analista, DBA Oracle y Arquitecto OCI, certificado en OCI Migration and Integration Certified Professional y Certified Architect Associate con más de 15 años de experiencia en plataformas Oracle además de especialista en temas de rendimiento.