[OCI-OGG] Auto start Ogg en Linux


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
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.