hoy haciendo limpia de los millones de papeles que tengo en el escritorio, cajones, archivadores, etc sobre manuales, notas, tips, anotaciones y mas sobre Oracle he encontrado uno muy chulo que slo he usado dos veces en mi vida. Tristemente el ratio de ejecuciones correctas est en el 50% pero lo achaco a que esta fue una de las primeras operaciones que hice cuando comenc a trabajar como dba.
El procedimiento lo tengo escrito para versin 9i y es tal cual lo que voy a transcribir pero en cuanto termine con los nuevos sandbox que me estoy creando probar a repetirlo en 10gR2 y 11gR2.
Primer paso: hacer backup de todo lo que permita hacerlo, de todo, todo y todo! incluso un backup del backup XD Tener en cuenta el pfile, spfile, orapwd, listener.ora, tnsnames.ora ... todo!
Segundo paso: crear el script que vamos a usar para cambiar el nombre si es que en los nombres de los datafiles tienes el nombre de la instancia. Este paso no es obligatorio pero si tienes la buena costumbre de incluir el SID en los nombre de los datafiles lo vas a necesitar. El contenido puede ser este: set heading off set echo off spool nombre.sql SELECT 'ALTER DATABASE RENAME FILE '''||MEMBER||''' TO '''|| REPLACE(MEMBER,'sid_viejo','sid_nuevo')||''';' from v$logfile; SELECT 'ALTER DATABASE RENAME FILE '''||FILE_NAME||''' TO '''||REPLACE(FILE_NAME,'sid_viejo','sid_nuevo')||''';' from dba_data_files; spool off
Parar la instancia: shutdown immediate; Renombrar los datafiles en el sistema operativo: mv datafile_nombre_viejo datafile_nombre_nuevo Renombrar los datafiles en la base de datos: setenv ORACLE_SID sid_nuevo --> si usas csh export ORACLE_SID=sid_nuevo --> si usas ksh sqlplus "/as sysdba" startup mount; spool nombre.log @nombre.sql spool off
Tercer paso: CAMBIAR EL SID setenv ORACLE_SID sid_nuevo --> si usas csh export ORACLE_SID=sid_nuevo --> si usas ksh Invocar a BDNEWID: nid target=sys dbname=sid_nuevo logfile=cambio_sid.log shutdown immediate modificar en el pfile los valores de dbname e instance_name al sid_nuevo
setenv ORACLE_SID sid_nuevo --> si usas csh export ORACLE_SID=sid_nuevo --> si usas ksh orapwd file=orapwsid_nuevo password=contrasea_de_sys entries=8 create spfile from pfile; startup mount alter database open resetlogs; shutdown immediate;
startup lsnrctl start nombre_listener;
Y nada mas arrancar, volver a hacer un backup que hemos hecho un resetlogs!!!
Lo dicho, probar a repetir el procedimiento en 10g y 11g para contaros si hay alguna novedad.
Saludos!
PD: esta entrada est basada en el procedimiento que mis compaeros de Soluziona me pasaron en su da. No tengo ni idea de dnde se documentaron ellos, supongo que de alguna nota de Metalink. De todas formas os dejo una entrada que he encontrado en otro blog por si en alguno de los pasos he resumido demasiado. orlandoolguin