Mar 24, 2008

Rename Database name Oracle (db_name)

--para renombrar una base de datos

sql> alter system switch logfile;

sql> alter database backup controlfile to trace;

-- si la instancia está administrada por spfile
-- (show parameter pfile)
sql> create pfile from spfile;

sql> shutdown immediate


--luego abrimos el último trace generado en la carpeta udump:
hasta encontrar algo similar a lo siguiente:



--copiamos esa parte del archivo a un nuevo archivo *.sql
Cambiamos en el la línea CREATE CONTROLFILE REUSE DATABASE "xxxxx" RESETLOGS NOARCHIVELOG
a
CREATE CONTROLFILE SET DATABASE "xxx" RESETLOGS NOARCHIVELOG
--en el caso anterior esta base de datos se encuentra
--en modo noarchived log

-- el script luciria algo similar a (Sería bueno guardarlo
en un script y luego correrolo con @script.sql desde sqlplus "/as sysdba":

--esto lo añadimos nosotros, indicandole el nuevo pfile
--en ese pfile hay que modificar los parámetros:
--db_name, control_files, user_dump_dest, audit_file_dest, background_dump_dest y
--core_dump_dest con los nuevos valores.
STARTUP NOMOUNT PFILE=/u01/app/oracle/product/10.2.0/db_1/dbs/initlab.ora

--Cuando se setea un nuevo nombre de base de datos se deben
--resetear las secuencias de redolog
CREATE CONTROLFILE SET DATABASE "DUOC" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u02/oradata/duoc/redo01.log' SIZE 50M,
GROUP 2 '/u02/oradata/duoc/redo02.log' SIZE 50M,
GROUP 3 '/u02/oradata/duoc/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u02/oradata/duoc/system01.dbf',
'/u02/oradata/duoc/undotbs01.dbf',
'/u02/oradata/duoc/sysaux01.dbf',
'/u02/oradata/duoc/users01.dbf',
'/u02/oradata/duoc/example01.dbf'
CHARACTER SET WE8ISO8859P1
;

-- Database can now be opened normally.
ALTER DATABASE OPEN RESETLOGS;
--tempfile

ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oradata/duoc/temp01.dbf'
SIZE 22020096 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

--creamos las nuevas rutas de los datafiles, redolog, bdump, udump, controlfiles, etc,
--editamos desde el .bash_profile el ORACLE_SID
--ahora corremos el script

sqlplus "/as sysdba" @script.sql

luego sólo nos queda eliminar las antiguas carpetas que estaban asociadas
al antiguo nombre.

No comments:

Post a Comment