Capa do artigo: Oracle Auto Start

Oracle Auto Start: como garantir que o banco e o listener iniciem automaticamente após reboot

“Evite downtime desnecessário — automatize o que pode (e deve) ser automático.”

Quantas vezes o servidor reiniciou e o banco não subiu automaticamente? Neste guia você aprende a configurar o Oracle Auto Start para que o Oracle Database e o listener iniciem sozinhos após reinicializações — tanto em ambientes de teste quanto de produção.

⚠️ Boas práticas de segurança: faça primeiro em homologação; controle quem pode editar e executar scripts em /etc/init.d/ e no $ORACLE_HOME; evite rodar como root quando não for necessário.

Pré-requisitos rápidos

1) Descobrindo variáveis do ambiente

Como usuário oracle:

echo $ORACLE_HOME
echo $ORACLE_SID
whoami

Anote os valores. Nos exemplos abaixo usarei /app/oracle/product/19c e WINTESTE como placeholders — substitua pelo que você usa.

2) Configurando o /etc/oratab

Como root, edite o arquivo:

nano /etc/oratab

Inclua (ou ajuste) a linha da sua instância:

<SEU_ORACLE_SID>:<SEU_ORACLE_HOME>:Y

Exemplo:

WINTESTE:/app/oracle/product/19c:Y

3) Script de inicialização (SysV init)

Se sua distro usa SysV (diretórios /etc/rc*.d e /etc/init.d), crie o script dbora:

cd /etc/init.d/
nano dbora

Cole o conteúdo abaixo (note os placeholders):

#! /bin/sh
# Descrição: Auto start/stop do Oracle Database + listener
# Ajuste as variáveis abaixo para o seu ambiente.
ORA_HOME=/app/oracle/product/19c
ORA_OWNER=oracle

case "$1" in
  'start')
    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" &
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
    touch /var/lock/subsys/dbora
    ;;
  'stop')
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" &
    rm -f /var/lock/subsys/dbora
    ;;
esac
exit 0

Permissões e grupo:

chgrp dba /etc/init.d/dbora
chmod 750 /etc/init.d/dbora
ls -l /etc/init.d/dbora    # deve aparecer -rwxr-x---

Registrando no boot (links simbólicos)

Desligamento (runlevel 0):

cd /etc/rc.d/rc0.d
ln -s /etc/init.d/dbora K01dbora

Inicialização (runlevel 3):

cd /etc/rc.d/rc3.d
ln -s /etc/init.d/dbora S99dbora

Verificando o runlevel atual:

who -r

Se o nível for 5, crie também o link em /etc/rc.d/rc5.d:

cd /etc/rc.d/rc5.d
ln -s /etc/init.d/dbora S99dbora

4) Alternativa moderna: systemd

Em distribuições recentes (Oracle Linux 7/8, RHEL/CentOS 7+) use systemd. Crie a unidade de serviço:

nano /etc/systemd/system/dbora.service

Conteúdo sugerido:

[Unit]
Description=Oracle Database auto start/stop (dbstart/dbshut + listener)
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment=ORACLE_HOME=/app/oracle/product/19c
ExecStart=/bin/bash -lc "$ORACLE_HOME/bin/lsnrctl start; $ORACLE_HOME/bin/dbstart $ORACLE_HOME"
ExecStop=/bin/bash -lc "$ORACLE_HOME/bin/dbshut $ORACLE_HOME; $ORACLE_HOME/bin/lsnrctl stop"

[Install]
WantedBy=multi-user.target

Habilite e verifique:

systemctl daemon-reload
systemctl enable dbora.service
systemctl start dbora.service
systemctl status dbora.service
💡 Dica: se preferir separar listener e banco, crie dois serviços (ex.: oracle-listener.service e oracle-db.service) e use After=oracle-listener.service no serviço do banco.

5) Testando o startup automático

Reinicie o sistema e valide:

reboot

Depois do boot, como oracle:

ps -ef | grep pmon
lsnrctl status

Saída esperada (exemplo):

oracle  2267     1  0 22:10 ?  00:00:00 ora_pmon_<SEU_ORACLE_SID>
...
LSNRCTL for Linux: Version ...
Service "..." has 1 instance(s).
  Instance "WINTESTE", status READY, has 1 handler(s) for this service...
“Automatizar é garantir disponibilidade até nos momentos em que ninguém está olhando.”

Referências

Conclusão

Com a configuração acima, você evita downtime após reinicializações e padroniza o processo de startup/shutdown do Oracle e do listener. E você, já usa Auto Start em produção? Comente o que mudou na sua rotina ou que melhorias adotou por aí.

💬 Deixe seu comentário

Compartilhe sua experiência ou dúvida sobre o Oracle Auto Start.

Nenhum comentário ainda — seja o primeiro! 🚀


Publicado por Hiordan Freire · DBA & Founder do The Committer · Outubro de 2025