lab

Lab — Journaling en IBM i (base de HA y CDC)

Configurar journaling sobre una biblioteca y archivos físicos. Es la base para Quick EDD y Connect CDC: sin journaling no hay replicación.

PreventaSoporte SeniorDesarrollo

Lab — Journaling en IBM i (base de HA y CDC)

Objetivo

Crear un journal y receptor, journalizar archivos físicos, generar cambios y verificar que se asentaron. Este es el prerequisito invisible de Quick EDD y Connect CDC.

Tiempo estimado

60 minutos (configuración 30 min + ejercicio 30 min).

Prerequisitos

Conceptos previos

Paso 1 — Crear la biblioteca de prueba

CRTLIB LIB(LABJRN) TEXT('Lab journaling')

Paso 2 — Crear el journal receiver

CRTJRNRCV JRNRCV(LABJRN/RCV0001) THRESHOLD(100000) TEXT('Receiver inicial')

THRESHOLD está en KB; con 100000 (100 MB) es suficiente para el lab.

Paso 3 — Crear el journal

CRTJRN JRN(LABJRN/JRNLAB) JRNRCV(LABJRN/RCV0001) +
       MNGRCV(*SYSTEM) DLTRCV(*NO) +
       TEXT('Journal del lab')

MNGRCV(*SYSTEM) indica que el OS gestiona el cambio de receiver cuando llega al threshold. DLTRCV(*NO) evita que borre receivers viejos automáticamente (en producción se decide según política).

Paso 4 — Crear un archivo físico de prueba

CRTPF FILE(LABJRN/CLIENTES) RCDLEN(80) TEXT('Tabla de clientes lab')

Ahora sin journaling. Antes de iniciar replicación con Quick EDD o CDC con Connect, hay que cambiarlo.

Paso 5 — Iniciar journaling sobre el archivo

STRJRNPF FILE(LABJRN/CLIENTES) JRN(LABJRN/JRNLAB) +
         IMAGES(*BOTH) OMTJRNE(*NONE)

IMAGES(*BOTH) registra imagen antes y después del cambio. Connect CDC requiere *AFTER o *BOTH; con *BEFORE solo no opera.

Paso 6 — Generar cambios

Insertar registros con SQL:

INSERT INTO LABJRN.CLIENTES VALUES('CLI001 - JUAN PEREZ                                                        ');
INSERT INTO LABJRN.CLIENTES VALUES('CLI002 - MARIA LOPEZ                                                       ');
UPDATE LABJRN.CLIENTES SET CLIENTES = 'CLI001 - JUAN P.                                                          ' WHERE SUBSTR(CLIENTES,1,6) = 'CLI001';
DELETE FROM LABJRN.CLIENTES WHERE SUBSTR(CLIENTES,1,6) = 'CLI002';

Paso 7 — Verificar las entradas en el journal

DSPJRN JRN(LABJRN/JRNLAB)

Deben aparecer entradas tipo PT (insert), UB/UP (update before/after), DL (delete). Si las entradas existen, el journaling está operativo y la tabla está lista para replicación con Quick EDD o captura con Connect CDC.

Paso 8 — Detener journaling (cleanup del lab)

ENDJRNPF FILE(LABJRN/CLIENTES)

Paso 9 — Cleanup completo (opcional)

DLTF FILE(LABJRN/CLIENTES)
DLTJRN JRN(LABJRN/JRNLAB)
DLTJRNRCV JRNRCV(LABJRN/RCV0001) DLTOPT(*IGNINQMSG)
DLTLIB LIB(LABJRN)

Validación esperada

Errores comunes y cómo resolverlos

| Síntoma | Causa probable | Solución | |---|---|---| | CPF7028 "Journal not found" | Biblioteca no en *LIBL o nombre mal | Calificar LIB/JRN o usar ADDLIBLE LABJRN | | CPF6940 "Authority insufficient" | Perfil sin autoridad sobre objeto/journal | GRTOBJAUT o usar perfil con *ALLOBJ | | CPF7050 "Journal receiver damaged" | Threshold muy bajo o disco saturado | Aumentar threshold y revisar WRKDSKSTS |

Para Connect CDC

Para usar este journal con Connect CDC, registrar la tabla CLIENTES en el scope del pipeline. La imagen *BOTH (paso 5) es obligatoria. Si solo necesitás cambios "after image" para CDC, podés usar IMAGES(*AFTER). (Fuente: Precisely Help — Set up journaling)

Para Quick EDD

Quick EDD también lee este journal. La diferencia conceptual: Quick EDD replica objetos (no solo cambios de DB), por lo que su scope incluye más allá de las tablas journaled — pero los archivos productivos deben estar journaled para que la replicación tenga commit consistency.

Recursos