Desconectar (unplug) una PDB y conectarla (plug) en otra CDB (o en la misma)
OracleMultitenantComando
-- SOURCE CDB: close and unplug to an XML manifest
ALTER PLUGGABLE DATABASE <pdb> CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE <pdb> UNPLUG INTO '/u01/stage/<pdb>.xml';
-- (Single-file archive: UNPLUG INTO '/u01/stage/<pdb>.pdb' - includes datafiles, 12.2+)
DROP PLUGGABLE DATABASE <pdb> KEEP DATAFILES;
-- TARGET CDB: check compatibility first
SET SERVEROUTPUT ON
DECLARE
l_ok BOOLEAN;
BEGIN
l_ok := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/u01/stage/<pdb>.xml',
pdb_name => '<pdb>');
DBMS_OUTPUT.PUT_LINE(CASE WHEN l_ok THEN 'COMPATIBLE' ELSE 'NOT COMPATIBLE - see PDB_PLUG_IN_VIOLATIONS' END);
END;
/
SELECT name, cause, type, status, message
FROM pdb_plug_in_violations
WHERE name = UPPER('<pdb>') AND status <> 'RESOLVED';
-- NOCOPY if the files stay in place, COPY FILE_NAME_CONVERT if they move:
CREATE PLUGGABLE DATABASE <pdb> USING '/u01/stage/<pdb>.xml' NOCOPY TEMPFILE REUSE;
-- From a .pdb archive: CREATE PLUGGABLE DATABASE <pdb> USING '/u01/stage/<pdb>.pdb'
-- FILE_NAME_CONVERT = ('/u01/stage/', '/u02/oradata/<cdb>/<pdb>/');
ALTER PLUGGABLE DATABASE <pdb> OPEN;Qué hace
Separa la PDB de la CDB y escribe sus metadatos en un manifiesto XML (o en un único archivo .pdb junto con los datafiles); tras una comprobación de compatibilidad la vuelve a conectar en la CDB de destino con los mismos archivos.
Cuándo usarlo
Para mover una PDB a una CDB de versión más nueva en el mismo servidor (upgrade por unplug/plug), para consolidar CDB o para traslados donde no es posible clonar por la red.
Precaución
Tras el unplug, la PDB no está disponible en la CDB de origen (tiempo de inactividad). Los archivos conectados con NOCOPY pasan a pertenecer a la CDB de destino; tome antes una copia a nivel de archivo o un backup de RMAN para poder volver atrás si falla. Hasta resolver las violaciones de tipo ERROR, la PDB se abre en RESTRICTED. Al volver a conectarla en la misma CDB, omitir AS CLONE puede causar un conflicto de GUID.
Relacionado
- Crear una PDB nueva desde PDB$SEED
- Clonar una PDB dentro de la misma CDB (clon local / hot clone)
- Clonar una PDB desde otra CDB por un DB link (clon remoto)
- Abrir PDB y mantenerlas abiertas tras reinicios de la CDB (SAVE STATE)
- Definir límites de CPU, memoria, I/O y almacenamiento por PDB
- Confirmar en qué contenedor está y consultar todas las PDB desde el root (CDB_ / CONTAINERS)