EXPORT/IMPORT BASE DATOS
Realizar un Export de una Base de Datos Oracle
export ORACLE_SID=Base1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_OWNER=oracle
ORACLE_HOME...................Binarios ejecutables
ORACLE_BASE.....................Motor de base de Datos
ORACLE_SID........................Nombre base de Datos
ORACLE_OWNER.................Usuario base de Datos
Metodo Expdp
EXPORTAR_________________________________________________________________________________
$ORACLE_HOME/bin/expdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log full=y
Explicación:
$ORACLE_HOME/bin/expdp .........................arranca la funcion expdp
system/******..............................................usuario de la base de Datos
directory=direct_01......................................ruta en donde esta alojada la copia backup
dumpfile=nombreBackup.dmp....................nombre archivo dmp
logfile=nombrebackup.log...........................nombre archivo log
full=y.............................................................copia full, tambien puede hacerce por esquemas
SCHEMAS=usuario1......................................copia por esquemas, no full
Realizar un export de una Base de Datos Oracle Solo Estructura______________________________________
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log CONTENT=METADATA_ONLY
COMPRESSION=METADATA_ONLY schemas=nombresquema
Realizar un export de una Base de Datos Oracle Solo por Tablas______________________________________
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=nom_tabla.log
tables=nombreesquema.nom_tabla
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=expdp_nom_tablas.log
tables=nombreesquema.nom_tabla1, nombreesquema.nom_tabla2, nombreesquema.nom_tabla3, nombreesquema.nom_tablan+1
Realizar un export de una Base de Datos Oracle Con EXCLUSIONES en Tablas________________________
$ORACLE_HOME/bin/expdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombreBackup.log schemas=nom_esquema EXCLUDE=TABLE:"IN('nom_tabla1')";
Para excluir diferentes tablas que inicien por un nombre especifico
EXCLUDE=TABLE:"LIKE('nom_tabla%')"
Para excluir varias tablas
EXCLUDE=TABLE:"LIKE('nom_tabla1%')", EXCLUDE=TABLE:"LIKE('nom_tabla2%')", EXCLUDE=TABLE:"LIKE('nom_tabla3%')"
Realizar un export de una Base de Datos Oracle Con EXCLUSIONES en esquemas________________________
$ORACLE_HOME/bin/expdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile= nombreBackup.log full=y
EXCLUDE=SCHEMA:"IN('SYSMAN')",EXCLUDE=SCHEMA:"IN('SYSTEM')",EXCLUDE=SCHEMA:"IN('FLOWS_030000')"
Para Importar con exclusiones de esquemas
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile= nombreBackup.log full=y
EXCLUDE=SCHEMA:"IN('SYSMAN')",EXCLUDE=SCHEMA:"IN('SYSTEM')",EXCLUDE=SCHEMA:"IN('FLOWS_030000')"
Para Importar con excluisiones de tabas
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile= nombreBackup.log full=y
EXCLUDE=TABLE:\"IN \(\'NOM_TABLA\'\)\"
Realizar un Import de una Base de Datos Oracle
Setear las variables:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=Base1
Metodo Impdp
IMPORTAR___________________________________________________________________________________
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log full=y
Nota
A- Antes de realizar un Import se debe tener en cuenta que debemos ajustar los bloques de memoria en los servidores.
./sqlplus
SQL> show parameter db_block;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TYPICAL
db_block_size integer 8192
SQL>show parameter db_16;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size big integer 992M
Esto es necesario revisarlo en el sevidor donde se hizo el export y en el server donde se hace el import
Revicemos el server donde se ara el import
SQL> show parameter db_block;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TYPICAL
db_block_size integer 8192
SQL> show parameter db_16;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size big integer 0
Tenemos que asignarle el valor del server donde se realizo el export 992M es el valor del server donde se saco el export dmp
SQL> alter system set db_16k_cache_size=992M scope=SPFILE;
System altered.
Bajamos la Base:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Subimos la Base
Total System Global Area 5027385344 bytes
Fixed Size 2235136 bytes
Variable Size 2499806464 bytes
Database Buffers 2516582400 bytes
Redo Buffers 8761344 bytes
Database mounted.
Database opened.
Consultamos nuevamente el bloque:
SQL> show parameter db_16;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size big integer 992M
SQL>
B- Posteriormente procedemos a copiar por sql los tablespaces de la base de datos origen y los creamos en el server nuevo.
C- ahora si podemos realizar el import:
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log full=y
Explicación:
impdp ..........................................................arranca la funcion impdp
system/******..............................................usuario de la base de Datos
directory=direct_01......................................ruta en donde se alojará la copia backup despues del import
dumpfile=nombreBackup.dmp....................nombre archivo dmp para importar
logfile=nombrebackup.log...........................nombre archivo log resultado del import
full=y.............................................................copia full, tambien puede hacerce por esquemas
SCHEMAS=usuario1......................................copia por esquemas, no full
Realizar un export - Import de una Base de Datos Oracle Por Tablas
Metodo Impdp Tablas
NOTA: si las tablas no tienen integridad referencial se debe colocar la clausula TABLE_EXISTS_ACTION=SKIPE
Le dice a la importación qué hacer si existe la tabla que está intentando crear ya.
TABLE_EXISTS_ACTION = [SKIP | APPEND | TRUNCATE | REEMPLAZAR]
Los posibles valores tienen los siguientes efectos:
SKIP deja la Tabla como está y se mueve al siguiente objeto. Esto no es una opción válida si el CONTENT parámetro se establece DATA_ONLY.
APPEND cargas filas de la fuente y las hojas existentes filas sin cambios.
TRUNCATE elimina las filas existentes y luego carga filas de la fuente.
REPLACE gotas de la tabla existente y luego crea y cargas de la fuente. Esto no es una opción válida si el CONTENT parámetro se establece DATA_ONLY.
EXPORT - IMPORTAR___________________________________________________________________________________
Eliminar estas tablas por el Toad o sqlplus
Agregar este parametro a todas la importaciones con el fin de evitar que se duplique información
TABLE_EXISTS_ACTION=SKIP
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=nom_tabla.log
tables=nombre_esquema.nom_tabla
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=expdp_nom_tablas.log
tables=nombre_esquema.nom_tabla1, nombre_esquema.nom_tabla2, nombre_esquema.nom_tablan+1
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=impdp_nom_tablas.log
tables=nombre_esquema.nom_tabla%
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=impdp_nom_tablas.log
tables=nombre_esquema.nom_tabla
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=impdp_nom_tablas.log
tables=nombre_esquema.nom_tabla1, nombre_esquema.nom_tabla2, nombre_esquema.nom_tabla3, nombre_esquema.nom_tablan+1
Realizar export Consistentes
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log full=y flashback_time=systimestamp
Realizar un import de una tabla exportada de un esquema1 en un dmp en otro esquema2 con el mismo nombre de tabla
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tablas.dmp logfile=impdp_nom_tablas.log
remap_schema= esquema1:esquema2 tables=esquema1.nom_table TABLE_EXISTS_ACTION=SKIP
Realizar un import de una tabla pero que quede con otro nombre dentro del mismo esquema
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tabla.dmp logfile=impdp_nom_tabla.log
tables=nombre_esquema1.nombre_tabla1 remap_table=nombre_esquema1.nombre_tabla1:nombre_tabla2
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tabla.dmp logfile=impdp_nom_tabla.log
tables=nombre_esquema1.nombre_tabla1 remap_table=nombre_esquema1.nombre_tabla1:nombre_esquema2.nombre_tabla2 TABLE_EXISTS_ACTION=SKIP
Remplazar tabla en otro esquema donde esquema1 es el de la exportacion y esquema2 es de la importacion
Solo si se ha hecho la exportacion de solo las tablas en el nom_tabla.dmp
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nom_tabla.dmp logfile=impdp_nom_tabla.log
schemas=nom_esquema1 remap_schema= nom_esquema1:nom_esquema2 remap_table=nom_tabla1:nom_tabla2
Realizar un Import de una Base de Datos Oracle Por Esquemas
IMPORTAR____________________________________________________________________________________
Eliminar el esquema a travez del Toad o por sqlplus
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombredebackup.dmp
logfile=imp_esquema.log schemas=nombre_esquema
Realizar un Import de una Base de Datos Oracle Por Remplazando Esquemas
IMPORTAR____________________________________________________________________________________
Eliminar el esquema a travez del Toad o por sqlplus si el esquema no esta ....se crea automaticamente
carga los datos del nombre_esquema en un esquema_nuevo mediante la funcion remap_schema
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombredebackup.dmp
logfile=imp_esquema.log schemas=nombre_esquema remap_schema=nombre_esquema :esquema_nuevo
para windows
$ORACLE_HOME/bin/impdp system/****** directory=direct_01 dumpfile=nombredebackup.dmp
logfile=imp_esquema.log remap_schema=nombre_esquema :esquema_nuevo
Realizar un Import de una version oracle Superior 10.6.2 a una inferior 10.2.0
IMPORTAR__________________________________________________________________________________
Para hacer esto hay que realizar un export parametrizando la version
$ORACLE_HOME/bin/expdp system/****** directory=direct_01 version=10.2.0 dumpfile=nombredebackup.dmp logfile=exp_esquema.log schemas=nombre_esquema
Como podemos observar agregamos el parametro vesion "nunero version"
Realizar un Import de una Base de Datos Oracle Solo Estructura
IMPORTAR__________________________________________________________________________________
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log CONTENT=METADATA_ONLY
schemas=nombresquema remap_schema=nombresquema:nombresquemanuevo
Realizar un Import de una Base de Datos Oracle Remplazando TABLESPACES
IMPORTAR__________________________________________________________________________________
$ORACLE_HOME/bin/impdp system/******* directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log
schemas=nombresquema remap_schema=nombresquema:nombresquemanuevo
remap_tablespace=USERS:NEWTABLESPACE
Nota:
si dese crear el tablespace new anter de lanzar el import
Nota:
si desean terminar un proceso de import o export damos el siguiente comando
[oracle@oraclelinux Server]#kill_job
#############################################################################################
REALIZAR EXPORT WINDOWS
cd C:\WINDOWS\system32
set oracle_sid=NOMBRE_BD
echo %oracle_sid%
expdp system/***** directory=direct_01 dumpfile=nombreBackup.dmp logfile=nombrebackup.log full=y
Funciones de DBA
c:\app\Administrador\product\11.2.0\dbhome_2\BIN>
sqlplus.exe
c:\app\Administrador\product\11.2.0\dbhome_2\BIN>set ORACLE_SID=XE
c:\app\Administrador\product\11.2.0\dbhome_2\BIN>sqlplus "sys as sysdba"
Contraseña: systest
Contraseña: testsys
SQL>conectado
SQL>
EXCLUDE para excluir tablas en la importacion
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nombrebackup.dmp logfile=nombrebackup.log schemas=nom_esquema
EXCLUDE=TABLE:"LIKE('NOM_TABLE_1%')", EXCLUDE=TABLE:"LIKE('NOM_TABLE_2%')",
EXCLUDE=TABLE:"LIKE('NOM_TABLE_3%')";
$ORACLE_HOME/bin/expdp system/******* directory=direct_01 dumpfile=nombrebackup.dmp logfile=nombrebackup.log full=y
EXCLUDE=SCHEMA:"IN('SYSMAN')",EXCLUDE=SCHEMA:"IN('SYSTEM')",
EXCLUDE=SCHEMA:"IN('FLOWS_030000')",EXCLUDE=SCHEMA:"IN('APEX_030200')",
EXCLUDE=SCHEMA:"IN('ORDDATA')",EXCLUDE=SCHEMA:"IN('SCOTT')";
http://www.dbajunior.com/implement-data-pump-export-and-import-jobs-for-data-transfer/
Compresion
http://oracle-base.com/articles/11g/data-pump-enhancements-11gr1.php
http://www.dbarj.com.br/en/2013/05/run-expdp-compression-oracle-10g-11g/
http://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL845
https://community.oracle.com/thread/763945
http://arjudba.blogspot.com/2009/07/import-data-into-existing-table.html
Trabajos no ejecutados
En ocasiones algunos trabajos de exportaciones genera errores, estos quedan alojados en base de datos en la tabla dba_datapump
Buscamos en la base de datos los trabajos no realizados
SELECT * FROM dba_datapump_jobs WHERE job_name NOT LIKE 'BIN$%' AND STATE = 'NOT RUNNING';
Generamos un scritp para eliminar los registros no ejecutados
SELECT 'Drop table ' || o.owner || '.' || object_name || ';' FROM dba_objects o, dba_datapump_jobs j
WHERE o.owner = j.owner_name AND o.object_name = j.job_name AND j.job_name NOT LIKE 'BIN$%' AND STATE = 'NOT RUNNING';
Drop table SYSTEM.SYS_EXPORT_FULL_48;
Drop table SYSTEM.SYS_EXPORT_FULL_21;
Drop table SYSTEM.SYS_EXPORT_FULL_98;
Drop table SYSTEM.SYS_EXPORT_FULL_19;
Drop table SYSTEM.SYS_EXPORT_FULL_50;
Drop table SYSTEM.SYS_EXPORT_FULL_28;
Drop table SYSTEM.SYS_EXPORT_FULL_57;
Drop table SYSTEM.SYS_EXPORT_FULL_51;
Drop table SYSTEM.SYS_EXPORT_FULL_45;
Drop table SYSTEM.SYS_EXPORT_FULL_69;
Drop table SYSTEM.SYS_EXPORT_FULL_71;
Drop table SYSTEM.SYS_EXPORT_FULL_30;
Drop table SYSTEM.SYS_EXPORT_FULL_16;
Backups Consistentes
el error ORA-02298; hay filas huérfanas que no tienen una fila principal que corresponda (como lo impone una restricción de dominio externo). Al deshabilitar y volver a habilitar la clave externa, puede ver aparecer el error ORA-02298 y la ÚNICA solución es una de estas acciones:
1 - Agregar las filas principales apropiadas
2: elimine las filas huérfanas secundarias (no se recomienda debido a la pérdida de integridad de los datos)
Este error ocurre comúnmente durante una exportación "en vivo" de Data Pump (expdp), cuando hay un período de tiempo entre la exportación del padre y la exportación del hijo.
Esto se explica en el caso de que haya filas "faltantes" en la tabla principal, ya que la tabla principal ya se exportó cuando se inició la exportación de la tabla secundaria.
select child_key from from child_table
where
child_key not in (select parent_key from parent_table);
La mejor solución para el error ORA-02298 es usar el parámetro FLASHBACK_SCN o FLASHBACK_TIME mientras reexpira los datos
https://technology.amis.nl/2014/09/03/make-time-consistent-export-dump-using-expdp-datapump-utility/
http://clemente.pamplona.name/dba/el-equivalente-a-consistenty-con-expdp/
http://www.dba-oracle.com/t_consistent_y_expdp.htm
http://www.dba-oracle.com/t_expdp_flashback_time.htm
Importante recompilar la base de datos al teminar los import
SQL> @/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlrp.sql