Migración de Oracle 10g Standard Edition a Enterprise Edition

Hace unas semanas en mi nuevo empleo hice unas instalaciones de Oracle de las cuales me pidieron que instalara la versión Standard, pero por razones de licenciamiento (compraron otro tipo de licencias!) decidieron que era mejor tener instalada la versión Enterprise.

Yo nunca había hecho una migración de standard a enterprise, así que inmediatamente me fui a Googlear la documentación de Oracle y me encontré el siguiente documento :

http://download.oracle.com/docs/cd/B19306_01/server.102/b14238/intro.htm#BABFBJCC

Que básicamente dice :

Moving From the Standard Edition to the Enterprise Edition

If you are using the Standard Edition of the Oracle Database and want to move to the Enterprise Edition, then complete the following steps:

1. Ensure that the release number of your Standard Edition server software is the same release as the Enterprise Edition server software.

For example, if your Standard Edition server software is release 10.2.0, then you should upgrade to release 10.2.0 of the Enterprise Edition.

2. Shut down your database.

3. If your operating system is Windows, then stop all Oracle services, including the OracleServiceSID Oracle service, where SID is the instance name.

4. Deinstall the Standard Edition server software.

5. Install the Enterprise Edition server software using the Oracle Universal Installer.

Select the same Oracle home that was used for the de-installed Standard Edition. During the installation, be sure to select the Enterprise Edition. When prompted, choose Software Only from the Database Configuration screen.

6. Start up your database.

Your database is now upgraded to the Enterprise Edition.


Simple verdad? Pues no, no era tan simple hay algunos detalles que no
se muestran en este documento. A continuación voy a poner los pasos que realicé en mi actualización.

  1. Primero hay que obtener un respaldo de la base y de los archivos init.ora, listener.ora, sqlnet.ora.
  2. « Bajar » la base de datos (shutdown immediate).
  3. Si se tiene instalado DBConsole (Enterprise Manager) hay que apagar los servicios : emctl stop dbconsole.
  4. Detener los listeners : lsnrctl stop listener.
  5. Verificar que el directorio oraInventory para nuestra base exista en el folder correcto. Ej : /oracle/oraInventory
  6. Pasos 7 y 8 son para Unix. Si es windows entonces nada mas ejecutar el installer desde Programs.
  7. Abrir una sesion de XTerm (Unix) para hacer la desinstalación. No olvidar la variable DISPLAY (en Unix), todo este proceso es similar a la instalación.
  8. Desde la sesión XTerm entrar al directorio ($ORACLE_HOME/oui/bin) y ejecutar el instalador (./runInstaller)
  9. Click en Deinstall Products
  10. Como deseamos desinstalar el SOFTWARE solamente hay que seleccionar el Oracle home que deseamos desinstalar. Antes de desinstalar asegúrese de tener backup de init (spfile), listener, tnsnames ya que este proceso « borra » el Oracle Base (donde esta instalado el software de oracle).
  11. Después de seleccionar el Oracle Home entonces dar click en REMOVE y luego YES.
  12. La pantalla de REMOVE va aparecer con el progreso de la operación.
  13. Cuando termine la desinstalación cerrar el Oracle Universal Installer.
  14. En mi caso tuve que borrar el restante del Oracle Base
  15. cd $ORACLE_BASE
    rm –Rf product

  16. El siguiente paso es instalar el software únicamente pero en la versión Enterprise Edition.
  17. Una vez instalada la nueva versión entonces instalar los PatchSets y los Patches.
  18. Regresar los respaldos de init.ora, listener.ora, tnsnames.ora a su lugar original.
  19. Recrear el password file en caso que se haya tenido activada esta opción.
  20. Abrir la base de datos de nuevo. Como es la misma versión (10g) no hay que hacer migración y los mismos archivos (datafiles, controlfiles, redo logs,etc) deben funcionar correctamente.
  21. En algunos documentos que lei solo recomiendan re-ejecutar el catalog.sql y catproc.sql, pero en mi caso yo ejecute casi todos los scripts de nuevo.
  22. Connect as sys and execute

@$ORACLE_HOME/rdbms/admin/catalog.sql;
@$ORACLE_HOME/rdbms/admin/catblock.sql;
@$ORACLE_HOME/rdbms/admin/catproc.sql;
@$ORACLE_HOME/rdbms/admin/catoctk.sql;
@$ORACLE_HOME/rdbms/admin/owminst.plb;
Conectarse como system y ejecutar:
@$ORACLE_HOME/sqlplus/admin/pupbld.sql;
@$ORACLE_HOME/sqlplus/admin/help/hlpbld.sql helpus.sql;

  1. Verificar que sus backups funcionen.
  2. Probar el listener y tnsnames.
  3. Si se tenia DBConsole instalada hay que reinstalar de nuevo.
  4. En mi caso, y creo que fue por que re-ejecute todos los scripts tuve que hacer grants a algunos usuarios como el usuario de backups. Asi que esten atentos por que puede ser que deban reasignar los privilegios a ciertos usuarios. Básicamente por que los scripts recrean de nuevo el diccionario de datos

