Hoy vamos a ver una sencilla entrada en la que indicaremos como duplicar una base de datos en windows mediante RMAN DUPLICATE.
Este método está muy documentado en un montón de webs, pero , en entornos windows suele tener la pega ( como todo lo de Oracle+Windows) del servicio de windows.
Supongamos que tenemos una base de datos llanada PROD y que queremos clonarla para su uso en desarrollo en otra llamada DESA.
Además de esto, queremos modificar el path de los ficheros de la base de datos, ya que,en la máquina de desarrollo queremos que todo lo que esté en D: y E: pase a estar en Z:
Así pues, los pasos serán:
1- Creamos el init.ora de la instancia a partir de la clonada
Aunque hay documentos que te explican como crear un init mínimo, lo mejor y mas cómodo segun mi opinion es crear un sencillo pfile en texto dsde el spfile del origen
create pfile='initDESA.ora' from spfile;
2- Editamos el initSID.ora y cambiamos TARGET por SID en todas las lineas
Abriremos con cualquier editor el fichero que acabamos de generar y substituiremos la cadena PROD por DESA
3- Creamos el fichero de passwd
Tendremos que ir al $ORACLE_HOME/database crear nuestro fichero de password.
orapwd file=PWDDESA.ora password=mipasswd entries=6 force=y
4- Cramos el servicio de windows
Este es el paso que podemos evitarnos en unix, pero que es inevitable en windows
oradim -NEW -SID DESA -SYSPWD mipasswd -SRVC OracleServiceDESA -STARTMODE auto -SRVCSTART system -SPFILE
5- paramos y arrancamos en modo nomount
El proceso de creacion de servicio habrá arrancado la base de datos , pro lo que tendremos que entrar , pararla y dejarla arrancada en modo nomount.
6- añadimos las líneas de cambio de path en el nuevo INIT.ora
Este es el punto mas extraño ya que, las opciones de cambio de nombre del path del fichero no están en el fichero de comandos de rman, sino en el init.ora de la nueva base de datos.
Con estos comandos movemos tanto los logfiles como los datafiles normales a su nuevo path
LOG_FILE_NAME_CONVERT =('D:\oracle\ORADATA\PROD','Z:\oracle\ORADATA\DESA','E:\oracle\ORADATA\PROD','Z:\oracle\ORADATA\DESA')
DB_FILE_NAME_CONVERT = ('D:\oracle\ORADATA\PROD','Z:\oracle\ORADATA\DESA','E:\oracle\ORADATA\PROD','Z:\oracle\ORADATA\DESA')
7- Creamos el fichero de comandos rman
connect target sys/XXXX.@PROD;
connect catalog user/pass@CATALOG;
connect auxiliary /
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 4;
CONFIGURE CHANNEL DEVICE TYPE SBT_TAPE parms 'ENV=(NSR_SERVER=backupserver, NSR_DATA_VOLUME_POOL=pollduplicados)';
RUN{
DUPLICATE TARGET DATABASE TO "DESA" ;
}
8-Lanzamos el duplicado
Ahora solamente queda lanzar el rman
rman cmdfile=comandos.crv logfile=duplicacion.log
Y un un tiempo record tendréis duplicada vuestra base de datos PROD renombrada a DESA y en el nuevo path Z:\oracle\ORADATA\DESA