Cloner une PDB depuis une autre CDB via un DB link (remote clone)
OracleMultitenantCommande
-- 1) In the SOURCE CDB, a common user:
CREATE USER c##clone_user IDENTIFIED BY "<password>" CONTAINER = ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER = ALL;
-- 2) In the TARGET CDB root, DB link and test:
CREATE DATABASE LINK clone_link
CONNECT TO c##clone_user IDENTIFIED BY "<password>"
USING '//<source_host>:1521/<source_cdb_service>';
SELECT * FROM dual@clone_link;
-- 3) Clone and open:
CREATE PLUGGABLE DATABASE <new_pdb> FROM <pdb>@clone_link
FILE_NAME_CONVERT = ('/<pdb>/', '/<new_pdb>/');
ALTER PLUGGABLE DATABASE <new_pdb> OPEN;
-- 4) Violations (version, options, parameters, patches):
SELECT name, cause, type, message
FROM pdb_plug_in_violations
WHERE name = UPPER('<new_pdb>') AND status <> 'RESOLVED';Ce que fait la commande
Copie une PDB de la CDB source vers la CDB cible par le réseau via un DB link ; aucun fichier intermédiaire ni unplug nécessaire.
Quand l'utiliser
Pour déplacer une PDB vers un autre serveur/une autre CDB, créer une copie de test de la production sur un serveur séparé, ou passer à une CDB de version plus récente.
Attention
Les CDB source et cible doivent être compatibles en endianness, jeu de caractères (ou cible AL32UTF8) et options ; une PDB clonée vers une version plus récente s'ouvre d'abord en RESTRICTED et nécessite datapatch/upgrade. Supprimez le DB link et le common user une fois le clone terminé. Le hot clone exige local undo + ARCHIVELOG sur la source.
Voir aussi
- Créer une nouvelle PDB depuis PDB$SEED
- Cloner une PDB dans la même CDB (clone local / à chaud)
- Débrancher une PDB et la brancher dans une autre CDB (ou la même)
- Ouvrir les PDB et les garder ouvertes après un redémarrage de la CDB (SAVE STATE)
- Définir des limites de CPU, mémoire, E/S et stockage par PDB
- Vérifier dans quel conteneur vous êtes et interroger toutes les PDB depuis la racine (CDB_ / CONTAINERS)