Y pues simplemente este es el pequeño proceso para hacer una migración de Standard Edition a Enterprise Edition. En general todo debe ser muy sencillo a exepción de la ejecución de los scripts que hicieron que varios usuarios perdieran privilegios.

  1. #1 by Miguel on 4 April, 2008 - 21:17

    Hola muy interesante tu proceso mi pregunta es; se puede realizar de la misma manera el proceso contrario de bajar de enterprise edition a standar edition??.

  2. #2 by delfinonunez on 6 April, 2008 - 13:20

    Hola Miguel,
    La verdad nunca lo he hecho a la inversa (en realidad nunca había tenido que hacer un upgrade de EE [Enterprise Edition] a SE [Standard Edition]), pero es una pregunta interesante.
    Nada más buscando rápidamente(hoy es domingo, día de flojear) en metalink encontré esta nota 139642.1 (Converting from Enterprise Edition to Standard Edition), en resumen dice que no se puede hacer tan “fácilmente” como de SE a EE, o más bien no hay un proceso como el que yo hice. La solución que ellos dan es hacer un export de EE y luego desinstalar el software y todo lo demás, instalar SE y lo que necesites, y al final hacer un import.
    La razón, la cual tiene sentido, es que cuando migras de SE a EE no tienes las opciones “avanzadas” (como partiotioning) entonces por eso puedes hacer el proceso “transparentemente”; pero cuando quieres hacer el inverno puede ser posible que este utilizando opciones avanzadas de EE y cuando migres a SE no las vas a tener disponibles y por lo cual podrías tener muchos errores o tal vez hasta corrupción.

  3. #3 by Miguel on 7 April, 2008 - 15:16

    Hola, la realidad que no tengo usando las opciones avanzadas del EE, lo unico que probe y deje, que supongo quitandolo quedaria como una instancia de SE serian las vistas materializadas, la verdad no las uso mucho estaba aprendiendo como son y para que sirven pero en realidad puedo deshacerme de ellas; crees que sea posible realizarla.

  4. #4 by delfinonunez on 7 April, 2008 - 18:40

    Que tal Miguel,
    Primero lo primero, si no estas utilizando (y si dejas de utilizar vistas materializadas) pero no desintalas el software EE, sigues teniendo una instancia EE, solamente no estas utilizando las opciones “avanzadas”.

    Si eso es lo que quieres hacer, entonces Oracle recomienda hacer el export de la información, desinstalar el software EE, instalar el software SE y luego hacer el import de la informacion. De esa manera estarías teniendo solamente una instancia 100% SE.

    No hay manera (al menos sencilla, creo!) de quitar ciertas opciones de EE y dejarla como SE sin desinstalar el software. Solo recuerda que esto aplica cuando es la misma versión de Oracle (10g a 10g, 9i a 9i, etc), para movimientos entre versiones es otro proceso.

    Espero haber entendido y/o respondido a tu pregunta.

  5. #5 by Miguel on 7 April, 2008 - 21:36

    Hola, si me entediste, bueno casi, je, lo que pasa es que quiero quitarle primero las vistas materializadas, que es la unica caracteristica EE que estaria utilizando para que al momento de hacer el exp/imp tratar de que sean menos errores , sin embargo fijate que realice en un servidor de pruebas un ejercicio similar al que hiciste para ir de SE a EE y al parecer funciono, fue le siguiente:

    1 Instale SE y le hice un imp de la que quiero bajar de EE ahi salieron los errores de las vistas materializadas.

    2 ya en SE lo subi a EE con el procedimiento que hiciste

    3 Ya en EE volvi a hacer otro import completo

    4 REalice el mismo proceso para volver a instalar el SE, listener se ejecuto bien, la instancia se levanto, ahora solo estoy cargando el OEM para revisar algunos datos.

    Quiero creer que es posible realizar un procedimiento similar al que realizaste por el hecho de tener la instancia EE casi como un SE sin usarse las caracteristicas EE.

  6. #6 by delfinonunez on 8 April, 2008 - 14:43

    Si, puede ser posible que el proceso exista y se pueda hacer, pero si es un ambiente de producción debes de seguir el proceso que recomienda Oracle para no tener problemas de soporte.
    La verdad ahorita no tengo una computadora libre para hacer pruebas, si tienes un blog donde documentes el proceso puedes agregar un comentario aquí con el link para tener la información disponible. :)

  7. #7 by Miguel on 8 April, 2008 - 15:43

    Voy a realizar las pruebas ahora en otro servidor, claro con respectivos respaldos, tal vez sea posible realizarlo en parte el procedimiento que hiciste tu y aparte el que propone oracle, por que me queda claro que hay objetos que no encontrara la version standar, conforme avance ire poniendo aqui los pasos si no hay problema por ti, en estos momentos no tengo un blog propio.

  8. #8 by delfinonunez on 8 April, 2008 - 17:07

    Seguro, puedes ponerlo aquí, no hay problema con eso.
    Saludos

  9. #9 by Miguel on 8 April, 2008 - 20:41

    Gracias comenzare con mi larga tarea de migracion; solo una pregunta, en el caso de seguir tal como oracle lo recomienda, de hacer el exp/imp, se debe crear primero el esqueleto de la base de datos y despues realizar el import o se puede ejecutar el imp inmediatamente despues de instalar nuevamente la instancia SE.

  10. #10 by Miguel on 8 April, 2008 - 22:22

    Tendras idea de que imp/exp se realizara?? sera el full??? o solo del esquema que me interesa

  11. #11 by delfinonunez on 9 April, 2008 - 15:18

    No creo que necesites lo que tienes en sys y system, asi que yo creo que un export del usuario que deseas seria suficiente, a menos que vayas a exportar otros usuarios.

  12. #12 by Miguel on 9 April, 2008 - 17:22

    Ok perfecto, entonces ya estoy comenzando, ire poniendo el proceso aqui en tu blog, gracias estamos en contacto, deseame suerte.

  13. #13 by Miguel on 17 April, 2008 - 17:03

    Que tal Delfino, ya hice la primera migracion de EE a SE, en resumen realice el mismo procedimiento que propones, inicio la base datos, solo que al final, corri los scripts y realice el import, en breve pondre los pasos que hice en este downgrade, saludos.

  14. #14 by Francisco on 11 July, 2008 - 14:41

    Hola Delfino, tengo un problema y quisiera saber tus comentarios al respecto.. He instalado oracle 10.1.0.2 sobre un servidor AIX. Al instalarlo escogi la opcion personalizada, selecccione varios componentes (no enterprise) e instale el software. POsteriormente al instalar el parche 10.1.0.3 no tube problemas. Pero mi sorpresa es que ahora al conectarme con sqlplus la base de datos se muestra como oracle enterprise edition y yo nunca seleccione esa opcion. Es posible que la base sea standar edition y el parche la haya migrado a enterprise ?. b.) es posible que continue siendo standar edition y sea algo en el diccionario que muestra esta información. c:) como puede verificar de otra manera que version tengo instalada. Realmente es un problema que oracle empaquete en los mismo medios las dos versiones. Esto puede ser un problema muy grande de licenciamiento involuntario para los clientes.

  15. #15 by delfinonunez on 13 July, 2008 - 21:10

    Que tal Francisco,
    Para ser honesto nunca me ha tocado un problema similar. Regularmente las instalaciones que he hecho no son personalizadas e instalo “todo” el paquete. El problema que puedes tener cuando instalas la versión personalizada es que puedes llegar a seleccionar un componente de Enterprise y por lo tanto tu version va a ser Enterprise, pero como tu mencionas que los que seleccionaste no son Enterprise entonces es raro. No creo que la instalación del parche haya hecho un upgrade a enterprise, pero como te digo yo no he hecho instalaciones “personalizadas” y pues todo puede pasar.
    Una manera que puedes ver que version tienes instalada es solamente haciendo query a la vista v$version, ahi te va a mostrar que version estas usando de los componentes.

    Esta raro, es la primer vez que leo algo similar, a lo mejor si puedes reproducir el problema les podrias enviar un email a oracle en caso que sea un “bug”.

  16. #16 by Luis on 2 July, 2009 - 22:37

    Hola atodos…
    estoy empesando a trabajar con Oracle 10g, necesito levantar un repaldo full de una DB en windows server2003, se intento con el Imp y al parecer se ejecuto muy bien los procesos, ahora el detalle esque no sabemos donde quedo la bolita!!…mas bien donde quedo la Base, no se donde realizo… si me pudieran decir donde se almacena por defecto se los agradesco..

  17. #17 by delfinonunez on 3 July, 2009 - 15:59

    Tienes el Log del import (IMP), ahi debe decir a que usuario se importo.

    Si solo abriste una ventana de comandos (CMD) entonces trata de ver cual es el valor de la variable %ORACLE_SID% asi:
    c:\echo %ORACLE_SID%

    Y asi vas a saber en que instancia/base de datos hiciste el import.

    Tienes muchas bases de datos en ese servidor?

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: