sábado, 10 de mayo de 2025

Clonando un PDB dentro de un contenedor de base de datos, sólo con METADATA

 

Es posible clonar un base de datos acoplada dentro de un contenedor que sólo lleve la METADATA de los objetos y no los datos?

Si es posible. Veamos un ejemplo.

Tenemos un contenedor de base de datos con los siguientes PDBs.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB3                           READ WRITE NO
         4 PROD_DR                        MOUNTED
         5 PDB2                           READ WRITE NO
         6 PDB1                           READ WRITE NO
SQL>
Vamos a conectarnos al PDB1 y vamos a validar la cantidad de registros
que tiene la tabla t2 del esquema TEST.
SQL> alter session set container=PDB1;

Session altered.

SQL> select count(*) from test.t2;

  COUNT(*)
----------
      1000

La tabla como vemos, tiene 1000 registros. Ahora vamos nuevamente para el CDB#ROOT.
SQL> connect / as sysdba
Connected.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB3                           READ WRITE NO
         4 PROD_DR                        MOUNTED
         5 PDB2                           READ WRITE NO
         6 PDB1                           READ WRITE NO

Vamos a crear un nuevo PDB con el nombre de "PDB1_NODATA" y lo que vamos a hacer distinto 
es que vamos a colocar las palabras "no data" al final del comando.
SQL> create pluggable database pdb1_nodata from PDB1 no data;

Pluggable database created.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB3                           READ WRITE NO
         4 PROD_DR                        MOUNTED
         5 PDB2                           READ WRITE NO
         6 PDB1                           READ WRITE NO
         7 PDB1_NODATA                    MOUNTED

Una vez creada la nueva PDB vamos a abrir la base de datos y nos conectamos a la misma.
SQL> alter pluggable database PDB1_NODATA open;

Pluggable database altered.


SQL> alter session set container=PDB1_NODATA;

Session altered.

Verificamos la existencia y el contenido de la tabla T2 en el esquema TEST.

SQL> select count(*) from test.t2;

  COUNT(*)
----------
         0

SQL> desc test.t2
 Name                    Null?    Type
 ----------------------- -------- ---------
 X                                NUMBER
 Y                                CHAR(1)

SQL>

Como pueden observar el objeto existe, pero no tiene los registros que tenía en el PDB de origen.

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM