
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».
Conditions requises :
| ORIGINE | DESTINATION |
| hôte : Oracl21_Primary | hôte : Oracle21_dg |
| Nom de la base de données source (CDB) : testsource | Nom de la base de données de destination (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 |
Tâche 1 : Préparation de l'environnement source
À l'origine, dans la base de données, nous créons un utilisateur qui nous permettra de cloner notre base de données.
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 NOM
—————
1 Raul
2 Juan
3 Pepe
Tâche 2. Préparation de l'environnement de destination
Nous ajoutons dans le fichier tnsnames.ora la machine de destination l'adresse pointant vers la base de données CDB source, à laquelle nous nous connecterons pour effectuer la copie.
cat tnsnames.ora
SOURCE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testsource)
)
)
2.1. La base de données cible doit être en mode « archive log ».
archive log ;
SQL> Mode d'archivage de la base de données : Mode d'archivage
Archivage automatique activé
Destination d'archivage : USE_DB_RECOVERY_FILE_DEST
Séquence de journaux en ligne la plus ancienne : 3
Prochaine séquence de journaux à archiver : 5
Séquence de journaux actuelle : 5
Si vous n'êtes pas en mode « archive log », les étapes à suivre pour changer d'état sont les suivantes :
SHUTDOWN IMMEDIATE ;
STARTUP MOUNT ;
ALTER DATABASE ARCHIVELOG ;
ALTER DATABASE OPEN ;
ARCHIVE LOG ;
2.2. Assurez-vous que local_undo_enabled soit défini sur « true » dans la base de données cible.
Comprobamos que está a TRUE el (Local UNDO). Esto nos permite, entre otras cosas la clonación en caliente de la PDB.

2.3. Création d'un DB_LINK pointant vers la base de données source.
Nous créons un db_link à partir de la base de données de destination, pointant vers la base de données source, à l'aide duquel nous effectuerons la copie.
SQL> show con_id
———————–
1
SQL> CREATE PUBLIC DATABASE LINK clone_pdblink CONNECT TO c##testclone identified by bdconraulusing‘SOURCE‘;
Remarque : Nom du db_link : clone_pdblink Utilisateur de connexion à la base de données : c##testclone tnsnames name=SOURCE
Nous vérifions que le db_link a bien été créé :

Exercice 3. Clonage de la base de données distante.
Nous lançons la commande de clonage depuis la base de données de destination en pointant vers la base de données source via le db_lnik créé précédemment.
SQL> alter session set global_names=false;
Session modifiée.
SQL> create pluggable database CLONE_PDB1 from PDB1_SOURCE@clone_pdblink;
Base de données enfichable créée.
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;

Exercice 5. Nous vérifions que tout est correct.
Comprobamos que la PDB y los datos de la misma se han replicado de forma correcta en destino.






