# [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**
    

```bash
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í:

```bash
PORT 7809
AUTOSTART ER *
AUTORESTART ER *, RETRIES 4, WAITMINUTES 2
```

* **stop\_ogg**
    

```bash
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:

```bash
#!/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:

```bash
[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:

```bash
[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.
    

```bash
[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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1740875959620/971cc762-af35-4736-9876-ee86362a76a0.png align="center")

Revisamos el servicio

```bash
[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](https://github.com/dbaenlasombra/srvc-ogg)
