Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UNIDAD 17
MOVIMIENTO DE DATOS
17.1. OBJETIVOS
Describir las formas disponibles para mover datos.
Crear y utilizar objetos de directorio.
Utilizar SQL*Loader para cargar datos de una base de datos que no sea Oracle (o archivos de usuario).
Explicar la arquitectura general del pump de datos.
Utilizar la exportación e importación del pump de datos para mover datos entre las bases de datos Oracle.
Utilizar las tablas externas para mover datos a través de archivos independientes de la plataforma
Archivo de errores: el archivo de errores contiene registros que fueron rechazados, por SQL*Loader o por
la base de datos Oracle. SQL*Loader rechaza los registros de archivos de datos cuando el formato de entrada
no es válido.
Una vez que SQL*Loader acepta un registro de archivo de datos para su procesamiento, éste se envía a la
base de datos Oracle para su inserción en una tabla como una fila. Si la base de datos Oracle determina que
la fila es válida, ésta se inserta en la tabla. Si se determina que la fila no es válida, se rechaza el registro y
SQL*Loader lo pone en el archivo de errores.
Archivo de desechos: este archivo se crea sólo cuando es necesario y si se ha especificado que se active
uno. El archivo de desechos contiene registros que se han filtrado de la carga porque no coinciden con
ningún criterio de selección de registro especificado en el archivo de control.
10.El resto del archivo de control contiene la lista de campos, que proporciona información sobre los formatos
de columna en la tabla que se está cargando.
17.4.3. Métodos de Carga
Métodos para guardar datos: la Tabla 17.1 muestra una comparación de los métodos de carga Convencional
y de Ruta de Acceso Directa.
Cargas de ruta de acceso convencional: utilizan el procesamiento SQL y la operación COMMIT de base de
datos para guardar datos. La inserción de una matriz de registros va seguida de una operación COMMIT.
Cada carga de datos puede implicar varias transacciones.
Cargas de ruta de acceso directa: utilizan almacenamientos de datos para escribir bloques de datos en
archivos de datos Oracle. Por eso la carga de ruta de acceso directa es más rápida que la convencional. Las
siguientes funciones diferencian guardar datos de COMMIT:
Durante el proceso de guardar datos, sólo se escriben bloques completos de base de datos en la base de
datos.
Los bloques se escriben después del límite superior de la tabla.
Después de guardar datos, se mueve el límite superior.
Los recursos internos no se liberan después de guardar datos.
Al guardar datos no termina la transacción.
Los índices no se actualizan cada vez que se guardan datos.
Las cargas de ruta de acceso directa y paralela son tan parecidas con respecto a las actividades de DML que
no se han diferenciado en esta comparación.
Registro de Cambios: la carga de ruta de acceso convencional genera entradas de redo de forma similar a
cualquier sentencia DML. Al utilizar una carga de ruta de acceso directa, no se generan entradas de redo si:
La base de datos está en modo NOARCHIVELOG.
La base de datos está en modo ARCHIVELOG, pero el registro está desactivado. El registro se puede
desactivar definiendo el atributo NOLOGGING para la tabla o utilizando la cláusula UNRECOVERABLE en el
archivo de control.
Aplicación de Restricciones: durante una carga de ruta de acceso convencional, todas las restricciones
activadas se aplican de la misma forma que durante cualquier operación DML. Durante las cargas de ruta de
acceso directa, las restricciones se manejan de la siguiente forma:
Las restricciones NOT NULL se comprueban cuando se crean las matrices.
Las restricciones FOREIGN KEY y CHECK se desactivan y se pueden activar al final de la carga mediante los
comandos adecuados del archivo de control. Las restricciones FOREIGN KEY se desactivan porque hacen
referencia a otras filas o tablas y las restricciones CHECK se desactivan porque pueden utilizar funciones
SQL. Si sólo va a insertan un pequeño número de filas en una tabla grande, utilice las cargas convencionales.
Las restricciones PRIMARY KEY y UNIQUE se comprueban durante la carga y al final de la misma, y se pueden
desactivar si se violan.
Arranque de Disparadores INSERT: los disparadores WHILE INSERT se arrancan durante las cargas
convencionales; se desactivan antes de una carga de ruta de acceso directa y se vuelven a activar al final de la
carga. Pueden permanecer desactivados si al final de la ejecución no se puede acceder a un objeto al que se
hace referencia. Considere el uso de cargas de ruta de acceso convencional para cargar datos en tablas con
disparadores INSERT.
Carga en Tablas en Cluster: no se pueden utilizar cargas directas para cargar filas en tablas en cluster. Las tablas
en cluster se pueden cargar sólo mediante cargas de ruta de acceso convencional.
Bloqueo: mientras una carga de ruta de acceso directa está en curso, ninguna otra transacción puede realizar
cambios en las tablas que se están cargando. La única excepción a esta regla se produce cuando se utilizan
simultáneamente varias sesiones de carga directa paralela.
Tabla 17.1: Comparación de los métodos de carga Convencional y de Ruta de Acceso Directa
La utilidad de exportación de pump de datos permite descargar datos y metadatos a un juego de archivos del
sistema operativo denominado juego de archivos de volcado. La utilidad de importación de pump de datos se
utiliza para cargar metadatos y datos almacenados en un juego de archivos de volcado de exportación en un
sistema destino. La API de pump de datos accede a sus archivos en el servidor, no en el cliente (Figura 17.9).
Estas utilidades también se pueden utilizar para llevar a cabo la exportación directamente desde una base de
datos remota a un juego de archivos de volcado, o bien para cargar la base de datos destino directamente
desde una base de datos origen sin archivos implicados. Esto se conoce como modo de red. Este modo resulta
especialmente útil para exportar datos desde una base de datos origen de sólo lectura.
En el núcleo de toda operación de pump de datos está la tabla maestra, que es una tabla creada en el esquema
del usuario que ejecuta un trabajo de pump de datos. Esta tabla conserva todos los aspectos del trabajo. La
tabla maestra se crea durante un trabajo de exportación basado en archivos y se escribe en el juego de archivos
de volcado en el último paso. Por el contrario, la carga de la tabla maestra en el esquema del usuario actual
constituye el primer paso de una operación de importación basada en archivos, y se utiliza para secuenciar la
creación de todos los objetos importados.
La tabla maestra es la clave de la capacidad de reinicio de pump de datos en caso de que se produzca una
parada del trabajo, ya sea planificada o no. Esta tabla se borra cuando el trabajo de pump de datos finaliza de
forma normal.
de parámetros. El modo de línea de comandos interactiva también se activa cuando se conecta un trabajo
en ejecución o parado.
También puede acceder a la interfaz Web. En la página inicial de Database Control, haga clic en el separador
Maintenance y, a continuación, seleccione uno de los siguientes enlaces de la región Utilities: Export to
Files, Import from Files o Import from Database.
Las utilidades de exportación e importación de pump de datos ofrecen diversos modos para descargar y cargar
porciones diferentes de la base de datos. El modo se especifica en la línea de comandos mediante el parámetro
adecuado. Los modos disponibles aparecen en la Figura 17.10 y son los mismos que en las utilidades de
exportación e importación originales.
El parámetro QUERY funciona de forma similar a como lo hace en la utilidad de exportación original, pero con
dos mejoras significativas: se puede cualificar con un nombre de tabla de forma que sólo se aplique a dicha
tabla, y además, se puede utilizar también durante la importación.
Ejemplo:
QUERY=hr.employees:"WHERE department_id in (10,20) and salary
< 1600 ORDER BY department_id"
En la Figura 17.14 se muestra el orden de prioridad utilizado por los clientes de pump de datos para localizar
estos archivos:
Es posible especificar objetos de directorio por cada archivo de volcado, archivo log y archivo SQL. En caso
de especificarlos, se deben separar del nombre de archivo mediante dos puntos (:).
Los clientes de exportación e importación de pump de datos proporcionan un parámetro DIRECTORY que
especifica el nombre de un objeto de directorio. Este objeto de directorio describe la ubicación de acceso
de los archivos.
Como alternativa, es posible definir una variable de entorno, DATA_PUMP_DIR, para especificar el nombre
del objeto de directorio en lugar de utilizar el parámetro DIRECTORY. Los clientes de pump de datos buscan
esta variable de entorno si no se especifica ningún objeto de directorio de forma explícita.
Existe un objeto de directorio por defecto creado para cada base de datos. Este objeto de directorio se
denomina DATA_PUMP_DIR. El acceso al directorio DATA_PUMP_DIR se otorga automáticamente a los
roles EXP_FULL_DATABASE e IMP_FULL_DATABASE.
No es necesario crear un objeto de directorio manualmente antes de utilizar la exportación de pump de
datos. Existe un objeto de directorio por defecto creado para cada base de datos, independientemente de
que se trate de una creación reciente o de una actualización mediante un archivo de comandos en las
plataformas UNIX o Windows. Este objeto de directorio se denomina DATA_PUMP_DIR. El acceso al
directorio DATA_PUMP_DIR se otorga automáticamente a los roles EXP_FULL_DATABASE e
IMP_FULL_DATABASE. El directorio DATA_PUMP_DIR se crea en una de las siguientes ubicaciones:
<ORACLE_BASE>/admin/DB_UNIQUE_NAME
<ORACLE_HOME>/admin/DB_UNIQUE_NAME
La especificación de la ruta de acceso exacta al directorio para DATA_PUMP_DIR varía en función de las
variables de entorno del sistema ORACLE_BASE y ORACLE_HOME y de la existencia del subdirectorio
DATA_PUMP_DIR. Si ORACLE_BASE está definido en el sistema de destino, entonces se utiliza ese valor. De
lo contrario, se utiliza el valor de ORACLE_HOME. Si, por algún motivo, no se encuentra el subdirectorio
DATA_PUMP_DIR, se utiliza la siguiente ruta de acceso por defecto:
ORACLE_HOME/rdbms/log.
En cualquier caso, es necesario disponer de los privilegios de acceso apropiados en relación con el objeto de
directorio para la operación que se pretenda llevar a cabo. En el caso de la exportación, necesitará el acceso
de escritura para todos los archivos y, en el caso de la importación, necesitará el acceso de lectura para los
archivos de volcado, así como el acceso de escritura para los archivos log y los archivos SQL.
Enterprise Manager Database Control permite planificar los trabajos de pump de datos creados mediante este
asistente, como trabajos repetibles (Figura 17.15).
El número de archivos de la cláusula LOCATION debe coincidir con el grado de paralelismo especificado, ya que
cada proceso de entrada/salida (E/S) del servidor necesita su propio archivo. Cualquier archivo extra
especificado se ignorará. Si no hay suficientes archivos para el grado de paralelismo especificado, éste se
reduce para que se ajuste al número de archivos de la cláusula LOCATION.
[DBA| ALL| USER]_EXTERNAL_LOCATIONS muestra los orígenes de datos de las tablas externas.
[DBA| ALL| USER]_TABLES describe las tablas relacionales de la base de datos.
[DBA| ALL| USER]_TAB_COLUMNS describe las columnas de las tablas, vistas y clusters de la base de
datos.