jueves, 17 de junio de 2010

Como pasar de una versión superior de base de datos Oracle a una inferior.

En varias ocasiones me he encontrado en los foros de discusión, amigos y amigas, que preguntan como cargar una base de datos desde una versión superior a una inferior.

Normalmente, no es tan común hacer "rollback" a nivel de releases de software de base de datos, pero en ocasiones especiales, se hace necesario realizar el ejercicio.
Es suficiente con generar un export con la utilidad "exp" en la base de datos de origen y cargarlo en la base de datos destino.? La respuesta es no. Hasta la versión 10gR2, era posible tener como base de datos origen el release 10g y tener como base de datos destino la 9i.  De igual forma, podríamos pasar de una base de datos de origen 9i a 8i y 8x, con algunas limitaciones.  Ahora bien, de ahora en adelante, como lo pueden ver en la matrix publicada en My Oracle Support, si tenemos como base de datos origen la versión 11g, no esta soportado hacer el "down", a una base de datos de una versión inferior a 9iR1.  Pero si tienes 11gR1 o 11gR2 y deseas importar en una versión Oracle 9iR2 ( algunas limitaciones- ver nota al final ) ó Oracle 10gR1 y Oracle 10gR2, si lo puedes hacer.

Si necesitas hacer el ejercicio de importar desde una versión superior hacia una inferior, debes realizar el exportación de la data con la utilidad "exp", de la versión de la base de datos de destino, conectándote a la base de datos origen, tomando en cuenta estos valores para los siguientes parámetros, como recomendación de mi parte, para evitar problemas de compatibilidad:
  • direct=no
  • statistics=no  ( para 11g ó10g de origen con destino en 9i )
Mayor información la pueden encontrar en la nota del sitio de soporte de Oracle My Oracle Support #132904.1


Para Oracle 9iR2:
Applies to:
Oracle Server - Enterprise Edition - Version: 9.2.0.1 to 9.2.0.8 - Release: 9.2 to 9.2
Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.2.0.1 [Release: 11.1 to 11.2]
Information in this document applies to any platform.

Symptoms

You need to export data from 11g and import into 9iR2. For this reason, the exp utility version 9iR2 is used to extract data from 11g. There are two aspects of this problem:

1. On some Unix platforms, the exp utility either returns no errors or core dumps.
2. On Windows platforms, exp core dumps (Dr.Watson)

Both created dumps are corrupt, the imp utility crashes immediately after the export dump header is read.

Cause

Exp utility version 9iR2 internally uses the dictionary view EXU9DEFPSWITCHES to get information about some parameters like PLSQL_COMPILER_FLAGS and NLS_LENGTH_SEMANTICS. The parameter PLSQL_COMPILER_FLAGS doesn't exist in 11g anylonger and so the view EXU9DEFPSWITCHES returns unhandled 0 rows.

Solution

1. Connect to database 11g as SYSDBA with SQL*Plus
2. Change the definition of view EXU9DEFPSWITCHES from:

CREATE OR REPLACE VIEW exu9defpswitches (
compflgs, nlslensem ) AS
SELECT a.value, b.value
FROM sys.v$parameter a, sys.v$parameter b
WHERE a.name = 'plsql_compiler_flags' AND
b.name = 'nls_length_semantics'

to:

CREATE OR REPLACE VIEW exu9defpswitches (
compflgs, nlslensem ) AS
SELECT a.value, b.value
FROM sys.v$parameter a, sys.v$parameter b
WHERE a.name = 'plsql_code_type' AND
b.name = 'nls_length_semantics'

(see new parameter PLSQL_CODE_TYPE)

3. Re-start exp version 9iR2 to extract from 11g

4. Import the new dump using imp version 9iR2.

2 comentarios:

  1. HOLA!
    Necesito migar una Base de datos 11g a 10g, elarchivo DMP se genero con un "expdp" es posible iportarlo a 10g ?

    ResponderEliminar
  2. Hola Claudis

    depronto este link te puede servir

    http://www.orasite.com/backup-de-base-de-datos/export-oracle-10g/11g

    ResponderEliminar

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar