Oracle Live

11/08/2016

Expdp – Impdp: Ejemplos utiles

Filed under: Backup & Recovery — mogukiller @ 9:34 am

En mi día a día es muy frecuente la utilización de las herramientas que ofrece Datapump, pero en alguna ocasión he tenido que utilizar o bien la documentación o bien de google para saber la sintaxis exacta para deteminados casos. Por lo que aquí os dejo algunos ejemplos utiles que he ido registrando.

-- Creamos directorios
-- Impormacion de los procesos de export corriendo
-- Monitorizacion Progreso
-- Administrar procesos
-- Atacharse a un proceso
-- Ejemplos
--  Export full con paralelismo 2
--  Import full con paralelismo 2
--  Export/Generacion de metadatos
--  Export de un esquema excluyendo tablas
--  Importa los indicies y constraints
--  Importacion por network link
--  Importacion de los datos de una tabla
--  Importamos remapeando esquema y tablespace
-- Oracle 12c Nuevas funcionalidades
--  Exportamos una vista como una tabla
--  Importamos la tabla remapeandola

--------------------------------------
-- Privilegios necesarios
--------------------------------------

GRANT EXP_FULL_DATABASE TO MOGU;
GRANT IMP_FULL_DATABASE TO MOGU;

--------------------------------------
-- Creamos directorios
--------------------------------------

SELECT * FROM ALL_DIRECTORIES;
SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE LIKE '%&grantee%' AND TABLE_NAME LIKE '%&directorio%' ORDER BY 3,1,4;

CREATE OR REPLACE DIRECTORY <DIRECTORIO> AS '<PATH>';
GRANT READ, WRITE ON DIRECTORY <DIRECTORIO>  TO <USUARIO>;

--------------------------------------
-- Impormacion de los procesos de export corriendo
--------------------------------------

SET lines 140
COL owner_name FORMAT a10;
COL job_name FORMAT a20
COL state FORMAT a12
COL operation LIKE owner_name
COL job_mode LIKE owner_name
SELECT owner_name, job_name, operation, job_mode,state, attached_sessions,degree FROM dba_datapump_jobs;

------------------------------------
-- Monitorizacion Progreso
------------------------------------

-- Para el import

SELECT sl.opname,
    sl.sid,
       sl.serial#,
       TRUNC(sl.elapsed_seconds/60) || ':' || MOD(sl.elapsed_seconds,60) mins_elapsed,
       TRUNC(sl.time_remaining/60) || ':' || MOD(sl.time_remaining,60) mins_remaining,
       ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
FROM  v$session_longops sl
WHERE  sl.opname like '%IMPORT%'
order by 6 desc ;

-- Para el export

SELECT sl.opname,
    sl.sid,
       sl.serial#,
       TRUNC(sl.elapsed_seconds/60) || ':' || MOD(sl.elapsed_seconds,60) mins_elapsed,
       TRUNC(sl.time_remaining/60) || ':' || MOD(sl.time_remaining,60) mins_remaining,
       ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
FROM  v$session_longops sl
WHERE  sl.opname like '%EXPORT%'
order by 6 desc ;

-----------------------------------
-- Administrar procesos
-----------------------------------

-- Suspende el job

SET serveroutput on
SET lines 100
DECLARE
job1 NUMBER;
BEGIN
job1 := DBMS_DATAPUMP.ATTACH('SYS_IMPORT_SCHEMA_01','SYS');
DBMS_DATAPUMP.STOP_JOB (job1);
END;
/

-- Rearranca el job

SET serveroutput on
SET lines 100
DECLARE
job1 NUMBER;
BEGIN
job1 := DBMS_DATAPUMP.ATTACH('SYS_IMPORT_SCHEMA_01','SYS');
DBMS_DATAPUMP.START_JOB (job1);
END;
/

-- Mata el job

DECLARE
job2 NUMBER;
BEGIN
job2 := DBMS_DATAPUMP.ATTACH('SYS_IMPORT_SCHEMA_01','SYS');
DBMS_DATAPUMP.STOP_JOB (job2,1,0); 
END;
/

'nota: Esta operativa tambien podemos hacerla atachandonos al proceso.'

---------------------------------
-- Atacharse a un proceso
---------------------------------

Podemos o bien por paquete o por linea de comandos. Suponemos que hemos lanzado el porceso con JOB_NAME. En otra terminal lanzamos

> expdp|impdp system/manager ATTACH = job_name
> expdp|impdp \'/ as sysdba\'	attach = job_name	
> expdp|impdp attach = 	SYS_IMPORT_SCHEMA_01
	Username: / as sysdba
'
'Algunos de los parametros que podemos utilizar son:'

KILL_JOB
STOP_JOB[=IMMEDIATE]
START_JOB
EXIT_CLIENT
PARALLEL
STATUS


---------------------------
-- Parametros
---------------------------

DUMPFILE=[directory_name:]file_name[,...] 'filename:podemos utilizar %U'
EXTIMATE_ONLY=YES|NO
EXCLUDE=object_type[:name_clause][,...]
EXCLUDE=GRANTS
FILESIZE=n[B|KB|MB|GB]
NOLOGFILE=YES|NO
PARALLEL= n 'dos veces el numero de cpus'
REUSE_DUMPFILES=YES|NO
TABLE=[schema_name.]table_name[:partition_name][,...]

-- IMPDP
DATA_OPTIONS=SKIP_CONSTRAINT_ERROS
SQLFILE=file_name.sql	'No hace el import, escribe lo que va a hacer en un .sql'
TABLE_EXISTS_ACTION=SKIP | APPEND | TRUNCATE | REPLACE 'REPLACE: Hace un DROP de la tabla'

-------------------------------------------
-- Ejemplos 
-------------------------------------------

-- Export full con paralelismo 2

expdp parfile=expdp_parfile.txt

cat >expdp_parfile.txt

userid='/ as sysdba'
directory=DIR_EXPORT
parallel=2
filesize=2G
dumpfile=expdp_full_%U.dmp
logfile=export_full.log
full=Y

impdp parfile=impdp_parfile.txt

-- Import full con paralelismo 2

cat >impdp_parfile.txt

userid=system/manager
directory=DIR_EXPORT
dumpfile=expdp_full_%U.dmp
logfile=impdp_full.log
PARALLEL=2
full=Y

-- Ejemplos de exclusion

'Excluimos un esquema o un conjunto de esquemas.'
EXCLUDE=SCHEMA:"='OTAR'"
EXCLUDE=SCHEMA:"IN('SYSMAN','ORDDATA','APEX_030200')"

-- Export/Generacion de metadatos

cat >export_metadatos_full.par

userid='/ as sysdba'
directory=EXPORT
dumpfile=export_metadatos_full.dmp
logfile=export_metadatos_full.log
CONTENT=METADATA_ONLY
FULL=Y

expdp parfile=export_metadatos_full.par

cat >import_metadatos_full.par

userid='/ as sysdba'
directory=EXPORT
dumpfile=export_metadatos_full.dmp
logfile=export_metadatos_full.log
sqlfile=metadatos_full_ddl.sql
FULL=Y

'Se contamos con un DBLINK sobre el origen podemos generar directamente los metadatos'

cat >ddl_COCO_metadata.par
network_link=DBL_COCO_ORIG 
DIRECTORY=DATA_PUMP_DIR
FULL=Y
CONTENT=METADATA_ONLY
SQLFILE=ddl_COCO_metadata.sql

impdp \'/ as sysdba\' parfile=ddl_COCO_metadata.par
'

-- 	Export de un esquema excluyendo tablas

cat >exp_schema_CRC.par
userid="/ as sysdba"
dumpfile=exp_schema_CRC_%U.dmp
filesize=20G
logfile=exp_AC_FICHEROS.log
directory=MIGRACION
schemas=CRC
exclude=table:"IN('AC_FICHEROS','AC_CORREOS','AC_ANEXOS')"

expdp parfile=exp_schema_CRC.par


-- Importa los indicies y constraints

cat >imp_index_AC_FICHEROS.par
NETWORK_LINK=PATOS0_TARGET 
TABLES=CRC.AC_FICHEROS
INCLUDE=INDEX
INCLUDE=CONSTRAINT


-- Importacion por network link

MOGU_ORIG = 
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.159.184.6)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MOGU1)
    )
  )

CREATE DATABASE  LINK DBL_MOGU_ORIG CONNECT TO SYSTEM IDENTIFIED BY W3lc0m31 USING 'MOGU_ORIG';


cat >imp_schema_dblink.par
network_link=DBL_MOGU_ORIG
SCHEMAS='MOGU'

-- Importacion de los datos de una tabla
'nota: Deben existir los metadatos de la tabla'

cat >impdp_AC_FICHEROS_tramo16.par
dumpfile=exp_AC_FICHEROS_tramos_16.dmp
TABLES=CRC.AC_FICHEROS
directory=MIGRACION
CONTENT=DATA_ONLY

-- Ejemplo: Importamos remapeando esquema y tablespace

cat >imp_AC_CORREOS.par
userid="/ as sysdba"
dumpfile=exp_AC_CORREOS_%U.dmp
REMAP_SCHEMA=CRC:MOGU
REMAP_TABLESPACE=TAB_AC_CORREOS_DES_MENSAJE:PRUEBAS
logfile=imp_AC_CORREOS.log
directory=MIGRACION
TABLES=CRC.AC_CORREOS

--------------------------------------
-- Oracle 12c Nuevas funcionalidades
-------------------------------------

-- Exportamos una vista como una tabla

cat >exp_view.par
VIEWS_AS_TABLES=mogu.tabla_madre_v 
TABLES=mogu.tabla_madre 
DIRECTORY=PRUEBAS 
DUMPFILE=table_as_views.dmp 
NOLOGFILE=YES

expdp \'/as sysdba\' parfile=exp_view.par
'
-- Importamos la tabla remapeandola

cat >imp_view_remap.par
VIEWS_AS_TABLES=mogu.tabla_madre_v 
REMAP_TABLE=tabla_madre_v:tabla_madre_new
TABLES=mogu.tabla_madre 
DIRECTORY=PRUEBAS 
DUMPFILE=table_as_views.dmp 
NOLOGFILE=YES

impdp \'/as sysdba\' parfile=imp_view_remap

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

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

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: