
En esta entrada vamos a explicar cómo clonar una PDB en una base de datos diferente (bbdd contenedora) en un sistema de base de datos diferente, esto se conoce cómo «clonación remota».
Requisitos:
| ORIGEN | DESTINO |
| host: Oracl21_Primary | host: Oracle21_dg |
| Nombre de la base de datos origen (CDB): testsource | Nombre de la base de datos destino (CDB): testtarget |
| Nombre de la base de datos destino (PDB): PDB1_SOURCE | Nombre de la base de datos destino (PDB): TEST_TARGETPDB1 |
| Version: 19.3 | Version: 19.3 |
Tarea 1: Preparación del entorno de origen
En origen, en la CDB, creamos un usuario con el que clonaremos nuestra Base de datos.
SQL> show con_id
CON_ID
1
SQL> CREATE USER c##testclone IDENTIFIED BY bdconraul CONTAINER=ALL;
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##testclone CONTAINER=ALL;
En la pdb_source1 hay una tabla del esquema RAUL, llamada SOURCETABLE que vamos a replicar al host destino en nuestro caso Oracle21_dg. Comprobamos el contenido de la tabla en origen;
SQL> ALTER SESSION SET CONTAINER=PDB1_SOURCE;
SQL> show con_name
CON_NAME
——————-
PDB1_SOURCE
SQL> show con_id
CON_ID
————
3
SQL> select * from RAUL.SOURCETABLE;
ID NOMBRE
—————
1 Raul
2 Juan
3 Pepe
Tarea 2. Preparación del entorno destino
Añadimos en el tnsnames.ora de la máquina de destino la dirección que apunta a la base de datos CDB de origen, donde nos conectaremos para realizar la copia.
cat tnsnames.ora
SOURCE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testsource)
)
)
2.1. La CDB destino debe estar en modo archive log.
archive log list;
SQL> Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 3
Next log sequence to archive 5
Current log sequence 5
En caso de que no esté en modo archive log, los pasos para cambiar de estado son los siguientes:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST;
2.2.Asegúrese de que local_undo_enabled esté definido en true en la CDB de destino.
Comprobamos que está a TRUE el (Local UNDO). Esto nos permite, entre otras cosas la clonación en caliente de la PDB.

2.3. Creación DB_LINK que apunte a la base de datos de origen.
Creamos un db_link desde la base de datos destino apuntando la base de datos origen con el que ejecutaremos la copia.
SQL> show con_id
———————–
1
SQL> CREATE PUBLIC DATABASE LINK clone_pdblink CONNECT TO c##testclone identified by bdconraulusing ‘SOURCE‘;
Nota: Nombre del db_link: clone_pdblink usuario conexión BBDD: c##testclone tnsnames name=SOURCE
Comprobamos que el db_link se ha creado correctamente:

Tarea 3.Clonación de la base de datos remota.
Lanzamos el comando de clonación desde la base destino apuntando a la base de datos origen a través del db_lnik creado anteriormente.
SQL> alter session set global_names=false;
Session altered.
SQL> create pluggable database CLONE_PDB1 from PDB1_SOURCE@clone_pdblink;
Pluggable database created.
Tarea 4. Abrir PDB recientemente creada
Por defecto la base de datos (pdb) se crea montada. Abrimos la pdb.
SQL> alter pluggable database test_targetpdb1 open;

Tarea 5. Comprobamos que todo es correcto.
Comprobamos que la PDB y los datos de la misma se han replicado de forma correcta en destino.






