domingo, 11 de noviembre de 2012

Cambio de Host Name en Oracle 10g

En algún momento, la red corporativa puede decir (como en mi caso), cambiar los nombres de Host para adaptar las IPs de la filiales a la red internacional, o en menor escala, un usuario individual puede querer el nombre de Host por varias razones.

No obstante, este cambio puede suponer un problema si teníamos un SGBD (sistema gestor de base de datos) como Oracle instalada.

Pues bien, en este post os mostraré que pasos dar para que vuestra base de datos Oracle 10G o Oracle 10G XE vuelvan a funcionar después de un cambio de Host, sin tener que volver a reinstalarlo todo ¡Con las horas que eso representa!

Notad que aunque en este post solo hablaremos de Oracle 10G, esta solución seguramente es extensible a otras versiones de Oracle, de forma que empecemos con el tutorial!

Oracle 10G XE

En el caso de la versión express de Oracle, estamos de suerte, ya que los cambios a realizar serán mínimos. Concretamente, solo tendremos que parar todos los servicios de Oracle, cambiar los ficheros TNSNames.ora y Listener.ora (modificando todas las ocurrencias del antiguo host por el nuevo host) e iniciando de nuevo los procesos que habíamos parado en el primer paso. 

1. Parar todos los procesos de Oracle

Para asegurarnos de que todos los servicios de Oracle están apagados, entraremos al gestor de servicios de Windows. Para hacerlo, solo debemos ejecutar la utilidad services.msc desde:
Inicio > Ejecutar.

Una vez dentro, pararemos todos los servicios que empiecen por Oracle.



2. Modificar el host name de los ficheros TNSNames.ora y Listener.ora.

A continuación, cambiaremos el nombre de host antiguo de los ficheros TNSNames.ora y Listener.ora, por el nuevo nombre de host.

Estos ficheros de configuración se encuentran en:
  • %ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora
  • %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
3. Volver a iniciar los procesos de Oracle

Una vez hecho esto, volveremos a ejecutar la utilidad services.msc para iniciar los servicios de Oracle que hemos detenido en el paso 1.

A partir de este momento, ya podremos volver a utilizar nuestra base de datos normalmente. No obstante, no utilizamos la versión XE de Oracle, estos pasos no serán suficientes para volver a hacer funcionar nuestra base de datos.

Oracle 10G

En el caso de que tengamos una instalación con la versión completa de Oracle 10G, con los cambios anteriores podremos conectarnos e iniciar la base de datos, pero no funcionará la consola de administración.

Para solucionar este problema, deberemos seguir una serie de pasos que listo a continuación:

1. Añadir al fichero hosts la IP de la máquina antigua

El primer paso será añadir el nombre y la IP de la máquina antigua en el fichero de hosts de Windows. Este fichero se encuentra en el siguiente path:

%WINDIR%\system32\drivers\etc\hosts


####################################################
# HOSTS file 
####################################################

old_host  192.168.1.48


Siguiendo el formato de ejemplo incluido en el mismo fichero, con la interfaz de loopback (127.0.0.1).

Nota: En el caso de que no tengamos la IP antigua, pondremos el nombre de Host antiguo con una IP valida como localhost. El script de desinstalación requerirá que el Host exista para realizar la desinstalación.

2. Desinstalar la consola de administración

A continuación, deberemos desinstalar la consola de administración para volverla a reinstalar posteriormente. Para hacerlo, primeramente nos aseguraremos de que tenemos el directorio (%ORACLE_HOME%\bin) en la variable PATH de Windows.

Una vez nos hemos asegurado del punto anterior, ejecutaremos el siguiente comando en el PROMPT (símbolo de sistema) de Windows.

C:\> emca -deconfig dbcontrol db -repos drop

Este script nos pedirá la siguiente información:
  • SID
  • Port (de la BD)
  • Password del usuario SYS
  • Password del usuario SYSMAN
  • Confirmación

Una vez cumplimentada la información y confirmado el mensaje, se desinstalará la consola de administración.

3. Comprobar el LOG de la desinstalación

Una vez ejecutado el script de desinstalación, deberemos comprobar el LOG de desinstalación para ver que todo ha finalizado correctamente. Este LOG se encuentra típicamente en:

%ORACLE_HOME%\cfgtoollogs\emca\<sid>\ emca_repos_drop_YYYY_MM_DD_HH_MM .log

Donde <sid> es el SID de la base de datos.

En el fichero deberemos ver que todos los pasos estén marcados como successfully.

4. Parar todos los servicios de Oracle (opcional)

Para asegurarnos de que todos los servicios de Oracle están apagados, entraremos al gestor de servicios de Windows. Para hacerlo, solo debemos ejecutar la utilidad services.msc desde:
Inicio > Ejecutar.

Una vez dentro, pararemos todos los servicios que empiecen por Oracle.



5. Modificar el host name de los ficheros TNSNames.ora y Listener.ora.

A continuación, cambiaremos el nombre de host antiguo de los ficheros TNSNames.ora y Listener.ora, por el nuevo nombre de host.

Estos ficheros de configuración se encuentran en:
  • %ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora
  • %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
6. Eliminar el servicio de Windows (opcional)

En algunos casos, aunque la desinstalación haya funcionado correctamente, la desinstalación del servicio de Windows de la consola de administración no se habrá borrado correctamente.

Para hacer un borrado manual del servicio, deberemos ejecutar el siguiente comando desde el PROMPT de Windows:

C:\> sc delete OracleDBConsole<sid>

Donde substituiremos <sid> por el SID de la base de datos.

7. Reinstalar la consola de administración

Finalmente, solo quedará reinstalar la consola de administración y reiniciar los servicios que hemos parado.

Para reinstalar la consola de administración, ejecutaremos el siguiente script en el PROMPT de Windows:

C:\> emca -config dbcontrol db -repos create

Este script nos pedirá la siguiente información:
  • SID
  • Port (de la BD)
  • Password del usuario SYS 
  • Password del usuario DBSNMP
  • Password del usuario SYSMAN
  • Dirección de correo electrónico del administrador (opcional)
  • Servidor SMTP para el envío de correos (opcional)
  • Confirmación

Una vez cumplimentada la información y confirmado el mensaje, se instalará la consola de administración de Oracle de nuestra base de datos.

8. En caso de fallo al instalar la consola (Opcional)

En caso de que la instalación de la consola falle por algún error en la introducción de los passwords de DBA, ... Envés de borrar, parar los servicios y volver a instalarla, utilizaremos el comando:


C:\> emca -config dbcontrol db -repos recreate

9. Volver a iniciar los procesos de Oracle 

Una vez hecho esto, volveremos a ejecutar la utilidad services.msc para iniciar los servicios de Oracle que hemos detenido en el paso 4.

10. Comprobar que funciona la consola de administración

Finalmente comprobaremos que la consola de administración se ha instalado correctamente, accediendo a la URL de la consola de administración.

IMPORTANTE! La reinstalación de la consola de administración RESETEA EL PUERTO DE LA CONSOLA AL PUERTO: 5500.

http://[NEW_HOST]:5500/em

Donde substituiremos [NEW_HOST] por el nuevo nombre de host.

11. Cambiar el puerto de la consola de administración

Para volver a setear el puerto de la consola, por ejemplo al puerto 1158 de la instalación por defecto, deberemos ejecutar el siguiente comando:

C:\>emca -reconfig ports -DBCONTROL_HTTP_PORT 1158


Pues con esto acabamos el tutorial. ¡Espero que os sirva!

2 comentarios:

  1. Hola, muy interesante el tutorial. Me ha servido de mucha utilidad.
    Tan solo apuntar que para reinstalar la consola de administración es necesario tener los servicios de oracle arriba.
    Saludos

    ResponderEliminar
  2. Hola, me sale el siguiente error en el log
    Error al crear el repositorio
    Que puedo hacer??

    ResponderEliminar