[OCI-OGG] Auto start Ogg en Linux

David SanzDavid Sanz
3 min read

Vamos a definir un servicio para nuestro golden gate arranque en linux de manera automática cuando el sistema se reinicia. Para ello necesitamos definir lo siguiente:

  • Ficheros de parámetros para golden gate.

  • Sh para gestionar el arranque/parada del golden gate.

  • Un enlace simbólico para el binario ggsci.

  • El servicio de linux para golden gate.

El primer paso que vamos hacer es definir los ficheros de parámetros que serán invocados para arrancar/parar nuestro golden gate:

  • start_ogg
start manager
exit

Aquí solo arrancamos el manager, porque especificamos en el manager que arranquen los procesos al arrancar el manager (AUTOSTART ER *) o reintentar en caso de algún fallo (AUTORESTART ER *, RETRIES 4, WAITMINUTES 2), seria así:

PORT 7809
AUTOSTART ER *
AUTORESTART ER *, RETRIES 4, WAITMINUTES 2
  • stop_ogg
stop extract *
stop replicat *
stop manager !
exit

El siguiente paso que vamos hacer es definir un shell script para gestionar el arranque/parada de nuestro golden gate. Este script recibirá un parámetro de entrada y esperara los siguientes valores:

  • 1 (Arranque)

  • 0 (Parada)

Este será nuestro script:

#!/bin/bash

. /home/ogg/.bashrc

function ogg_start {
  INFO=`$OGG_HOME/ggsci PARAMFILE $OGG_HOME/start_ogg`
  echo ${INFO}
}


function ogg_stop {
  INFO=`$OGG_HOME/ggsci PARAMFILE $OGG_HOME/stop_ogg`
  echo ${INFO}
}


case $1 in
  "1" )
    ogg_start
    ;;
  "0" )
    ogg_stop
    ;;
  * )
    ;;
esac

El siguiente paso es definir el enlace simbólico para el binario de nuestro golden gate:

[root@system]# ln -s /ogg/19.1/ggsci /usr/local/bin/ggsci
[root@system]# ls -lstra /usr/local/bin/ggsci

Y por último definimos el fichero de configuración del servicio, para ello tendremos que ir al directorio /etc/systemd/system como usuario root.

El contenido del fichero de configuración tendrá lo siguiente:

[Unit]
Description=OGG
[Service]
Type=forking
RemainAfterExit=yes
Environment=PATH=/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/ogg/19.1
WorkingDirectory=/home/ogg/scripts
User=ogg
ExecStart=/home/ogg/scripts/srv_ogg.sh 1
ExecStop=/home/ogg/scripts/srv_ogg.sh 0
[Install]
WantedBy=multi-user.target

Ejecutamos los siguientes comandos:

  • systemctl daemon-reload para recargar la configuración del demonio systemd. Es necesario realizarlo para asegurarnos que systemctl sea consciente del servicio que vamos a crear.

  • systemctl enable iniciamos el servicio.

  • systemctl restart reiniciar el servicio.

  • systemctl status para comprobar el estado del servicio.

[root@system]# systemctl daemon-reload
[root@system]# systemctl enable ogg.service
[root@system]# systemctl restart ogg.service
[root@system]# systemctl status ogg
● ogg.service - OGG
   Loaded: loaded (/etc/systemd/system/ogg.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2025-03-02 01:01:33 CET; 57s ago
  Process: 13521 ExecStop=/home/ogg/scripts/srv_ogg.sh 0 (code=exited, status=0/SUCCESS)
  Process: 17592 ExecStart=/home/ogg/scripts/srv_ogg.sh 1 (code=exited, status=0/SUCCESS)
 Main PID: 17617 (mgr)
    Tasks: 116 (limit: 79998)
   Memory: 4.2G
   CGroup: /system.slice/ogg.service
           ├─17617 ./mgr PARAMFILE /ogg/19.1/dirprm/mgr.prm REPORTFILE /ogg/19.1/dirrpt/MGR.rpt PROCESSID MGR
...
...
Mar 02 01:01:27 sbngecmprod69 systemd[1]: Starting OGG...
Mar 02 01:01:33 sbngecmprod69 systemd[1]: Started OGG.

Reiniciamos y comprobamos que OGG ha arrancado de manera automática

Revisamos el servicio

[root@sbngecmprod69 ~]# last reboot | head -1
reboot   system boot  5.4.17-2136.326. Sun Mar  2 12:16   still running
wtmp begins Tue Oct  1 11:47:00 2024
[root@sbngecmprod69 ~]# systemctl status ogg
● ogg.service - OGG
   Loaded: loaded (/etc/systemd/system/ogg.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2025-03-02 12:16:38 CET; 20s ago
  Process: 1807 ExecStart=/home/ogg/scripts/srv_ogg.sh 1 (code=exited, status=0/SUCCESS)
 Main PID: 5935 (mgr)
    Tasks: 4 (limit: 820237)
   Memory: 209.9M
   CGroup: /system.slice/ogg.service
           └─5935 ./mgr PARAMFILE /ogg/19.1/dirprm/mgr.prm REPORTFILE /ogg/19.1/dirrpt/MGR.rpt PROCESSID MGR

Mar 02 12:16:25 sbngecmprod69 systemd[1]: Starting OGG...
Mar 02 12:16:38 sbngecmprod69 systemd[1]: Started OGG.

Listo. ¡Espero que os sirva!

Dejo por aquí los scripts utilizados

https://github.com/dbaenlasombra/srvc-ogg

0
Subscribe to my newsletter

Read articles from David Sanz directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

David Sanz
David Sanz

Soy desarrollador, Analista, DBA Oracle y Arquitecto OCI, certificado en OCI Migration and Integration Certified Professional y Certified Architect Associate con más de 15 años de experiencia en plataformas Oracle además de especialista en temas de rendimiento.