Export e Import en Oracle

A continuación describiremos la forma de realizar un Export/Import en nuestro Oracle, probado en la versión 9i y a funcionado sin problemas ninguna, ante todo tendremos que saber que es esto de Export/Import

¿Que es un export/import en Oracle?

Export/Import es una utilidad de Oracle para realizar backups lógicos de Oracle ( y luego poderlos restaurar ). Esto significa que copian el contenido de la BD pero sin almacenar la posición física de los datos. Para realizar estas operaciones la base de datos tiene que estar abierta.

Para crear el fichero de backup se utiliza la utilidad export y para importar el contenido o recuperar la base de datos se realiza import.

Se realiza en los siguientes casos:

  1. Para realizar backups de bases de datos
  2. Para corregir “Row Migration & Row Chaining”
  3. Detectar alguna corrupción en la base de datos, puesto que al hacer el export se lee toda la bd.
  4. Para “migrar” una base de datos a otro servidor

EXPORT

Comenzemos a ver como se realizaria un export para nuestra base de datos.

- Podemos realizar una copia completa de la base de datos mediante la siguiente orden

$exp file=/oracle9/export.dmp full=yes log=/oracle9/log/export.log buffer=1000000

file=export.dmp > Nombre y ubicación del archivo del export ( el usuario oracle tiene que tener permisos para escribir ahi. La extensión de este archivo es dmp.

full=yes –> Con esto indicamos que el export es completo, todos los esquemas de la base de datos y sus datos permisos, privilegios ..

log=export.log –> fichero para tener el log del export, el usuario oracle también tiene que tener permisos en ese directorio para escribir.

buffer=1000000 –> reservamos buffer para la operación.

- Copiando las tablas especificas de un usuario

$exp scott/tiger file=scott.dmp tables=(emp,dept) buffer=1000000

Realizando el export de las tablas que tiene el usuario scott

- Copiando tablas de un usuario con una condición especifica

$exp scott/tiger file=c:\empleados.dmp tables=emp query=\”where deptno=10\”

Con query espeficificamos una condición para realizar el export de esa tabla

IMPORT

- Importar todo el archivo exportado

$imp system/manager file=c:\export.dmp full=yes ignore=yes log=c:\log\import_log.log buffer=1000000

Importamos con el usuario system que tiene permisos para importar el archivo orasitefull.dmp dejando un log de dicha importación en import_log.log reservando un buffer de 100000

- Importar una tabla de un usuario concreto

$imp scott/tiger file=empleados.dmp fromuser=scott touser=scott tables=dept

Importamos del archivo orasitempleados.dmp sólo del usuario scott de ese archivo al esquema del usuario scott la tabla departamento

Existe la opcion de realizar import y export interactivo, esto es que en la consola introducimos el comando imp (para import) o exp (para export) y nos irá pidiendo parámetros para la acción a realizar, usuarios, tablas, permisos……

About these ads

48 comentarios »

  1. Oscar Said:

    Hola que tal…
    Antes de nada …muchas gracias por la info…
    Te queria hacer una pregunta al respecto si no te importa.
    Tengo planeado migrar una base de datos de Oracle de un servidor windows 2000 con un 9i a un servidor windows 2003 con una 10g.
    Tengo hecho un exd full y pretendia llevarlo al nuevo servidor y realizar un imp full.
    Me da que esto no me funcionara si no me creo objetos primero en el nuevo servidor?

    Salu2

  2. ramkiller Said:

    Hola Oscar, yo nunca he probado exportar de una version a otra, pero no creo que haya muchos problemas de una 9i a una 10g, te tienes que asegurar que en las dos base de datos hayan los mismos tablespaces y los mismos usuarios y entoces a empezar el import y no creo que te de error ninguno

    Saludos

  3. rEYES Said:

    Hola,
    No hay ninguna opción para que el exp te meta en el script también el create user y el create tablespace exactos a la BD de origen?
    Gracias
    Reyes.

  4. ramkiller Said:

    Reyes perdona la tardanza de la respuesta, que yo sepa y que mis conocimientos lleguen, exp e imp son comandos que tu das en la consola del sistema, nunca llegas a meterlos mediante sql, mientras que el script de create user lo tienes que poner mediante la consola de sql, asi que no estoy seguro de que puedas realizar dicho script

    un saludo

  5. Rous Said:

    Ya tengo una Base de datos de prueba , pero necesito hacer un full imp , le pregunto . Que debo hacer para volver hacer un full imp.

    Gracias por la ayuda

  6. ramkiller Said:

    Rous no he entendido muy bien tu pregunta, que quieres volver a realizar un full imp sobre una bbdd a la que ya se lo has realizado???

  7. luis Said:

    Hola.

    Soy nuevo trabajando con Export Import y me gustaria saber como
    puedo recuperar un archivo (un programa), o un scritp no una tabla desde un export.

    Gracias.

  8. ramkiller Said:

    Luis que has perdido datos de una tabla y te gustaría recuperarlo, si es así deberías de realizar un import a la base de datos, claro eso es si anteriormente realizaste la copia de seguridad de export sino es así es imposible recuperarlo

  9. Antares Said:

    Hol, gracias por la guía una pregunta… ¿cómo se hace el import si el export se hizo con un un usuario con privilegio de sysdba? por que sy coloco imp system/manager file=…. me sale error por que necesito el rol de sysdba.

  10. MIGUEL Said:

    saludos

    quiero hacer un IMPORT de una bd pero quiero unicamente importar la estructura de la base (tablas) sin datos… como lohago?

    o lo que es lo mismo como hago un EXPORT pero unicamente de la estructura , sin datos de las tablas?

    gracias

  11. ramkiller Said:

    Hola antares si el script de tu export era una cosa asi:
    exp ‘sys/passsys@bdd as sysdba’ file=destino log=destinolog ….. y lo que sigue, el import pues igual pero en vez de exp le pones imp, seria una cosa asi
    imp ‘sys/passsys@bd as sysdba’ file=origen log=destinolog
    Otra forma de realizar un import al igual que el export es introducir en la línea de comando imp, pulsar intro y esperar a que te vaya pidiendo la utilidad los parámetros que requiere.
    De esta forma te pedirá el usuario, constraseña, el archivo para importar, qué quieres importar del archivo … etc.
    Espero haber aclarado tus dudas, sino no dudes en comentar lo que sea por aqui

    Un saludo

  12. ramkiller Said:

    Hola Miguel

    Puedes probar como le he comentado a antares, te vas a la línea de comandos y escribes exp y pulsas intro, a partir de ahi te ira preguntando los parámetros para el export desado, de esta manera te pedirá, el usuario, constraseña, si quieres hacer copia sólo de la estructura, con datos, sin datos, nombre del archivo … etc.

    Un saludo

  13. Jair Monterrosa Said:

    Gracias amigo me fue muy util.

  14. Christian Said:

    hola muy interesante tu ayuda, te detallo mi caso . . tengo dos servidores el servidor “A” que esta en red hat y el servidor “B” que esta en WinXP, en los dos tengo instalados el ORACLE 10g, en la base de datos del servidor A esta realizando constantes cambios y pruebas, mientras que la B ya esta en produccion, la pregunta del millon es: ¿ puedo exportar una tabla nueva que se creo de la base de datos del servidor A, e importarlo en la base de datos del servidor B?..¿no afectarian las llaves e indices con relacion a las demas tablas? de ser posible esta importacion y exportacion en el mismo entorno si se aumentaria un campo en la tabla de la base de datos del servidor A que es lo ¿que podria hacer?

  15. Victor Said:

    HOLA RAMKILLER

    Necesito que me aclares una duda respecto a oracle 10g, hay alguna forma de poder generar el script que contenga las lineas de SQL*plus de toda mi BD (Esquema, tablas, constarains, etc..) que he creado. O dime cual es la sentencia en el EXP, para decirle en linea de comando que tablas deeseo exportar, por ejemplo CARRERA, MATERIA, HORARIO; o de otra forma.

  16. ramkiller Said:

    hola christian y perdona por el gran retraso, pero en el curro tenemos capado el wordpress y en casa no he cogido apenas el ordenador, y en tu caso si, la exportación afecta a las llaves, pero como leo una tabla nueva, o sea no está en la base de datos de B, si es ese el caso solamente debes de crear la tabla en el esquema correcto y realizar la importación, pero te recomiendo que consultes en otros sitios para tu seguridad ya que todavia soy medio novato en Oracle.

    Un saludo

  17. ramkiller Said:

    Hola Victor y perdon por el retraso, ya se lo he comentado a christian y según he entendido en tu pregunta, quieres exportar específicas tablas no??? para ello realiza lo siguiente

    $exp scott/tiger file=orasitescott.dmp tables=(emp,dept) buffer=1000000

    donde tables = aquí pondrias las tablas que quieres exportar

    Un saludo

  18. ramkiller Said:

    Hola Victor y perdon por el retraso, ya se lo he comentado a christian y según he entendido en tu pregunta, quieres exportar específicas tablas no??? para ello realiza lo siguiente

    $exp scott/tiger file=orasitescott.dmp tables=(emp,dept) buffer=1000000

    donde tables = aquí pondrias las tablas que quieres exportar

    Un saludo

  19. pato Said:

    Hola ramkiller, tengo un problema. Realice un exp full en modo interactivo de mi base de datos y me salio ok. Ahora quiero hacer exp de la misma bd pero solo de algunas tablas, le doy el comando exp en el cmd pero me sale un mensaje de que el comando no es reconocido interna ni externamente como ejecutable. Lo raro es q anteriormente si me funciono pero la segunda vez ni tercera, cuarta, quinta (a esto me refiero q probe varias veces jeje =P) y aun no me funciona. El S.O. es Windows 2003 server.
    Gracias de antemano =)

  20. HGMAYA Said:

    Hola

    Como le hago para pasar el contenido de una tabla que apunta al mismo esquema pero que esta en diferente servidor?
    ejemplo

    Pasar el contenido de esta tabla
    conexion : servidor01
    esquema : basedatos
    tabla : empleados

    conexion : servidor02
    esquema : basedatos
    tabla : empleados

    Porfa ayudarme gracias

  21. ramkiller Said:

    Hola pato, por lo que me comentas puedes que hayas tocado en las variables de entorno del sistema y trastocase en la variable path, porque de otro motivo no se me pasa la cabeza para que el comando exp no te lo reconozca la máquina, mira la variable de entorno path y compárala con otro equipo que puede que se haya eliminado alguna de oracle.

    un saludo

  22. ramkiller Said:

    Hola HGMAYA.

    Realizar este import es sencillo, basta con llevarte el dmp en la máquina a la que va a recibir el import, para así vaya este más rápido, y lo típico antes de realizar un import, aqui en su caso borrarias el contenido de la tabla de la base de datos que va a recibir la importación, para que no te de conflictos, vamos los pasos típicos a realizar pero solo con una tabla.

    Empezemos con nuestro import de una sola tabla sería una cosa así
    $imp ‘sys/pass@bdd as sysdba’ file=archivo.dmp fromuser=scott touser=scott tables=dept

    espero haberte servido de ayuda.

    un saludo

  23. Carla Said:

    hola :)
    realizo exportaciones en bd oracle 10g con SO server 2003 , pero esta tarea me resulta tediosa asi que lo hago con archivos bat (este es mi comando):

    exp system/oracle file=c:\backup\EQU_05_11_2008.dmp log=c:\backup\EQU_05_11_2008.log recordlength=4096 buffer=300000 owner=CTRLEQU

    pero lo que me falta es hacer el cambio de fecha automatico, no se si m explico, pero “EQU_05_11_2008″ esta fecha yo la digito; como puedo hacer para que realice backup con la fecha actual sin tener que digitarla.

    gracias

  24. ramkiller Said:

    Hola Carla.

    Para que tus exportaciones lleven la fecha en la que se realizaron te voy a poner un ejemplo de .bat que yo utilizo que me saca el di en el que se realizó ya que guardo las copias por meses, aquí te lo pongo y espero que te sirva

    for /f “tokens=1-3 delims=/ ” %%a in (‘DATE /T’) do set Date=%%a

    %ORACLE_HOME%bin\exp ‘sys/pass@bdd as sysdba’ file=(%DIR_DATOS%nombre-%Date%.dmp) full=y STATISTICS = NONE consistent=y log=%DIR_DATOS%nombre-%Date%.log buffer=200000

    y para que te ponga la fecha entera nunca lo he probado pero supongo que será algo así

    for /f “tokens=1-3 delims=/ ” %%a in (‘DATE /T’) do set Date=%%a
    for /f “tokens=2-4 delims=/ ” %%a in (‘DATE /T’) do set Mes=%%a
    for /f “tokens=3-5 delims=/ ” %%a in (‘DATE /T’) do set Anyo=%%a

    %ORACLE_HOME%bin\exp usuario/pass@bdd file=%DIR_DATOS%\ejemplo%Date%%Mes%%Anyo%.dmp STATISTICS=NONE consistent=y log=%DIR_LOGS%\ejemplo%Date%%Mes%%Anyo%.log

    Bueno espero que te sirva de ayuda.

    Un saludo.

  25. Merthin Said:

    Hola.
    Mi problema es el siguiente: Tengo los datos en un oracle 10.2 y los quiero pasar a un oracle 9.2. Después de hacer el export en la versión 10 y tratar de importarlo en la 9, obtengo un “IMP-00010: not a valid export file, header failed verification”, que imagino que será por la diferencia de versiones. He intentado localizar alguna opción en el exp que permita exportar para versiones anteriores, pero no la encuentro.
    ¿Se te ocurre algo?
    Gracias.

    • ramkiller Said:

      Hola Merthin,

      La verdad que no he visto ningun caso en lo que se quiera pasar la base de datos Oracle 10g a una Oracle 9i en el casi año de experiencia que llevo con esto.
      Mi recomendación de lo que he leido por internet, es que realizes el export desde el servidor de la 9i y luego ya realizas el import, si te vuelve a dar problemas, no dudes en consultarme lo que sea, ya que es la primera vez que me enfrento a esto.

      Un saludo

    • javierb Said:

      No es posible. Lo lei en el manual. solo va hacia delante.

      • C#ristian Said:

        Claro que es posible. Instala el cliente de oracle 9i en otra PC dentro de la misma red (con el tipo Administración en la instalación del cliente), después configuras el tnsnames para conectarte al oracle 10 remotamente y desde el mismo cliente podes generar un export como si estuvieras en el mismo server, te genera el archivo en la máquina cliente y puede importarse en un Oracle 9i y 10g.

        Espero haber ayudado. Yo también soy algo novato pero para eso están todos los recursos gratuitos en internet.

  26. Gabriela Said:

    Hola, antes que nada gracias por tus tips me han servido mucho y tengo una duda haber si me pueden ayudar tengo una base de datos en Oracle 10i y necesito bajarla de versión a la 9i, no se sipodrias decir como hacerlo.

    De antemano muchas gracias.

    • ramkiller Said:

      Hola Gabriela, perdona por la tardanza pero no he podido conectarme en un buen tiempo a mi blog ni a mi correo, puedes intentar lo siguiente:

      1-Configura el Tnsnames de la 9i para que pueda ver la base 10g.
      2-Usando el EXP de la 9i conectate a la 10g y realiza el export.
      3- Importa en la 9i.

      Espero que te sirva, ya que yo nunca he bajado la versión de mi base de datos

  27. Sergio Said:

    hola a todos,

    estoy intentando hacer un export pero me sale el siguiente error : “Export prog not found: ‘ORACLE_HOME/bin/exp*'”
    He mirado los registros y no encuentro nada. No he realizado ningún cambio en los registros. sí que he tirado abajo los servicios y los he vuelto a levantar. quizás no haya levantado uno de ellos y por eso no encuentre el ejecutable.

    espero que le suene a alguien

    muchas gracias

  28. Alfonso Said:

    Hola:
    Tengo un archivo .dmp de un oracle 10g versión 2, quiero realizar el import a un 10g versión 1. y obtengo un “IMP-00010: not a valid export file, header failed verification”, que imagino que será por la diferencia de versiones. La solucion sería realizar el export con la version menor????

    • ramkiller Said:

      Buenas, el problema puede ser causado como tu dices por las versiones de oracle, prueba a realizar el import desde la version menor de oracle, si te da otro fallo no dudes en exponerlo por aquí que me encanta investigar fallos de Oracle.
      Un saluod.

  29. checo Said:

    hola, les escribo, ya que tengo una duda con oracle 10g Express edition, he vendido mi maquina pero quiero respaldar toda la informacion de mi base de datos en una nueva maquina que compre, como podria hacerle, ya que la informacion es muchisima y es urgente que la tenga ya funcionando en la nueva maquina, gracias

  30. Carlos Said:

    Saludos,

    Antes que nada gracias por toda la información que aqui es desplegada. Mi inquietud es la siguiente: Ya realicé la importación del archivo .dmp, la pregunta ahora es; como lo abro? es decir, como accedo a esa base de datos. EL archivo que importé es un a base de datos que me pasaron para realizar unas pruebas. Gracias de antemano.

  31. PEPA Said:

    Yo tengo una duda, yo solo quiero exportar la estructura de las tablas no sus datos, alguien me podria ayudar cual es la forma de realizarlo,

    Gracias,

  32. joshe Said:

    Hola a todos me podria ayudar con lo siguiente ya que soy nuevo en el mundo ORACLE, actualmente tengo la ORACLE 11g R1 sobre 2 Linux Enterprise Oracle V, en uno de ellos tengo mi BD de produccion y en el otro quiero pasarla misma a este pero no quiro comenter ningun error me podrian ayudar muchas gracias de antemano.

    • ramkiller Said:

      Buenas perdona por la tardanza en la respuesta pero apenas tengo tiempo de leer el correo.

      Pues en la otra BBDD tienes que tener los mismos usuarios y tablespace, sino a la hora de importarlo comenzarán a salir errores y no terminará de crearse todos los objetos.

      Una vez que la estructura de la BBDD sean identicas, realiza el export completo de la BBDD

      exp ‘sys/pass_sys@bbdd as sysdba’ file=ruta_dmp/export.dmp full=yes log=ruta_log/export.log buffer=1000000

      a la hora de realizar el import, lo tienes que realizar con el sysdba de la siguiente manera

      imp ‘sys/pass_sys@bbdd as sysdba’ file=ruta_dmp/export.dmp full=yes ignore=yes log=ruta_log/import_log.log buffer=1000000

  33. Iker Said:

    Hola,
    Me gustaria saber como importar los datos de un usuario1 con un tablespace propio a otro usuario2 con otro tablespace. Pero las estructuras de las tablas y los datos del talbespace usuario1 en el tablespace usuario2

    • ramkiller Said:

      Ok pues para comenzar realizas el export de las tablas con el usuario1, cuando este haya terminado a la hora de realizar el import, introduce la siguiente sentencia:

      imp usuario2/passusuario2@bbdd file=donde este el .dmp log= ….log fromuser=usuario1 touser=usuario2 ignore=y

      Espero que te sirva

      Un saludo

  34. GermanJO Said:

    Hola,

    tengo dos preguntas por favor

    1. trabajo con oracle 9 en AIX y tengo un problema en los respaldos, el archivo dmp llega al giga y ya no graba mas y el comando exp sale no satisfactorio. antes cuando no llegaban al GIGA sacaba sin ningun problema.
    2. Debido a ese error estoy tratando de que mi archivo exp no se grabe en mi servidor sino llevarle a otro equipo pero trato de direccionarlo asi \172.16.49.43\transfer\archivo.dmp
    pero siempre me sale error EXP-00002, o a ratos me graba en el mismo servidor oracle con el nombre de toda la ruta, la ruta del archivo le he probado de todas las maneras y nada, necesito que ayuden para poder sacar el respaldo fuera de AIX.

    por su ayuda muchas gracias

    mi correo es : germjime@hotmail.com

    saludos

    German
    Ecuador

  35. ariel Said:

    esta bueno esta bueno eso de importar, soy nuevo con oracle estoy usando oracle express 10g y el problema que tengo es que tengo las tablas creadas en mi compu y queria saber si con esos comando puedo llevar esas tablas o el esquema que cree a la cualquier compu que tenga, estoy programando en java y cuando voy a usar la compu de la facu tengo que crear de nuevo las tablas para trabajar y me lleva su tiempo, agradeceria su respuesta , chau

    • ramkiller Said:

      Buenas, puedes llevarlo sin problemas, en la BBDD que vayas a hacer la importación asegúrate que existe el esquema y el tablespace, si es así no debes de tener problemas, perdón por la tardanza en responder pero estoy hasta arriba en el trabajo y apenas tengo tiempo a contestar

  36. Tengo uan base de datos ESOR de expltoacion y otra PSOR de preubas y quiero que la de purebas se a como la de expltoacion, periodicamente.

    ¿Debo destruri todos los usuarios y el import los recrea? ¿no me metera basurilla en el system y el sys que son los usuarios que creo no debo destruir?

    • ramkiller Said:

      Buenas Javier, el import no tiene la opción de CREATE USER, lo que puedes hacer para evitar problemas de foreings keys, lo que haría en tu caso al tratarse de una instancia de desarrollo sería lo siguiente.

      – Export completo de la instancia de producción
      – Drop de todas las tablas de los usuarios que tu has creado (no toques los que vienen por defecto en Oracle, SYS, SYSTEM, PUBLIC, SCOTT)
      – Import de la BBDD pruebas añadiendo la claúsula ignore=y

      Espero haberte servido de ayuda y ante cualquier duda consulta lo que sea, te contestaré en cuanto pueda

  37. juan Said:

    Tengo una duda: Si tengo 1500 usuarios con sus respectivos schemas… el import full me importa todo (schemas, grants, users) incluidos los datos?… porque si debo crear esquema por esquema… me imagino si el numero de usuarios es de miles.
    Gracias.

    • ramkiller Said:

      Buenas antes de nada, deberías de hacer el export con full=y, una vez que tengas el export realizas el import y listo. Pero al ser tantísimos esquemas, yo te recomendaría la opción de clonar la instancia, para este caso sería mucho más rápida y no te encontrarías con los posibles conflictos que te pueda dar realizando exp/imp

  38. nagash02 Said:

    Reblogged this on .: Codigo CTM :..


{ RSS feed for comments on this post} · { TrackBack URI }

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: