Oracle Live

02/04/2016

Migración – Cambio de version y entorno con Golden Gate

Filed under: Golden Gate,Migraciones — mogukiller @ 1:40 am

Seguramente la mejor opción para migrar una base de datos de versión y de entorno sea utilizar Golden Gate. En esta entrada se indican los pasos realizados para preparar una migración con Golden Gate. Partimos de una carga inicial hecha con DataPump.

-- Entorno
----------------------------------
-- Configuracion en destino
----------------------------------
-- Creamos el usuario necesario para Golden Gate
-- Validamos el origen
-- Sacamos el listado de tablas a replicar
-- Add trandata info
-- Configuramos el extractor
-- Creamos el extractores
-- Configuramos el purgado de trails

----------------------------------
-- Configuracion en destino
----------------------------------
-- Creamos el usuario necesario para Golden Gate
-- Configuracion del replicador
-- Creamos la tabla de check point
-- Configuramos el purgado de trails
-- Creamos el replicador 
-- Configuramos el purgado de trails

-- Cosas a tener en cuenta
	-- Disable referencial constraint en destino (FK)

-- Entorno

-- origen:
host: moguorig (AIX)
DB:	  DBORIGEN(9i)
OGG entorno:
	su - uogg
	. ENV_DBORIGEN
	cd /products/ogg
	
-- destino:
host: moguodest (LINUX)
DB:	  DBDESTINO(12c)
OGG entorno:
	su - uogg
	. ENV_DBDEST
	cd /u01/ogg_12


-- Creamos el usuario necesario para Golden Gate

 CREATE USER "UOG_MIGRA" IDENTIFIED BY temporal     DEFAULT TABLESPACE "USUARIOS"      TEMPORARY TABLESPACE "TEMPORAL1";

-- new object type path: SCHEMA_EXPORT/SYSTEM_GRANT

GRANT DROP ANY EDITION TO "UOG_MIGRA";              
GRANT CREATE ANY EDITION TO "UOG_MIGRA";            
GRANT SELECT ANY TRANSACTION TO "UOG_MIGRA";        
GRANT CREATE JOB TO "UOG_MIGRA";                    
GRANT FLASHBACK ANY TABLE TO "UOG_MIGRA";           
GRANT SELECT ANY DICTIONARY TO "UOG_MIGRA";         
GRANT EXECUTE ANY TYPE TO "UOG_MIGRA";              
GRANT DELETE ANY TABLE TO "UOG_MIGRA";              
GRANT UPDATE ANY TABLE TO "UOG_MIGRA";              
GRANT INSERT ANY TABLE TO "UOG_MIGRA";              
GRANT SELECT ANY TABLE TO "UOG_MIGRA";              
GRANT ALTER ANY TABLE TO "UOG_MIGRA";               
GRANT CREATE TABLE TO "UOG_MIGRA";                  
GRANT UNLIMITED TABLESPACE TO "UOG_MIGRA";          
GRANT RESTRICTED SESSION TO "UOG_MIGRA";            
GRANT ALTER SESSION TO "UOG_MIGRA";                 
GRANT "CONNECT" TO "UOG_MIGRA";                     
GRANT "RESOURCE" TO "UOG_MIGRA";                    
GRANT "SELECT_CATALOG_ROLE" TO "UOG_MIGRA";
ALTER USER "UOG_MIGRA" DEFAULT ROLE ALL;
GRANT EXEMPT ACCESS POLICY TO "UOG_MIGRA";
GRANT DROP ANY DIRECTORY TO "UOG_MIGRA";
GRANT CREATE ANY DIRECTORY TO "UOG_MIGRA";
GRANT CREATE ANY TRIGGER TO "UOG_MIGRA";
GRANT EXECUTE ANY PROCEDURE TO "UOG_MIGRA";
GRANT CREATE ANY PROCEDURE TO "UOG_MIGRA";
GRANT CREATE ANY SEQUENCE TO "UOG_MIGRA";
GRANT CREATE ANY VIEW TO "UOG_MIGRA";
GRANT CREATE ANY INDEX TO "UOG_MIGRA";
GRANT SELECT ANY TABLE TO "UOG_MIGRA";
GRANT CREATE ANY TABLE TO "UOG_MIGRA";
GRANT "DBA" TO "UOG_MIGRA";
GRANT "SELECT_CATALOG_ROLE" TO "UOG_MIGRA";
GRANT "EXECUTE_CATALOG_ROLE" TO "UOG_MIGRA";
GRANT "EXP_FULL_DATABASE" TO "UOG_MIGRA";
GRANT EXECUTE ON UTL_FILE TO UOG_MIGRA;

'+ en destino.'
GRANT ALTER ANY INDEX TO "UOG_MIGRA";
exec dbms_streams_auth.grant_admin_privilege('UOG_MIGRA');

-- Validamos el origen
SQL>select force_logging, SUPPLEMENTAL_LOG_DATA_MIN from v$database;
/*
FOR SUPPLEME
--- --------
NO  YES
*/
SELECT LOGGING, COUNT(*) FROM DBA_TABLES WHERE OWNER='UEORA0' GROUP BY LOGGING;
/*
LOG   COUNT(*)
--- ----------
NO           6
YES        122
*/

'nota: Al haber tables en NOLOGGING procedemos a activarlo'
ALTER DATABASE FORCE LOGGING;

-- Sacamos el listado de tablas a replicar

SELECT 'TABLE MOGU.'||TABLE_NAME||';' FROM DBA_TABLES WHERE OWNER='UEORA0' ORDER BY 1;
cat >/products/ogg/dirprm/TABLAS_PUE0_REPLICANDO.oby

-- Add trandata info
SELECT 'ADD TRANDATA MOGU.'||TABLE_NAME FROM DBA_TABLES WHERE OWNER='UEORA0' ORDER BY 1;
cat >/products/ogg/dirprm/add_trandata_tables.oby

ggsci> DBLOGIN USERID UOG_MIGRA@MOGU_ORIGEN, password temporal
ggsci> Obey /products/ogg/dirprm/add_trandata_tables.oby
ggsci> INFO TRANDATA MOGU.*			<<< Para validar si alguna se ha quedado disable

'nota: posibles errores'
/*
2016-03-17 09:26:33  WARNING OGG-00706  Failed to add supplemental log group on table UEORA0.UEUSUANO due to ORA-02257: nmero mximo de columnas excedido
2016-03-17 09:26:52  WARNING OGG-00706  Failed to add supplemental log group on table UEORA0.UE_CARGAMASIVA_AO due to ORA-02257: nmero mximo de columnas excedido
*/

-- Configuramos el extractor

mkdir /apps/ogg_trail/ue/migra

GGSCI (tehca03a) 2> edit params EXTMIG
EXTRACT EXTMIG
-- DB environment settings
SETENV (ORACLE_HOME = /ora00/app/oracle/product/9.2.0.8)
SETENV (ORACLE_SID = DBORIGEN)
SETENV (NLS_LANG = spanish_spain.WE8ISO8859P1)
USERID UOG_MIGRA@MOGU_ORIGEN, password temporal
-- Local trail info
EXTTRAIL /apps/ogg_trail/ue/migra/mi
REPORTCOUNT EVERY 10 MINUTES, RATE
-- List of tables
GETTRUNCATES
OBEY /products/ogg/dirprm/TABLAS_PUE0_REPLICANDO.oby


GGSCI (IAB12050) 3> edit param PMPMIG

-- NLS_LANG set equal to  CHARACTERSET of CPRE database (UTF8)
SETENV (ORACLE_HOME = /ora00/app/oracle/product/9.2.0.8)
SETENV (ORACLE_SID = DBORIGEN)
SETENV (NLS_LANG = spanish_spain.WE8ISO8859P1)
EXTRACT PMPMIG
RMTHOST mogube12c, MGRPORT 7810
RMTTRAIL /dbfs_common/DBFS/pue000/ue
USERID UOG_MIGRA@MOGU_ORIGEN, password temporal
GETTRUNCATES
OBEY /products/ogg/dirprm/TABLAS_PUE0_REPLICANDO.oby

-- Creamos el extractores

ADD EXTRACT  EXTMIG, TRANLOG, begin now
ADD EXTTRAIL /apps/ogg_trail/ue/migra/mi  EXTRACT EXTMIG, MEGABYTES 500

ADD EXTRACT PMPMIG, EXTTRAILSOURCE /apps/ogg_trail/ue/migra/mi
ADD RMTTRAIL /dbfs_common/DBFS/pue000/ue, EXTRACT PMPMIG, MEGABYTES 500

START EXTRACT EXTMIG
START EXTRACT PMPMIG

-- Configuramos el purgado de trails
EDIT PARMAS MGR
PURGEOLDEXTRACTS  /apps/ogg_trail/ue/migra/* , USECHECKPOINTS			*/
REFRESH MGR

-- Creamos la tabla de check point
GGSCI> DBLOGIN USERID UOG_MIGRA@MOGU_ORIGEN, PASSWORD temporal
GGSCI> ADD CHECKPOINTTABLE UOG_MIGRA.CHKPTAB

-------------------------------------
-- Configuracion en destino
-------------------------------------
-- Creamos el usuario necesario para Golden Gate
'nota: Igual que en origen añadiendo los permisos:'

GRANT ALTER ANY INDEX TO "UOG_MIGRA";
exec dbms_streams_auth.grant_admin_privilege('UOG_MIGRA');

-- Configuracion del replicador
MOGU_DESTINO =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mogubedb12c)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDESTINO)
    )
  )
  
sqlplus UOG_MIGRA/temporal@MOGU_ORIGEN

SELECT 'MAP MOGU.'||TABLE_NAME||' , TARGET  MOGU.'||TABLE_NAME||';' FROM DBA_TABLES WHERE OWNER='MOGU' ORDER BY TABLE_NAME;
cat >/u01/ogg_12/dirprm/TABLAS_PUE_REPLICANDO.oby

GGSCI (tehol042) 1>  edit params RPTMIG
REPLICAT RPTMIG
USERID UOG_MIGRA@MOGU_DESTINO, PASSWORD temporal
ASSUMETARGETDEFS
DISCARDFILE ./dirout/dscrpje0.dsc, APPEND
GETTRUNCATES
HANDLECOLLISIONS
OBEY /u01/ogg_12/dirprm/TABLAS_PUE_REPLICANDO.oby

'nota: Si la carga inicial se ha realizado con expdp/impdp HANDLECOLLISIONS sera necesario
hasta alcanzar la fecha en la que termino el import'

-- Configuramos el purgado de trails

PURGEOLDEXTRACTS  /dbfs_common/DBFS/pue000/ue* , USECHECKPOINTS
REFRESH MGR

-- Creamos el replicador 
ADD REPLICAT RPTMIG, EXTTRAIL /dbfs_common/DBFS/pue000/ue, checkpointtable UOG_MIGRA.CHKPTAB
ALTER REPLICAT RPTMIG, BEGIN 2016-03-18 12:31:00
START REPLICAT RPTMIG
/* -- Comienzo y fin de la carga inicial
Export: Release 9.2.0.8.0 - Production on Vie Mar 18 12:31:51 2016
Mar 18 21:08 nohup.out
*/


GGSCI (tehol042.mgmt.dc.es.telefonica) 66> info RPTMIG
/*
REPLICAT   RPTMIG    Last Started 2016-03-19 22:50   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:04 ago)
Process ID           1253
Log Read Checkpoint  File /dbfs_common/DBFS/pue000/ue000073
                     2016-03-19 23:10:26.999889  RBA 389769566
*/
-----------------------------------
-- Cosas a tener en cuenta
-----------------------------------
-- Disable referencial constraint en destino (FK)

/*
OWNER                          STATUS     COUNT(*)
------------------------------ -------- ----------
UEORA0                         ENABLED         108
*/

spool disable_rconstraints.sql
SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' DISABLE CONSTRAINT '||CONSTRAINT_NAME||';' FROM DBA_CONSTRAINTS 
WHERE OWNER IN ('BAORA0','DBL_UOG_UE1','UE','UEORA0','ULACASOU','UOG_UE1','USB0001','USB0219','USB0490','USS0194','UT02184') AND CONSTRAINT_TYPE='R';
spool off;
/

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

Blog de WordPress.com.

A %d blogueros les gusta esto: