Cambiar nombre de una base de datos

Suzu
17 de Septiembre del 2004
Hola.

Tengo una red de equipos clientes y dos servidores con Oracle. Hace poco uno de los servidores cascó y tuve que importar una base de datos de una versión 7 a un Oracle 8i. La base de datos se importó correctamente (o eso parece), pero al instalar el Oracle 8i le dí un nombre diferente del que tenía y ahora no consigo que los clientes se conecten al servidor. El problema es que los clientes me están dando un fallo del TNS names porque los clientes buscan una base de datos que no existe, ¿cómo le cambio el nombre a la base de datos del servidor?

El programa cliente no es el que viene con Oracle y desconozco cómo ha sido desarrollado pero, aunque indique una cadena de TNS válida (ya que indico una cadena que en el servidor funciona), no me la resuelve porque busca una base de datos en concreto y no me deja modificar el parámetro en la configuación del programa cliente.

¿Se puede cambiar el nombre de la base de datos desde el Enterprise Manager o desde algún programa del Oracle? ¿Se puede cambiar por consola?

Gracias

Jorge-DBA
17 de Septiembre del 2004
Hola Suzu:

Antes que nada, hay mas de una solución a tu problema de Base de Datos, este problema es muy común entre los Administradores de base de datos.

Te ofrezco una solución mas, antes de renombrar la base de datos, esto es simplemente cambiando el "ALIAS" al servicio de base de datos al TNSNAMES.ora de cada cliente, de esta forma te evitarás renombrar la base de datos.

Ahora bien, si tu desicion es "Renombar la base de datos", tienes que seguir los siguinetes pasos, es delicado y debes hacer un backup export y un ColdBackup y la base de datos no estará disponible mientras se renombra el SID:

Ejemplo para un equipo tecnología NT/2000/XP

1)
Alteras la base de datos haciendo un backup controlfile y revisas que se escriba el archivo trace.
2)
Cierras la base de datos con un shutdown normal o immediate... "NUNCA ABORT", puedes tener muchos problemas e incluso la pérdida total de la base de datos!!
3)
Detienes el servicio de NT
4)
Utilizas la utiliería Oradim y suprimes el servicio con el nombre real del SID de la base de datos
5)
Editas tu archivo de init y cambias todos los parámetoros del nombre real del SID base de datos al nuevo SID (Si tienes SPFILE eliminalo y ocupa el init creado)
6)
Utilizas la utiliería Oradim y recreas el servicio con el nuevo nombre del SID de la base de datos.
7)
Cambias tus parámetros del TNSNAMES.ora con el nuevo sid, asi como el archivo de parámetros de Listener.ora
8)
Detienes y arrancas el listener.
9)
Conectarse a SQL como sysdba
10)
Startup con nomount a la base de datos con el sid nuevo y el nuevo init.
11)
Editas el trace generado y cambias la opcion REUSE por "SET" y pones el nombre por el que vas a renombrarel SID y cambias de NORESETLOGS A RESETLOGS.
12)
Eliminas los controlfiles actuales y los recreas con el trace generdo en el paso anterior.
con esto los controlfiles tendrán el nuevo nombre a la base se datos y se sincronizarán con los Datafiles, y redologs.
13)
Abres la base de datos con resetlogs.
14)
Renombras el Globalname del la base de datos.
15)
Si estas utilizando spfile, simplemente lo vuelves a recrar tomando el init.ora modificado y con el que arrancaste la base de datos.

Listo!

Como podras ver no es tan sencillo renombrar un SID, pero tu valúa que es lo que es mas rápido para ti, necesitas entender muy bien el comportamiento de la base de datos en cada paso que estas haciendo, pero si lo dominas, no vas a tener problema, no existe herramienta que te renombre el SID de la base de datos, esto será de forma manual.

Saludos.

Jorge-DBA

Suzu
17 de Septiembre del 2004
Gracias por tu respuesta. No he podido probarlo aún ya que la base de datos no es de mi empresa sino de uno de los clientes y no puedo acceder al equipo con mucha frecuencia.

Eso de cambiar el nombre de la base de datos parece muy complicado, demasiado. Modificar el Alias en los clientes, es imposibe, no tienen el tnsnames.ora porque utilizan una aplicación desarrollada (no sé por quién ni como) para esa empresa y me he encontrado ante un servidor metido en una red sin saber nada de cómo está y sin saber cómo obtener esa información ya que en la empresa no han sabido decírmelo y la persona que lo montó se ha ido.

Como la base de datos no ha sufrido modificaciones desde que se importó del servidor antiguo, creo que reinstalaré el nuevo metiendo de nuevo la copia a través del import, porque me parece que es lo más sencillo dadas las circunstancias.