Posts

Showing posts from January, 2019

Datapump 05 - Cómo funcionan los parámetros DUMPFILE, FILESIZE Y PARALLEL en un expdp.

DUMPFILE, FILESIZE y PARALLEL son parámetros dentro de la herramienta expdp, los cuales tienen una estrecha relación y se llegan afectar entre sí. En este post vamos a descubrir esa relación. Comencemos: DUMPFILE indica el nombre del archivo o los archivos generados (dump file), incluso también se puede definir la ruta donde se van a almacenar a través de un objeto directorio. Tenemos el comodín “%U” si lo colocamos en el nombre del archivo va a sustituir ese comodín por un valor entero de forma consecutiva desde el 01 hasta el 99 según lo requiera. PARALLEL indica cuántos procesos van a trabajar simultáneamente para cargar los datos en los archivos (dump file). (Nota: El paralelismo únicamente funciona en la versión Enterprise Edition) FILESIZE especifica el tamaño máximo que pueden alcanzar los archivos generados (dump file) Ejemplos: Supongamos vamos a exportar una tabla de aproximadamente 240MB, veamos que sucede en diferentes casos: Caso 01: En el siguiente ejemplo

Datapump - 04 Export con flashback time

Image
Cuando escucho la palabra "Flashback" lo primero que pienso es el video juego de los años 90, muy divertido y adelantado para su época. Sin embargo, en esta oportunidad vamos a hablar de Oracle Flashback en el Datapump y como nos permite hacer viajes en el tiempo. Flashback es una tecnología que comenzó con Oracle 9i y sigue evolucionando. Esta herramienta permite a los administradores y usuarios ver y manipular estados pasados de los datos sin necesidad de recuperar toda la base de datos a un punto de tiempo en especifico. Vamos a crear un respaldo de una tabla pero con su imagen de hace 30 minutos y no con la imagen actual. Comencemos: 01.- Insertamos 5 registros a la 14:00, la tabla tiene un campo llamado "fecha" donde vamos a insertar la hora actual a través de la función SYSDATE. 14:00:33 SQL> INSERT INTO test.tab01 (ID,NOMBRE,FECHA) SELECT level, 'First Load', sysdate FROM dual CONNECT BY level <= 5; 5 rows created. 14:00:46 SQL>

Datapump – 03 Directorios

Una diferencia obvia entre Datapump y el export/import tradicional es el uso de objetos Directorio, lo cual algunas personas les causa un poco de confusión. Son objetos de base de datos que apuntan a un directorio específico en el sistema operativo, estos permiten flexibilidad en el manejo de códigos y script, a diferencia de poner explícitamente la ruta del directorio, lo que se conoce como *"quemar" o "harcodear",  solo utilizas este alias, es decir si la ruta cambia no afecta al código. Comencemos: Como crear un directorio: CREATE OR REPLACE DIRECTORY EXP_DIR AS '/u01/workarea'; Si requerimos que otros usuarios tengan acceso de lectura y/o escritura: GRANT READ, WRITE ON DIRECTORY EXP_DIR TO otro_usuario; Chequear quienes tienen permisos sobre el directorio: COL TABLE_NAME FOR A32 COL GRANTEE FOR A24 COL OWNER FOR A16 COL GRANTOR FOR A16 COL PRIVILEGE FOR A12 SELECT * FROM DBA_TAB_PRIVS WHERE TABLE_NAME='EXP_DIR'; Revisar los directori

Datapump – 02 ¿Por qué falla el comando el Export Datapump con la opción Parallel en Oracle RAC?

Teníamos un script para un export/import datapump que funcionaba cuando la BD era single y ahora que fue llevada a Oracle RAC está fallando. ¿Qué sucedió? Cuando se activa la opción de PARALLEL el datapump va a invocar varios trabajadores para separar el trabajo y así optimizar el proceso, sin embargo hay que tener en cuenta un detalle cuando estamos en una configuración de Oracle RAC. Estos trabajadores van a estar en cada nodo del RAC, entonces el dumpfile debe estar ubicado en un almacenamiento compartido como ASM o un Clustered-filesystem, sino va a suceder el siguiente error. ORA-31693: Table data object "TEST"."TEST_15" failed to load/unload and is being skipped due to error: ORA-31617: unable to open dump file "/datadir/temp_expdp /TEST_test_03.dmp" for write ORA-19505: failed to identify file "/datadir/temp_expdp /TEST_test_03.dmp" ORA-27037: unable to obtain file status Como conclusión, Datapump(PARALLEL) en Oracle RAC el d

Datapump - 01 Extraer sentencias DDL de un export Datapump

Saludos, estoy comenzando el día de hoy con una serie de al menos 10 artículos relacionados con la herramienta de datapump, esta apareció con oracle 10g como la evolución del export/import. Datapump trae mejoras e interesantes funcionalidades con cada nueva versión de Oracle. Si solo lo has usado para mover y hacer un respaldo lógico de una tabla o esquema, quizás te estás perdiendo de algunas utiles caracteristicas que pueden simplificar tu vida. Si deseamos extraer en un archivo el script de creación y carga de un export datapump que realizamos previamente. impdp  DUMPFILE=EXP_DIR:expADM_ADMIN.dmp sqlfile=EXP_DIR:sqlADM_ADMIN.sql

Excluir los usuarios por defecto en Oracle

Las bases de datos tienen varios usuarios por defecto, por ejemplo el más conocido es SYSTEM y otros que se crean al activar o instalar una opción adicional como “Oracle Application Express”. En muchas ocasiones no estamos interesados en conocer los detalles de ellos cuando hacemos consultas al diccionario de la base de datos. Por ejemplo si quieres conocer un resumen por tipo de objetos pero solo te interesan los usuarios propios del negocio, entonces debemos excluir los esquemas que crea Oracle por defecto o para sus funcionalidades. Revisando la documentación en línea de Oracle se pueden conseguir varios ejemplos de los usuarios que deberíamos excluir en nuestras consultas sino queremos verlos. A continuación les muestro la  lista de los usuarios que excluyo en mis consultas de monitoreo: owner not in ('ANONYMOUS','AUDSYS','CTXSYS','DBSNMP','LBACSYS','MDSYS','OLAPSYS','ORDDATA','ORDPLUGINS','ORDSYS