Backup de oracle
No tengo mucha experiencia en Oracle, y tengo un problema. Te explico: hace unos días instalamos oracle 10g, y ahora tenemos que recuperar un base de datos de oracle que no pertenece a nuestra empresa. Tengo los ficheros de backup realizados con oracle 10g de la empresa cliente, pero no se como hacer que mi oracle los recupere.
1 Respuesta
Respuesta de tinodba
1
1
tinodba, Trabajo como DBA Oracle desde 1999 en una importante empresa
¿Cómo son los ficheros de backup que tienes? ¿Es un DMP exportado, son los propios datafiles o es un backup hecho con el RMAN o alguna herramienta análoga?
Dependiendo este dato te cuento cómo se recuperan los datos.
Dependiendo este dato te cuento cómo se recuperan los datos.
OK.
Los ficheros DMP son exportaciones de datos y necesitas crear una BD para poder importar esos datos. Dependiendo del tipo de exportación (completa, por usuario o por tablas), de la versión con la que se ha exportado, etc. el proceso de importación será más sencillo o no.
¿Qué nombres tienen los ficheros sin extensión? Lo más normal es que sean fichero de log de las 2 exportaciones. Si es así, serán ficheros de texto plano con el contenido de los DMP. Ábrelos, échales un vistazo y luego me cuentas.
Más datos:
- ¿Con qué versión del export se exportó?
- ¿Sobre qué versión de BD se quiere importar?
- ¿Qué tipo de importación necesitáis: BD completa o solo uno o varios schemas? Si es esto último es mucho más sencillo, y normalmente es lo que se necesita.
Yo ahora tengo una reunión.
Los ficheros DMP son exportaciones de datos y necesitas crear una BD para poder importar esos datos. Dependiendo del tipo de exportación (completa, por usuario o por tablas), de la versión con la que se ha exportado, etc. el proceso de importación será más sencillo o no.
¿Qué nombres tienen los ficheros sin extensión? Lo más normal es que sean fichero de log de las 2 exportaciones. Si es así, serán ficheros de texto plano con el contenido de los DMP. Ábrelos, échales un vistazo y luego me cuentas.
Más datos:
- ¿Con qué versión del export se exportó?
- ¿Sobre qué versión de BD se quiere importar?
- ¿Qué tipo de importación necesitáis: BD completa o solo uno o varios schemas? Si es esto último es mucho más sencillo, y normalmente es lo que se necesita.
Yo ahora tengo una reunión.
Buenas,
Te cuento:
Los ficheros tienen los siguientes nombres:
-BK_FP02_569214902
-BK_FP02_569214982
-BK_ORCL_569218502
-BK_ORCL_569218592
El primero y el tercero ocupan bastante.
Estos no los puedo abrir, solo salen caracteres ascii.
Los ficheros que de exportacion son:
- exp_fp02_1.dmp
- exp_orcl_1.dmp
Tengo 3 archivos .log:
- export.log
- export_pf02.log
- export_orcl.log
En ellos aparece la exportación de todos los elementos, y al final dice que la exportación se ha realizado correctamente pero con advertencias(que las desconozco).
La queremos meter en oracle 10g. Y fue exportada en Oracle 9i Enterprise Edition 9.0.1.1.1
Además necesitamos que sea completa, un jaleo vamos...
Gracias por ayudarme :)
Te cuento:
Los ficheros tienen los siguientes nombres:
-BK_FP02_569214902
-BK_FP02_569214982
-BK_ORCL_569218502
-BK_ORCL_569218592
El primero y el tercero ocupan bastante.
Estos no los puedo abrir, solo salen caracteres ascii.
Los ficheros que de exportacion son:
- exp_fp02_1.dmp
- exp_orcl_1.dmp
Tengo 3 archivos .log:
- export.log
- export_pf02.log
- export_orcl.log
En ellos aparece la exportación de todos los elementos, y al final dice que la exportación se ha realizado correctamente pero con advertencias(que las desconozco).
La queremos meter en oracle 10g. Y fue exportada en Oracle 9i Enterprise Edition 9.0.1.1.1
Además necesitamos que sea completa, un jaleo vamos...
Gracias por ayudarme :)
Hola
He realizado algunos avances, ya se desde donde se importan los archivos, pero me dan los siguientes errores ORA-20204 User does not exist y ORA-06512 en SYSMAN. MGMT_USER. ¿A qué puede deberse? :)
He realizado algunos avances, ya se desde donde se importan los archivos, pero me dan los siguientes errores ORA-20204 User does not exist y ORA-06512 en SYSMAN. MGMT_USER. ¿A qué puede deberse? :)
Y perdón por el retraso (esto de estar a 5 bandas es muy complicado :( Y para colmo ayer dejó de funcionar TodoExpertos...
Vamos por partes (primero tu respuesta del 22/09/05):
1) Los ficheros cuyo nombre tiene la cadena "ORCL" almacena, aunque no siempre, la BD que crea por defecto Oracle. Es una que tiene el usuario "SCOTT" y tablas de ejemplo ("emp", etc) según el tipo de BD elegido (mira su .log para comprobarlo. ¿Existe ese usuario y/o la tabla?)
Si es así, ¿De verdad queréis importar la BD de ejemplo? Es posible que, por error u omisión, se hayan creado
más usuarios y/o tablas sobre esa BD que son las que realmente queréis importar. Si no es así, creo que puedes "pasar" de recuperar datos de los ficheros *ORCL*.
No se debería usar la BD "ORCL" para trabajar oficialmente. Quiero decir, que para crear nuestros usuarios, tablas, etc. conviene crear una BD diferente a la de por defecto, con nuestro propio SID.
2) Para importar sobre 10g debes utilizar el comando "imp" de 10g. De esta manera, al importar estarás "migrando" la BD de 9.0 a 10g. Supongo que será lo que queréis.
3) No conozco bien las nuevas características del import de 10g.; creo que ella misma crea a los usuarios si no existen. Yo soy de la antigua escuela y prefiero hacer las cosas por mí. De esta manera, tendrás que hacer lo siguiente:
- Crear una BD nueva sobre 10g, con el nombre que quieras y en el disco que quieras. Crea los tablespaces mínimos por defecto (para el SYSTEM, UNDO, TEMP, etc.) El resto de los tablespaces los crearemos
después.
- Precrear todos los tablespaces que se usaban en la BD que quieres importar. Para saber cuáles son, debes
ejecutar la siguiente línea de comando para cada uno de los .dmp que quieras importar:
$> imp system/manager full=y log=impsql.txt show=y file=TU_FICHERO.dmp
Esto generará un fichero de texto llamado "impsql.txt". Busca las cadenas que tengan " TABLESPACE " (ojo con los espacios). Te saldrán muchas líneas similares a éstas:
"pool default) tablespace "tbs_atp" logging"
"REELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TBS_ATP_IDX""
En este caso, detectamos 2 tablespaces: TBS_ATP y TBS_ATP_IDX
Una vez que sabemos los nombres, debemos crearlos en nuestra nueva BD (con la sintaxis de 10g), con el
mismo nombre y ubicando los datafiles en el disco que tengamos al efecto, no olvidando ponerlos que se
autoextiendan porque no sabemos cuánto ocupan.
4) Ahora ya tenemos los tablespaces... pero nos falta recrear los usuarios. Para saber los usuarios debes mirar
el .log asociado. Mira las líneas donde avisa que va a exportar un schema, en inglés:
. About to export USUARIO_BD's tables
En el ejemplo, debemos crear el usuario llamado "USUARIO_BD" (con la sintaxis de 10g), y ponerle un
tablespace por defecto de los que hemos creado en el paso anterior. Esto lo hacemos para todos los usuarios, excepto para SYS y SYSTEM. En realidad solo deberíamos crear los usuarios que no sean de Oracle.
5) Ya tenemos una BD, los tablespaces y los usuarios. Ahora estamos preparados para realizar la importación.
$> imp system/manager full=y log=IMPORT_TU_FICHERO.log file=TU_FICHERO.dmp ignore=y
commit=y
Lo de arriba es un ejemplo válido, pero puedes cambiar los parámetros para mejorar la importación y/o el tiempo de importación.
6) Con todo esto ya deberíamos tener nuestra BD 10g con los datos de la otra BD. Aunque es posible que haya dado errores la importación. Si quieres envíame los errores y veo si son "normales".
-----------------------
Y sobre tu mensaje del día 27/09/2005:
El usuario "sysman" es el usuario propietario del repositorio de la BD. Es posible (no conozco 10g... aún :) que haya que "publicar" que existe un nuevo usuario en la BD. O, a lo mejor, valdría con hacer el import como te he comentado más arriba: creando los usuarios antes de importar.
Prueba y me cuentas.
Vamos por partes (primero tu respuesta del 22/09/05):
1) Los ficheros cuyo nombre tiene la cadena "ORCL" almacena, aunque no siempre, la BD que crea por defecto Oracle. Es una que tiene el usuario "SCOTT" y tablas de ejemplo ("emp", etc) según el tipo de BD elegido (mira su .log para comprobarlo. ¿Existe ese usuario y/o la tabla?)
Si es así, ¿De verdad queréis importar la BD de ejemplo? Es posible que, por error u omisión, se hayan creado
más usuarios y/o tablas sobre esa BD que son las que realmente queréis importar. Si no es así, creo que puedes "pasar" de recuperar datos de los ficheros *ORCL*.
No se debería usar la BD "ORCL" para trabajar oficialmente. Quiero decir, que para crear nuestros usuarios, tablas, etc. conviene crear una BD diferente a la de por defecto, con nuestro propio SID.
2) Para importar sobre 10g debes utilizar el comando "imp" de 10g. De esta manera, al importar estarás "migrando" la BD de 9.0 a 10g. Supongo que será lo que queréis.
3) No conozco bien las nuevas características del import de 10g.; creo que ella misma crea a los usuarios si no existen. Yo soy de la antigua escuela y prefiero hacer las cosas por mí. De esta manera, tendrás que hacer lo siguiente:
- Crear una BD nueva sobre 10g, con el nombre que quieras y en el disco que quieras. Crea los tablespaces mínimos por defecto (para el SYSTEM, UNDO, TEMP, etc.) El resto de los tablespaces los crearemos
después.
- Precrear todos los tablespaces que se usaban en la BD que quieres importar. Para saber cuáles son, debes
ejecutar la siguiente línea de comando para cada uno de los .dmp que quieras importar:
$> imp system/manager full=y log=impsql.txt show=y file=TU_FICHERO.dmp
Esto generará un fichero de texto llamado "impsql.txt". Busca las cadenas que tengan " TABLESPACE " (ojo con los espacios). Te saldrán muchas líneas similares a éstas:
"pool default) tablespace "tbs_atp" logging"
"REELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TBS_ATP_IDX""
En este caso, detectamos 2 tablespaces: TBS_ATP y TBS_ATP_IDX
Una vez que sabemos los nombres, debemos crearlos en nuestra nueva BD (con la sintaxis de 10g), con el
mismo nombre y ubicando los datafiles en el disco que tengamos al efecto, no olvidando ponerlos que se
autoextiendan porque no sabemos cuánto ocupan.
4) Ahora ya tenemos los tablespaces... pero nos falta recrear los usuarios. Para saber los usuarios debes mirar
el .log asociado. Mira las líneas donde avisa que va a exportar un schema, en inglés:
. About to export USUARIO_BD's tables
En el ejemplo, debemos crear el usuario llamado "USUARIO_BD" (con la sintaxis de 10g), y ponerle un
tablespace por defecto de los que hemos creado en el paso anterior. Esto lo hacemos para todos los usuarios, excepto para SYS y SYSTEM. En realidad solo deberíamos crear los usuarios que no sean de Oracle.
5) Ya tenemos una BD, los tablespaces y los usuarios. Ahora estamos preparados para realizar la importación.
$> imp system/manager full=y log=IMPORT_TU_FICHERO.log file=TU_FICHERO.dmp ignore=y
commit=y
Lo de arriba es un ejemplo válido, pero puedes cambiar los parámetros para mejorar la importación y/o el tiempo de importación.
6) Con todo esto ya deberíamos tener nuestra BD 10g con los datos de la otra BD. Aunque es posible que haya dado errores la importación. Si quieres envíame los errores y veo si son "normales".
-----------------------
Y sobre tu mensaje del día 27/09/2005:
El usuario "sysman" es el usuario propietario del repositorio de la BD. Es posible (no conozco 10g... aún :) que haya que "publicar" que existe un nuevo usuario en la BD. O, a lo mejor, valdría con hacer el import como te he comentado más arriba: creando los usuarios antes de importar.
Prueba y me cuentas.
- Compartir respuesta
- Anónimo
ahora mismo