Oracle Live

02/04/2016

Golden Gate – Administración

Filed under: Golden Gate — mogukiller @ 1:41 am

Este post es un pequeño manual de instalación, configuración y administracion de Golden Gate.

Version: v11.2.1.0.11
Version: v12.1.2.1.0
-- Prerrequisitos
-- Desinstalacion
-- Creamos un alias para logarnos
-- Instalacion
-- Actualizamos a integrated capture
-- Añadimos un extractor en modo integrado
-- Configuracion manager
-- Mapeo de columnas
-- Parametros adicionales

-----------------------------
-- Prerrequisitos
-----------------------------
'
FS: 100M para los binarios.
TEMP Files:	10G	dirtmp
trail file:	[log volume en una hora] x [horas de parada] x 0.4
'
select trunc(COMPLETION_TIME),count(*)*100 size_in_MB from v$archived_log group by trunc(COMPLETION_TIME);

---------------------------
-- Instalacion
---------------------------
'URL: p17323201_1121011_Linux-x86-64.zip (Patch Set 11)'

-- Variables de entorno

export ORACLE_HOME=/export/app/oracle/product/11.2.0.4
export ORACLE_SID=PRUEBA
'nota: asegurar la las librerias de Oracle estan linkadas'
export LD_LIBRARY_PATH=/export/app/oracle/product/11.2.0.4/lib:/export/app/oracle/ggs
export PATH=$GGS_HOME:$PATH
/*
16:04:00 PRUEBA SQL>SELECT * from NLS_DATABASE_PARAMETERS WHERE parameter ='NLS_CHARACTERSET';

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET               WE8MSWIN1252
*/
export NLS_LANG=.WE8MSWIN1252

-- Instalacion

> cd /export/app/oracle/ggs
> tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
> ggsci

'nota: no es necesario para la version 12c'
GGSCI (mogubedb11n1) 1> CREATE SUBDIRS   
/*
Creating subdirectories under current directory /export/app/oracle/ggs

Parameter files                /export/app/oracle/ggs/dirprm: already exists
Report files                   /export/app/oracle/ggs/dirrpt: created
Checkpoint files               /export/app/oracle/ggs/dirchk: created
Process status files           /export/app/oracle/ggs/dirpcs: created
SQL script files               /export/app/oracle/ggs/dirsql: created
Database definitions files     /export/app/oracle/ggs/dirdef: created
Extract data files             /export/app/oracle/ggs/dirdat: created
Temporary files                /export/app/oracle/ggs/dirtmp: created
Stdout files                   /export/app/oracle/ggs/dirout: created
*/

-- Creamos el esquema para goldengate

CREATE TABLESPACE GGS_TS DATAFILE '/export/oracle/app/oracle/oradata/PRUEBA/GGS_TS_dat01.dbf' SIZE 200M AUTOEXTEND ON;

CREATE USER GGS_OWNER IDENTIFIED BY temporal
DEFAULT TABLESPACE GGS_TS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION, ALTER SESSION TO GGS_OWNER;
GRANT ALTER SYSTEM TO GGS_OWNER;
GRANT CONNECT, RESOURCE TO GGS_OWNER;
GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO GGS_OWNER;
GRANT FLASHBACK ANY TABLE TO GGS_OWNER;
GRANT CREATE ANY TABLE TO GGS_OWNER;
GRANT INSERT ANY TABLE TO GGS_OWNER;
GRANT UPDATE ANY TABLE TO GGS_OWNER;
GRANT DELETE ANY TABLE TO GGS_OWNER;
GRANT CREATE TABLE TO GGS_OWNER;
GRANT EXECUTE ON DBMS_FLASHBACK TO GGS_OWNER;
GRANT EXECUTE ON UTL_FILE TO GGS_OWNER;
GRANT DROP ANY TABLE TO GGS_OWNER;
GRANT LOCK ANY TABLE TO GGS_OWNER;
GRANT SELECT ANY TRANSACTION TO GGS_OWNER;
grant SELECT on dba_clusters to GGS_OWNER;
grant SELECT on V_$DATABASE to GGS_OWNER;

'nota: Para habilitar la recuperacion de transacciones almacenadas en los archiver hacemos:'
SQL> exec dbms_goldengate_auth.grant_admin_privilege('GGS_OWNER');

-- Asociamos el esquema a goldengate.
'nota: En origen / destino.'
> ggsci
GGSCI > EDIT PARAMS ./GLOBALS
GGSCHEMA GGS_OWNER

--------------------------------------
-- Support para replicar secuencias
--------------------------------------
'nota: En origen / destino'
cd $GGS_HOME
>sqlplus / as sysdba
09:57:58 PRUEBA SQL>@sequence.sql
/*
Please enter the name of a schema for the GoldenGate database objects:
GGS_OWNER
Setting schema name to GGS_OWNER

UPDATE_SEQUENCE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

GETSEQFLUSH

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

SEQTRACE

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

REPLICATE_SEQUENCE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

STATUS OF SEQUENCE SUPPORT
--------------------------------------------------------------
SUCCESSFUL installation of Oracle Sequence Replication support
*/

alter table sys.seq$ add supplemental log data (primary key) columns;

------------------------------------
-- Suport DDL 
------------------------------------
'nota: En origen / destino'
> cd $GGS_HOME
> sqlplus / as sysdba
10:48:09 PRUEBA SQL>@marker_setup.sql
/*
Marker setup script

You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:GGS_OWNER


Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGS_OWNER

MARKER TABLE
-------------------------------
OK

MARKER SEQUENCE
-------------------------------
OK

Script complete.
*/

10:50:26 PRUEBA SQL>@ddl_setup.sql
/* SALIDA
Oracle GoldenGate DDL Replication setup script

Verifying that current user has privileges to install DDL Replication...

You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:GGS_OWNER

Working, please wait ...
Spooling to file ddl_setup_spool.txt

Checking for sessions that are holding locks on Oracle Golden Gate metadata tables ...

Check complete.

Using GGS_OWNER as a Oracle GoldenGate schema name.

Working, please wait ...

DDL replication setup script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGS_OWNER

CLEAR_TRACE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

CREATE_TRACE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

TRACE_PUT_LINE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

INITIAL_SETUP STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDLVERSIONSPECIFIC PACKAGE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDLREPLICATION PACKAGE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDLREPLICATION PACKAGE BODY STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDL IGNORE TABLE
-----------------------------------
OK

DDL IGNORE LOG TABLE
-----------------------------------
OK

DDLAUX  PACKAGE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDLAUX PACKAGE BODY STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

SYS.DDLCTXINFO  PACKAGE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

SYS.DDLCTXINFO  PACKAGE BODY STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDL HISTORY TABLE
-----------------------------------
OK

DDL HISTORY TABLE(1)
-----------------------------------
OK

DDL DUMP TABLES
-----------------------------------
OK

DDL DUMP COLUMNS
-----------------------------------
OK

DDL DUMP LOG GROUPS
-----------------------------------
OK

DDL DUMP PARTITIONS
-----------------------------------
OK

DDL DUMP PRIMARY KEYS
-----------------------------------
OK

DDL SEQUENCE
-----------------------------------
OK

GGS_TEMP_COLS
-----------------------------------
OK

GGS_TEMP_UK
-----------------------------------
OK

DDL TRIGGER CODE STATUS:

Line/pos   Error
---------- -----------------------------------------------------------------
No errors  No errors

DDL TRIGGER INSTALL STATUS
-----------------------------------
OK

DDL TRIGGER RUNNING STATUS
-----------------------------------
ENABLED

STAYMETADATA IN TRIGGER
-----------------------------------
OFF

DDL TRIGGER SQL TRACING
-----------------------------------
0

DDL TRIGGER TRACE LEVEL
-----------------------------------
0

LOCATION OF DDL TRACE FILE
------------------------------------------------------------------------------------------------------------------------
/export/oracle/app/oracle/diag/rdbms/prueba/PRUEBA/trace/ggs_ddl_trace.log

Analyzing installation status...


STATUS OF DDL REPLICATION
------------------------------------------------------------------------------------------------------------------------
SUCCESSFUL installation of DDL Replication software components

Script complete.

*/

10:52:46 PRUEBA SQL>@role_setup.sql
/* SALIDA
GGS Role setup script

This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)

You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:GGS_OWNER
Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.


Role setup script complete

Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:

GRANT GGS_GGSUSER_ROLE TO <loggedUser>

where <loggedUser> is the user assigned to the GoldenGate processes.
*/

10:53:56 PRUEBA SQL>GRANT GGS_GGSUSER_ROLE TO GGS_OWNER;
/*
Grant succeeded.
*/

10:56:30 PRUEBA SQL>@ddl_enable.sql
/*
Trigger altered.
*/

10:57:43 PRUEBA SQL>@ddl_pin GGS_OWNER
/*
PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.
*/

---------------------------
-- Creamos la instancia
---------------------------
'nota: origen / destino'
> cd $GGS_HOME
> ./ggsci

GGSCI (mogubedb11n1) 1> EDIT PARAMS MGR 
PORT 7809

---------------------------------
-- Configuramos los extractores
---------------------------------

GGSCI (mogubedb11n1) 1> EDIT PARAMS E_SOE
EXTRACT E_SOE
SETENV (ORACLE_HOME = "/export/app/oracle/product/11.2.0.4")	<<<<< -- En el caso de no estar definido en el profile
SETENV (ORACLE_SID = "PRUEBA")									<<<<<
USERID GGS_OWNER, PASSWORD temporal
EXTTRAIL /export/app/oracle/ggs/dirdat/lt
GETTRUNCATES
DDL INCLUDE ALL									<<<<<< 'Te sincroniza las operaciones de DDL'
TABLE SOE.*;
SEQUENCE SOE.*;

'nota: v.12. Configuramos el extractor para que captura de forma integrada'
GGSCI (mogubedb11n1) 1>  EDIT PARAMS E_SOE
EXTRACT E_SOE
USERIDALIAS GGS_OWNER
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
DDL INCLUDE MAPPED
ENCRYPTTRAIL AES192
EXTTRAIL /export/app/oracle/ggs/dirdat/lt
SEQUENCE soe.*
TABLE soe.*;

'nota: En entornos de ASM para que pueda leer de los redolog hay configurar'
TRANLOGOPTIONS DBLOGREADER

--------------------------------
-- Configuramos el pump
--------------------------------

GGSCI (mogubedb11n1) 1> EDIT PARAMS P_SOE
EXTRACT P_SOE
USERID GGS_OWNER, PASSWORD temporal
RMTHOST mogubedb11n2, MGRPORT 7809
PASSTHRU										<<<<< 'Indicamos que los nombres de origen y destino son iguales'
RMTTRAIL /export/app/oracle/ggs/dirdat/rt
REPORTCOUNT EVERY 5 MINUTES, RATE				<<<<<< Me saca un reporte en el log
GETTRUNCATES
TABLE SOE.*;
SEQUENCE SOE.*;

'Note- the parameter PASSTHRU signifies the mode being used for the Data Pump which means that the names
 of the source and target objects are identical and no column mapping or filtering is being performed here.'
 
GGSCI (mogubedb11n1) 1>  EDIT PARAMS P_SOE
EXTRACT P_SOE
USERID GGS_OWNER, PASSWORD temporal
RMTHOST mogubedb11n2, MGRPORT 7809
RMTTRAIL /export/app/oracle/ggs/dirdat/rt
TABLE SOE.*;
SEQUENCE SOE.*;

--------------------------------
-- Configuramos el replicant
--------------------------------

'nota: Para configurar el replicant es necesario configurar una tabla de checkpoint'

GGSCI (mogubedb11n2) 3> DBLOGIN USERID GGS_OWNER, PASSWORD temporal
GGSCI (mogubedb11n2) 3> DBLOGIN USERID GGS_OWNER@PRUEBA_N2, PASSWORD temporal

/*
Successfully logged into database.
*/

GGSCI (mogubedb11n2) 4> ADD CHECKPOINTTABLE GGS_OWNER.checkpoint
/*
Successfully created checkpoint table GGS_OWNER.checkpoint_rtest.
*/

> EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE GGS_OWNER.checkpoint

GGSCI (mogubedb11n2) 4> EDIT PARAMS R_SOE
REPLICAT R_SOE
USERID GGS_OWNER, PASSWORD temporal
DBOPTIONS SUPPRESSTRIGGERS, DEFERREFCONST
ASSUMETARGETDEFS
GETTRUNCATES
DDL INCLUDE ALL
REPORTCOUNT EVERY 5 MINUTES, RATE		<<<<<< Me saca un reporte en el log
DISCARDFILE /export/app/oracle/ggs/dirdat/disc, APPEND
MAP SOE.*, TARGET SOE.*;

'nota: v12'
GGSCI> EDIT PARAMS R_SOE
REPLICAT R_SOE
USERIDALIAS GGS_OWNER
ASSUMETARGETDEFS
MAP SOE.*, TARGET SOE.*;

------------------------------------
-- Preparamos la base de datos
------------------------------------

13:18:21 PRUEBA SQL>ALTER SYSTEM SET enable_goldengate_replication=TRUE scope=both sid='*';
/*
System altered.
*/

'nota: Oracle recomienda que la base de datos este en force login mode'
13:03:17 PRUEBA SQL>SELECT supplemental_log_data_min, force_logging FROM v$database;
/*
SUPPLEME FOR
-------- ---
YES      YES
*/

/* -- Para configurarlo
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SWITCH LOGFILE;
*/
-- En origen
'nota: Si queremos habilitar la replicacion de DDL es necesario configurar supplemental login para el esquema'
GGSCI (mogubedb11n1) 4> ADD SCHEMATRANDATA SOE
/*
2015-10-05 13:18:56  INFO    OGG-01788  SCHEMATRANDATA has been added on schema SOE.
*/

-- Registramos los procesos

--extract
ADD EXTRACT E_SOE, TRANLOG, BEGIN NOW
ADD EXTTRAIL /export/app/oracle/ggs/dirdat/lt , EXTRACT E_SOE
--datapump
ADD EXTRACT P_SOE, EXTTRAILSOURCE /export/app/oracle/ggs/dirdat/lt
ADD RMTTRAIL /export/app/oracle/ggs/dirdat/rt, EXTRACT P_SOE
--replicat
ADD REPLICAT R_SOE, EXTTRAIL /export/app/oracle/ggs/dirdat/rt, checkpointtable GGS_OWNER.checkpoint
'nota: v12'
ADD REPLICAT R_SOE, EXTTRAIL /export/app/oracle/ggs/dirdat/rt

--Arrancamos los procesos

-- Origen
START MANAGER
START EXTRACT E_SOE
START EXTRACT P_SOE

-- Destino
START MANAGER
START REP R_SOE
START REP R_SOE, AFTERCSN 15528161

-------------------------------------
-- Actualizamos a integrated capture
-------------------------------------

GGSCI> STOP EXTRACT E_SOE
GGSCI> DBLOGIN USERID GGS_OWNER, PASSWORD temporal
/*
Successfully logged into database.
*/
GGSCI (mogubedb11n1) 12> REGISTER EXTRACT E_SOE DATABASE
/*
2015-10-07 10:55:07  INFO    OGG-02003  Extract E_SOE successfully registered with database at SCN 16021230.
*/
GGSCI>	ALTER EXTRACT E_SOE TRANLOG BEGIN NOW
GGSCI>	START EXTRACT E_SOE
GGSCI>	INFO EXTRACT E_SOE
/*
EXTRACT    E_SOE     Last Started 2015-10-07 10:58   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:03 ago)
Log Read Checkpoint  Oracle Redo Logs						<<<<<<<<	Aqui indicamos que estamos en modo clasico
                     2015-10-07 10:58:59  Seqno 476, RBA 5617152
                     SCN 0.16031744 (16031744)
*/
GGSCI>	STOP EXTRACT E_SOE
GGSCI>	INFO E_SOE UPGRADE
/*
	Extract E_SOE is ready to be upgraded to integrated capture.
*/
GGSCI>	ALTER EXTRACT E_SOE , UPGRADE INTEGRATED TRANLOG
/*
Extract E_SOE successfully upgraded to integrated capture.
*/
GGSCI>	START EXTRACT E_SOE

GGSCI>  INFO EXTRACT e_soe
/*
EXTRACT    E_SOE     Initialized   2015-10-07 10:58   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:01:26 ago)
Log Read Checkpoint  Oracle Integrated Redo Logs				<<<<<<<<	Aqui indica que ya esta en modo integrado
                     2015-10-07 11:02:04
                     SCN 0.16032239 (16032239)
*/
 
SQL>select CAPTURE_NAME, QUEUE_NAME, STATUS from DBA_CAPTURE;
/*
CAPTURE_NAME                   QUEUE_NAME                     STATUS
------------------------------ ------------------------------ --------
OGG$CAP_E_SOE                  OGG$Q_E_SOE                    ENABLED
*/

------------------------------------------
-- Añadimos un extractor en modo integrado
------------------------------------------
GGSCI> EDIT PARAMS E_IMPORT
/*
EXTRACT E_IMPORT
USERID GGS_OWNER, PASSWORD temporal
EXTTRAIL /export/app/oracle/ggs/dirdat/aa
LOGALLSUPCOLS
DDL INCLUDE MAPPED
TABLE USER_IMPORT.*;
*/

GGSCI> DBLOGIN USERID GGS_OWNER, PASSWORD temporal
GGSCI> REGISTER EXTRACT E_IMPORT DATABASE
GGSCI> ADD EXTRACT E_IMPORT, INTEGRATED TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL /export/app/oracle/ggs/dirdat/aa , EXTRACT E_IMPORT
GGSCI> START EXTRACT E_IMPORT
GGSCI> INFO EXTRACT E_IMPORT
/*
EXTRACT    E_IMPORT  Last Started 2015-10-30 10:45   Status RUNNING
Checkpoint Lag       00:02:35 (updated 00:00:09 ago)
Process ID           6854
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2015-10-30 10:42:37
                     SCN 0.0 (0)
*/
----------------------------------
-- Desinstalacion
----------------------------------

-- Origen y destino

cd $GGS_HOME
> ./ggsci
GGSCI> STOP EXTRACT *					<<<< Origen
GGSCI> STOP REPLICAT *					<<<< Destino
GGSCI> STOP MGR
GGSCI (mogubedb11n1) 1> dblogin userid ggs_owner password temporal
GGSCI (mogubedb11n1) 2> delete extract *		<<<< Origen
/*
Are you sure you want to delete all groups? yes
Deleted EXTRACT E_SOE.
Deleted EXTRACT P_SOE.
*/
GGSCI (mogubedb11n2) 2> delete replicat *		<<<< Origen
/*
Are you sure you want to delete all groups? y
Deleted REPLICAT R_SOE.
*/

-- Borramos el directorio $GGS_HOME
> rm -rf $GGS_HOME

-- Deshabilitamos el trigger
13:03:27 PRUEBA SQL>ALTER TRIGGER SYS.GGS_DDL_TRIGGER_BEFORE DISABLE;

-- Borramos el usuario de base de datos
12:57:47 PRUEBA SQL>DROP USER GGS_OWNER CASCADE;

'nota:
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
Solucion: Truncar todas las tablas del usuario.
SELECT 'TRUNCATE TABLE GGS_OWNER.'||TABLE_NAME||';' FROM DBA_TABLES WHERE OWNER='GGS_OWNER';
'
-----------------------------------------
-- Creamos un alias para logarnos
-----------------------------------------

GGSCI (mogubedb11n1) 2> ADD CREDENTIALSTORE
/*
Credential store created in ./dircrd/.
*/

GGSCI (mogubedb11n1) 3> ALTER CREDENTIALSTORE ADD USER GGS_OWNER ALIAS GGS_OWNER
Password: ********
/*
Credential store in ./dircrd/ altered.
*/

-----------------------------------------
-- Configuracion manager
-----------------------------------------
DYNAMICPORTLIST 8500-8650
AUTORESTART REPLICAT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
CHECKMINUTES 2
SYSLOG ERROR

-----------------------------------------
-- Reseteo de estadisticas
-----------------------------------------
De cara a una migracion es importante comprobar que no existen nuevas transacciones desde que se baja el aplicativo

STATS REPLICAT extecg, RESEST
STATS REPLICAT extecg, LATEST      <<<<< Visualiza las estadisticas desde el ultimo reset


-----------------------------------------
-- Mapeo de columnas
-----------------------------------------

MAP U1ORA0.U1MENSMO , TARGET U1ORA0.U1MENSMO,
SQLEXEC (ID U1R,
QUERY  " select SUBSTRB(:vclob, 1, 4000) valorc from dual", PARAMS (vclob = MENS_OB_CUERPO_MENSAJE), MAXVARCHARLEN 4000),
ColMap (USEDEFAULTS, MENS_OB_CUERPO_MENSAJE = @GETVAL (U1R.valorc) );

----------------------------------------
-- Parametros adicionales
----------------------------------------

-- Cuando el replicador se abenda por que encuentra un regitro hijo de fks apuntando a esa tabla. Con este parámetro le decimos al replicador que haga la validación al final de la transacción.

DBOPTIONS DEFERREFCONST

-- Cuando los redolog se encuentran en ASM.

TRANLOGOPTIONS DBLOGREADER


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: