1. ADMINISTRACIÓN DE ORACLE 11G
Transferencia de datos
1Carmen Soler Chorro - http://www.linkedin.com/in/casoch
2. INTRODUCCIÓN
En muchos casos es necesario volcar datos
a la base de datos o intercambiar datos entre
bases de datos.
El INSERT no es siempre la mejor opción.
Oracle nos da las herramientas:
SQL*Loader
Data Pump
2Carmen Soler Chorro - http://www.linkedin.com/in/casoch
3. MÉTODOS PARA MOVER DATOS
SQL*Loader
Directory Objects
External Tables
3Carmen Soler Chorro - http://www.linkedin.com/in/casoch
4. SQL*LOADER
En muchos casos nos encontraremos con la situación
que tenemos que volcar datos que nos llegan de un
tercero. Por ejemplo en un fichero.
El DBA puede configurar SQL*Loader para que sea
capaz de entender el formato de este fichero y pueda
volcar los datos.
SQL*Loader puede insertar filas de 2 formas:
La convencional
Utiliza INSERTS y COMMITS
La directa
No se usa la SGA, no se usa el database buffer cache ni los logs.
Se manda escribir en una zona libre del datafile marcando los
bloques sin que sean “visibles”.
Al terminar avisa a la base de datos y se hacen visibles (“commit”)
4Carmen Soler Chorro - http://www.linkedin.com/in/casoch
5. SQL*LOADER
Inconvenientes del método directo:
Las restricciones de integridad deben eliminarse
o desactivarse durante la operación.
Si hay triggers definidos, no se lanzarán.
Las tablas afectadas quedarán bloqueadas para
otros usuarios.
No se puede aplicar a tablas en modo cluster.
5Carmen Soler Chorro - http://www.linkedin.com/in/casoch
6. SQL*LOADER
Ficheros necesarios en una operación SQL*Loader:
El fichero de entrada
Donde están los datos a cargar.
El fichero de control
Tiene extensión ctl
Es el que contiene las reglas para interpretar el fichero de
entrada (secuencia que se seguirá, campos, delimitadores).
Los ficheros de log
Resumen el proceso y los errores que hubieron durante la carga.
Puede ser que algunas de las filas no se carguen por algún error.
De formato
De integridad de la base de datos
Las filas que dan error se guardan en un “bad file”
6Carmen Soler Chorro - http://www.linkedin.com/in/casoch
7. TALLER 1
Ejemplo de ejecución de SQL*Loader.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 7
8. DIRECTORY OBJECTS
Directory Object es una estructura lógica que representa un
directorio físico del sistema de ficheros de servidor.
Son propiedad del usuario SYS, aunque los cree otro usuario.
Su nombre no puede repetirse
Los permisos no coinciden con los permisos del sistema operativo
Los ficheros que estan dentro del directorio tienen los mismos
permisos que éste.
El parámetro UTL_FILE_DIR indica qué paths pueden ser
accedidos (separados por comas).
Por defecto es null
Puede ser * si queremos que sea cualquier directorio (esto no es
NADA recomendable).
Estos objetos son necesarios para poder hacer las operaciones
de Data Pump.
8Carmen Soler Chorro - http://www.linkedin.com/in/casoch
9. TALLER 2
Cómo crear un directorio.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 9
10. TABLAS EXTERNAS
Una tabla externa es un objeto de la base de
datos que se almacena como tal, pero no tiene
segmentos, porque su estructura depende
exclusivamente del sistema operativo.
Se pueden hacer consultas sobre ellas, como si
se trataran de tablas normales, pero no se
pueden hacer operaciones DML estándar.
No pueden tener índices, ni restricciones ni
triggers asociados.
Se utilizan para las operaciones de Data Pump.
Se accede a ellas a través de los directorios.
10Carmen Soler Chorro - http://www.linkedin.com/in/casoch
11. TABLAS EXTERNAS
Para crearlas se utiliza CREATE TABLE con las
palabras clave ORGANIZATION EXTERNAL.
Esto indica que la tabla no existe como segmento,
sino como fichero dentro del sistema operativo.
11Carmen Soler Chorro - http://www.linkedin.com/in/casoch
12. TABLAS EXTERNAS
El comando anterior:
Crea una tabla externa que toma los valores del fichero
depts.txt
Busca este fichero en el DEFAULT DIRECTORY
Como hemos dicho que el tipo de la tabla es oracle_loader,
los parámetros que recibe son idénticos que en SQL*Loader.
Podríamos insertar datos en esta tabla con un CREATE
TABLE…AS SELECT…
12Carmen Soler Chorro - http://www.linkedin.com/in/casoch
13. TABLAS EXTERNAS
Si el tipo que se le da a la tabla es
DATAPUMP, sólo se permite la escritura de
datos en formato Data Pump.
No serían necesarios otros parámetros.
Una vez creada de esta manera, el
comportamiento sería el mismo.
13Carmen Soler Chorro - http://www.linkedin.com/in/casoch
15. TALLER 4
Usar tablas externas.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 15
16. DATA PUMP VS EXPORT/IMPORT
El objetivo es el mismo: extraer grandes cantidades de datos e
insertarlos en otra parte.
En versiones antiguas se daban las utilidades Export e Import.
Tienen la limitación de que se han de conectar a la base de datos a
través de un proceso de servidor, por lo que nos tenemos que
conectar desde un cliente (herramienta cliente/servidor)
El formato de un fichero de Export/Import y de Data Pump, no
tienen nada que ver.
Data Pump existe a partir de la versión 10g.
Por lo que para importar datos de bases de datos más antiguas la
única opción es utilizar Export/Import.
Data Pump tiene como ventaja que no necesita de un proceso de
servidor, es sólo una utilidad de servidor (no necesita un cliente
desde el que conectarse).
Gracias a esto mejora notablemente el rendimiento, al tener acceso
directo a los datafiles y a la SGA. No se entra por sesión.
16Carmen Soler Chorro - http://www.linkedin.com/in/casoch
17. DATA PUMP VS EXPORT/IMPORT
Procesos relacionados:
Expdp.exe y impdp.exe
Se utilizan para lanzar, controlar y monitorizar las tareas de Data Pump
Cuando se inicia una tarea de Data Pump se apoya en un
proceso llamado DWn.
Como pueden haber varios, necesita un DMnn (Data Pump Master
process) que lo gestione.
Un Data Pump genera 3 tipos de ficheros:
Fichero SQL
Con el DDL que definen los objetos de los que se hace data pump
Se pueden generar con o sin datos.
Dump files
Contiene los datos exportados de la base de datos.
Logfiles
Describe todo lo que ha ocurrido durante el proceso.
17Carmen Soler Chorro - http://www.linkedin.com/in/casoch
18. TALLER 5
Hacer un Data Pump Export e Import.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 18