[OCI] Clone PDB
![[OCI] Clone PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F8ce0c665-4a5d-459d-91cf-ffe3f47d8176.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
El artículo también se encuentra publicado en Ingles English version.
En el artículo de hoy vamos a ver como podemos clonar una PDB usando RMAN Active Duplicate o bien usando una instrucción DDL entre diferentes CDB$Root.
DDL
Para el primer caso tengo un script para automatizar este paso. Este script se debe ejecutar con el usuario oracle y en la máquina de destino.
Link a github:
https://github.com/dbaenlasombra/OCI/blob/main/remote_clonning.sh
¿Qué hace el script?
Define un usuario común en origen con los permisos necesarios. El nombre es una cadena random no es estático, generada en unix "tr -dc 'A-Za-z' </dev/urandom | head -c 5 | tr '[:lower:]' '[:upper:]'" , así como la password , generada y cumpliendo los requisitos mínimos de seguridad de Oracle.
Define el DB Link en destino. Igual que el paso previo, se genera el nombre de manera aleatoria.
Creación de la PDB.
Una vez que se ha creado la PDB, el script eliminará el usuario común así como el DB Link.
Todos los nombres se generan random para no interferir con otros trabajos que haya en ese momento en nuestra PDB.
Como pasos previos antes de ejecutar el script, necesitamos hacer lo siguiente:
Configurar una clave rsa para el usuario oracle en destino con nombre id_rsa y configurar esa clave en origen para permitir la comunicación entre ambas máquinas.
Configurar el local naming "SOURCE" en el tnsnames de destino con la cadena de conexión de nuestro origen.
Configurar en destino el parámetro one_step_plugin_for_pdb_with_tde a true.
Este script espera los siguientes parámetros en este orden:
IP del origen. El motivo, es que abre una conexión ssh con el usuario oracle para entrar como sysdba y ejecutar las instrucciones necesarias para definir el usuario común.
Nombre de la PDB que vamos a clonar.
Password de la TDE.
Lanzamos el sh en modo nohup:
[oracle@~]$
nohup ./remote_clonning.sh \(1 \)2 $3 > /tmp/remote_clonning.log 2>&1 &
Y esto sería la salida del sh:
El script también nos informaría en caso de fallo:
RMAN ACTIVE DUPLICATE
En este laboratio, también hay un script como en el paso anterior.
Link a github:
https://github.com/dbaenlasombra/OCI/blob/main/rman_clone_pdb.sh
Como pasos previos necesitamos hacer lo siguiente
Incluir las cadenas de conexión de origen como destino en ambas máquinas.
Exportar la wallet en origen para importarla en destino.
Modificar el parámetro remote_recovery_file_dest en destino:
SQL> alter system set remote_recovery_file_dest = '+RECO' scope = both sid = '*';
Este script espera los siguientes parámetros en este orden:
Connector para la base de datos que hace de auxiliar.
Connector para la base de datos que hace de target.
Nombre de la PDB que vamos a clonar.
Nombre de la DB.
Lanzamos el sh en modo nohup:
[oracle@ ~]\( nohup ./rman_clone_pdb.sh "user\)/\(pass@\)local_name" "user\(/\)pass@\(local_name" \)pdb $db > /tmp/rman_clone_pdb.log 2>&1 &
Y esto sería la salida del sh:
Espero que os guste. ¡Nos vemos en el próximo artículo!
![[OCI] Check Jobs DBCli](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F1376a869-58fa-491e-926a-a6ead08f9c80.png&w=3840&q=75)
![[26ai] JOIN_TO_ME](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F16a23f6e-ec4c-4f0a-9529-2c8a2af2ef5e.png&w=3840&q=75)
![[26ai] Limpieza de objetos obsoletos en desuso](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F93181086-1008-4184-8454-33b7367ebedb.png&w=3840&q=75)
![[26ai] Hybrid Read-Only Mode PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fde208bd2-5e24-4fd3-acf7-8e5394d95283.png&w=3840&q=75)