Una vez tengamos todo esto ya estaremos listos para importar los datos.
Generación de scripts de creación de esquemas
y tablespaces.
El
siguiente paso es generar los scripts para la creación de esquemas y
tablespaces en la base de datos en blanco, para ello nos conectamos a la base
de datos origen, desde la que hemos hecho el backup y generamos los
scripts.
SQL> spool create_temp_tablespaces.sql
SQL> select 'CREATE TEMPORARY TABLESPACE
'||TABLESPACE_NAME||' TEMPFILE SIZE 1024M;' from dba_temp_files;
'CREATETEMPORARYTABLESPACE'||TABLESPACE_NAME||'TEMPFILESIZE1024M;'
-------------------------------------------------------------------------------
CREATE TEMPORARY TABLESPACE TEMP01 TEMPFILE SIZE
1024M;
SQL> spool off;
SQL> spool create_tablespaces.sql;
SQL> select 'CREATE TABLESPACE
'||TABLESPACE_NAME||' DATAFILE SIZE 32M;' from dba_tablespaces where CONTENTS
!='TEMPORARY';
SQL> spool off;
SQL> spool alter_tablespaces.sql;
SQL> select 'ALTER TABLESPACE '||TABLESPACE_NAME||'
ADD DATAFILE '''||'+DATA'''||' SIZE '||BYTES/1024/1024||'M;' from
dba_data_files order by TABLESPACE_NAME;
SQL> spool off;
SQL> spool create_users.sql
SQL> select 'CREATE USER "'||USERNAME||'"
IDENTIFIED BY VALUES '''||PASSWORD||''' DEFAULT TABLESPACE "'
||DEFAULT_TABLESPACE||'" TEMPORARY TABLESPACE
"'||TEMPORARY_TABLESPACE||'";'
2 3
from dba_users where USERNAME NOT LIKE '%SYS%' and USERNAME NOT LIKE
'OUTLN'
4 and USERNAME NOT LIKE 'ANONYMOUS'
5 and USERNAME NOT LIKE 'DBSNMP'
6 and USERNAME NOT LIKE 'SCOTT'
7 and USERNAME NOT LIKE '%ORACLE%';
SQL>
spool off;
Para evitar problemas de espacio a la hora de hacer la importación, he generado un script "alter_tablespaces.sql" para crear una estructura de datafiles idéntica que en la base de datos original, si queremos podemos crear un número diferente de datafiles, pero tendremos que calcular el espacio total que vamos a necesitar.
Creación de la estructura básica.
A partir
de los scripts generados anteriormente, podemos crear la estructura básica de
usuarios y tablespaces para poder empezar con la importación de los datos en la
nueva base de datos.
Procedemos
con la importación.
SQL>
@create_tablespaces.sql
Tablespace
creado.
Tablespace
creado.
Tablespace
creado.
.
.
.
SQL>
@create_temp_tablespaces.sql
Tablespace
creado.
SQL>
@alter_tablespaces.sql
Tablespace
modificado.
Tablespace
modificado.
SQL>
@create_users.sql
Usuario
creado.
Usuario
creado.
.
.
.
Configuración base de datos “en blanco”.
Una vez ya hemos completado la instalación de la
infraestructura 11g, Grid para el soporte de almacenamiento ASM, motor de base
de datos 11g y base de datos vacía, cambiaremos el parámetro de ejecución
automática de los Jobs (para que no se ejecute nada después de la importación),
y configuraremos un directorio para el DATAPUMP, donde tendremos almacenados
nuestros exports de la base de datos.
Desactivamos los Jobs.
SQL> show parameter job
NAME TYPE VALUE
------------------------------------ -----------
-----------------------------
job_queue_processes integer 1000
SQL> alter system set job_queue_processes=0
scope=both;
Sistema
modificado.
Configuración de los directorios para la
importación.
Al igual
que en la base de datos origen, debemos crear un directorio válido para
especificar la ubicación del archivo a importar en la base de datos “en blanco”.
SQL> select * from dba_directories;
OWNER
DIRECTORY_NAME
DIRECTORY_PATH
------ ------------------------------
--------------------------------------------------
SYS
ORACLE_OCM_CONFIG_DIR
/oracle/app/oracle/11.2/db/ccr/state
SYS
DATA_PUMP_DIR
/oracle/app/oracle/11.2/admin/EXITAE01/dpdump/
SYS
XMLDIR
/ade/b/107470581/oracle/rdbms/xml
SQL> drop directory DATA_PUMP_DIR;
Directorio borrado.
SQL> create directory DATA_PUMP_DIR as
'/oracle/fra/DATAPUMP';
Directorio creado.
SQL> select * from dba_directories;
OWNER
DIRECTORY_NAME
DIRECTORY_PATH
------ ------------------------------
--------------------------------------------------
SYS
ORACLE_OCM_CONFIG_DIR
/oracle/app/oracle/11.2/db/ccr/state
SYS
DATA_PUMP_DIR
/oracle/fra/DATAPUMP
SYS
XMLDIR
/ade/b/107470581/oracle/rdbms/xml
Export de los datos.
Antes de
hacer la exportación debemos asegurarnos de tener espacio suficiente en el
directorio de destino para el DATAPUMP. Para saber cual es el directorio
configurado:
SQL> select * from dba_directories;
OWN DIRECTORY_NAME DIRECTORY_PATH
--- ------------------------------ ------------------------------------------------------------
SYS EXPDIR /oracle/fra/datapump
SYS DATA_PUMP_DIR /oracle/fra/DATAPUMP
SYS TIMEZDIF_DIR
/u01/app/oracle10g2/10.2/db/oracore/zoneinfo
SYS WORK_DIR /ade/aime_ship_10gR2_050630/oracle/work
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle10g2/10.2/db/ccr/state
SYS ADMIN_DIR
/ade/aime_ship_10gR2_050630/oracle/md/admin
El
directorio que nosotros vamos a usar para el DATAPUMP es el “DATA_PUMP_DIR”.
Ejecutamos
el export:
-bash-3.00$ expdp system/password FULL=Y DIRECTORY=DATA_PUMP_DIR
DUMPFILE=exportTEST1.dmp LOGFILE=exportTEST1.log EXCLUDE=STATISTICS
Export: Release 10.2.0.4.0 - 64bit Production on
Miércoles, 06 Junio, 2012 23:28:19
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Conectado a: Oracle Database 10g Release 10.2.0.4.0 -
64bit Production
Iniciando
"SYSTEM"."SYS_EXPORT_FULL_01": system/******** FULL=Y
DIRECTORY=DATA_PUMP_DIR DUMPFILE=exportTEST1.dmp LOGFILE=exportTEST1.log
EXCLUDE=STATISTICS
Estimación
en curso mediante el método BLOCKS...
Procesando
el tipo de objeto DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Estimación
total mediante el método BLOCKS: 84.17 GB
Procesando
el tipo de objeto DATABASE_EXPORT/TABLESPACE
Procesando
el tipo de objeto DATABASE_EXPORT/PROFILE
Procesando
el tipo de objeto DATABASE_EXPORT/SYS_USER/USER
Procesando
el tipo de objeto DATABASE_EXPORT/SCHEMA/USER
Procesando
el tipo de objeto DATABASE_EXPORT/ROLE
Procesando
el tipo de objeto DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
Procesando
el tipo de objeto DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
Procesando
el tipo de objeto DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Procesando el
tipo de objeto DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
.
.
.
.
. .
"USER1"."CONTACTOS3" 0 KB 0 filas exportadas
. .
"USER1"."EVALUACIONES" 0 KB 0 filas exportadas
. .
"USER1"."EVALUACIONES_RESP" 0 KB 0 filas exportadas
. .
"USER1"."SMP_VDN_NODE_LIST" 0 KB 0 filas exportadas
. .
"USER1"."VBZ$CHANGE_PLANS" 0 KB 0 filas exportadas
La tabla
maestra "SYSTEM"."SYS_EXPORT_FULL_01" se ha
cargado/descargado correctamente
******************************************************************************
El juego de
archivos de volcado para SYSTEM.SYS_EXPORT_FULL_01 es:
/oracle/fra/DATAPUMP/exportTEST1.dmp
El trabajo
"SYSTEM"."SYS_EXPORT_FULL_01" ha terminado correctamente en
04:08:54
Import de los datos.
Ejecutamos el Import de los datos sobre la nueva base de
datos oracle 11g.
-bash-3.00$ impdp system/password FULL=Y
DIRECTORY=DATA_PUMP_DIR DUMPFILE=exportTEST1.dmp LOGFILE=importTEST1.log
Import: Release 11.2.0.1.0 - Production on Mar Jun 12
10:21:11 2012
Copyright (c) 1982, 2009, Oracle and/or its
affiliates. All rights reserved.
Conectado a: Oracle Database 11g Release 11.2.0.1.0 -
64bit Production
With the Automatic Storage Management option
La tabla maestra
"SYSTEM"."SYS_IMPORT_FULL_01" se ha cargado/descargado
correctamente
Iniciando
"SYSTEM"."SYS_IMPORT_FULL_01": system/******** FULL=Y
DIRECTORY=DATA_PUMP_DIR DUMPFILE=exportTEST1.dmp LOGFILE=importTEST1.log
Procesando
el tipo de objeto DATABASE_EXPORT/TABLESPACE
.
.
.
Una vez ha acabado la importación, debemos revisar el log de
la operación, por si ha fallado la importación de algún objeto. Objetos que ya
estén inválidos en la base de datos origen, o objetos que dependan de otra base
de datos por dblink, se crearán inválidos.
No hay comentarios:
Publicar un comentario