# 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

```plaintext
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.

```plaintext
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

```plaintext
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

```plaintext
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

```plaintext
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

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

Revisamos como se ha abierto la PDB

```plaintext
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.
