¿Cómo cambiar el db_name en Oracle 11g y 12c ?

Pues eso amig@s,

Si por un casual hemos clonado una bbdd y como requisito, debemos cambiarle el dbname, oracle ha introducido una nueva herramienta llamada DBNEWID. Es muy fácil de utilizar, a continuación detallo el paso a paso.

  1. Asegurarse de que hemos restablecido una copia completa y que ésta sea funcional.
  2. Creamos un fichero pfile con el comando CREATE PFILE='RUTADELPFILE\PFILE.ORA' FROM SPFILE.
  3. Nos aseguramos de que hemos puesto la bbdd en modo montaje (sin apertura), en caso de que ya se encuentre abierta, ejecutamos los siguientes comandos:
    SHUTDOWN IMMEDIATE
    STARTUP MOUNT
    

  4. Ejecutamos la utilidad para el cambio de dbname, se llama nid y está disponible tanto para windows como para linux también:
    c:\>nid TARGET=SYS DBNAME=test_db SETNAME=YES
    
    DBNEWID: Release 11.1.0.6.0 - Production on Tue Aug 21 05:40:21 2007
    
    Copyright (c) 1982, 2007, Oracle. All rights reserved.
    
    Password: password
    
    La tarea de DBNEWID es ejecutar ciertas validaciones en las cabeceras de los archivos de control antes de realizar los cambios oportunos en los propios ficheros de la bbdd. Si la validación es correcta, la utilidad actualizará la información en dichos ficheros con el nuevo nombre que le hemos indicado en la linea de comandos (al ejecutar la aplicación), es decir el DBNAME=test_db y con la opción SETNAME=yes lo forzamos a que no compruebe cual es el nombre actual de la bbdd. Por lo que si la utilidad considera que el cambio puede realizarse, nos mostrará algo similar a lo que viene a continuación:
    .
    .
    .
    Control Files in database:
        /oracle/TEST_DB/data/cf1.f
        /oracle/TEST_DB/data/cf2.f
    
    The following datafiles are offline clean:
        /oracle/TEST_DB/data/tbs_61.f (23)
        /oracle/TEST_DB/data/tbs_62.f (24)
        /oracle/TEST_DB/data/temp3.f (3)
    These files must be writable by this utility.
    
    The following datafiles are read-only:
        /oracle/TEST_DB/data/tbs_51.f (15)
        /oracle/TEST_DB/data/tbs_52.f (16)
        /oracle/TEST_DB/data/tbs_53.f (22)
    These files must be writable by this utility.
    
    Changing database name from PROD to TEST_DB
        Control File /oracle/TEST_DB/data/cf1.f - modified
        Control File /oracle/TEST_DB/data/cf2.f - modified
        Datafile /oracle/TEST_DB/data/tbs_01.f - wrote new name
        Datafile /oracle/TEST_DB/data/tbs_ax1.f - wrote new name
        Datafile /oracle/TEST_DB/data/tbs_02.f - wrote new name
        Datafile /oracle/TEST_DB/data/tbs_11.f - wrote new name
        Datafile /oracle/TEST_DB/data/tbs_12.f - wrote new name
        Datafile /oracle/TEST_DB/data/temp1.f - wrote new name
        Control File /oracle/TEST_DB/data/cf1.f - wrote new name
        Control File /oracle/TEST_DB/data/cf2.f - wrote new name
        Instance shut down
    
    Database name changed to TEST_DB.
    Modify parameter file and generate a new password file before restarting.
    Successfully changed database name.
    DBNEWID - Completed successfully.
    
    Si la validación no es correcta, DBNEWID se cerrará y no realizará ningún cambio en los ficheros de la bbdd.
  5. Si todo es correcto, deberemos actualizar el pfile con el notepad modificando el db_name con nuevo nombre *.db_name=test_db.
  6. Montamos la bbdd con la opción STARTUP MOUNT PFILE='RUTADELPFILE\PFILE.ORA'
  7. Creamos un nuevo SPFILE a partir del PFILE con CREATE SPFILE FROM PFILE='RUTADELPFILE\PFILE.ORA'
  8. Realizamos un shutdown immediate.
  9. Por ultimo arrancamos la bbdd en modo normal con:
    STARTUP
    

Más información en Oracle: http://docs.oracle.com/cd/B28359_01/server.111/b28319/dbnewid.htm#i1004734

Espero que les resulte útil.

Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: