Inhaltsverzeichnis

Datenbank unter Linux 6 und Linux 7 automatisch starten

10.2016

Zuvor darauf achten das auch eine „/etc/oratab“ Datei angelegt wurde!

etc/oratab:

GPIDB:/opt/oracle/products/12.1.0.2/dbhome_1:Y

DB SID : Oracle Home : Soll die DB gestartet werden


Start Linux Version 7

Start/Stop Scripte anlegen

Start Script unter „/opt/oracle/scripts/startStop.sh“ als user „oracle“ anlegen

startStop.sh
#!/bin/sh
 
# edit the oracle home and user to your needs
# 
ORACLE_HOME="/opt/oracle/product/12.1.0.2/dbhome_1"
#set the Listner Home
ORACLE_HOME_LISTNER=$ORACLE_HOME
 
############################# 
#dbstart exists?
 
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
        echo "Oracle startup: cannot start"
        exit 1
fi
 
#############################
# Datenbank starten oder stoppen
 
case "$1" in
    start)
        # Oracle listener and instance startup
        echo -n "Starting Oracle: "
        $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTNER
        #touch /var/lock/subsys/oracle
        echo "OK"
        ;;
    stop)
        # Oracle listener and instance shutdown
        echo -n "Shutdown Oracle: "
        $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTNER
        #rm -f /var/lock/subsys/oracle
        echo "OK"
        ;;
    reload|restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $0 start|stop|restart|reload"
        exit 1
esac
exit 0

Start/stop Scripts anlegen als user oracle

vi /opt/oracle/scripts/startdb.sh
#!/bin/sh
/opt/oracle/scripts/startStop.sh start >> /opt/oracle/scripts/startup.log 2>&1
 
 
vi /opt/oracle/scripts/stopdb.sh
#!/bin/sh
/opt/oracle/scripts/startStop.sh stop >> /opt/oracle/scripts/shutdown.log 2>&1
 
chmod 777 stopdb.sh
 
chmod 777 startdb.sh
 
chmod 777 startStop.sh
 
#Scripte als Oracle User testen!

Service anlegen

User root

Datei „/lib/systemd/system/dbora.service“ anlegen:

[Unit]
Description=The Oracle Database Service
After=syslog.target network.target
 
[Service]
Type=simple
RemainAfterExit=yes
User=oracle
Group=oinstall
ExecStart=/opt/oracle/scripts/startdb.sh 
ExecStop=/opt/oracle/scripts/stopdb.sh
 
[Install]
WantedBy=multi-user.target

Link anlegen:

ln -s /lib/systemd/system/dbora.service /etc/systemd/system/dbora.service

Reload systemd

systemctl daemon-reload

Starten und einschalten des Service:

#Starten
systemctl start dbora.service
 
#Auto Start aktivieren
systemctl enable dbora.service
 
#Status prüfen
 
systemctl status dbora.service -l
 
 
#Stoppen
 
systemctl stop dbora.service
 
#prüfen ob die Start Reichenfolge auch passt:
 
systemd-analyze critical-chain dbora.service

Problem: Failed at step EXEC spawning … Exec format error

Oct 01 20:49:38 dns01.pipperr.local systemd[810]: Failed at step EXEC spawning /home/oracle/scripts/startdb.sh: Exec format error
Oct 01 20:49:38 dns01.pipperr.local systemd[1]: dbora.service: main process exited, code=exited, status=203/EXEC

„#!/bin/sh“ am Anfang vom Script nicht vergessen!

Quellen

Siehe auch


Start Script für init.d bis Linux Version 6

Wiedermal ein Script um die DB zu starten. hier gibt es wohl tausende von Varianten.


Es wird das Original Start / Stopp Script von Oracle dbstart / dbshut verwendet. Durch die Übergabe des Listener Homes als ersten Parameter wird auch entsprechend der Listener gestartet/gestoppt.

Dazu muss die Datei „/etc/oratab“ angelegt und die DB entsprechend auf Autostart konfiguriert werden (Beispiel anbei).

Damit das ganze funktioniert, müssen entweder die richtigen Links von Hand gesetzt werden (System-V style) oder mit dem jeweiligen Runlevel Editor der Autostart aktiviert werden.


In Debian kann das einfach mit „rcconf“ erfolgen.


Beispiel für die orginal oratab von Oracle:

oratab
#
# This file is used by ORACLE utilities.  It is created by root.s
# and updated by the Database Configuration Assistant when creating
# a database.
 
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
DB01:/opt/oracle/product/11.2.0/dbhome_1:Y

Beispiel für ein Startscript:

oracle
#!/bin/bash
#
# Run-level Startup script Oracle Instance und Listener
#
#
### BEGIN INIT INFO
# Provides: Oracle DB Start
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Oracle DB
# Description: Start, stop and save Oracle DB
### END INIT INFO
# 
# install
# create file  /etc/init.d/oracle
# rights
# chmod 777 /etc/init.d/oracle
# add
# chkconfig  --add oracle
# check
# chkconfig  | grep oracle
 
###############################
# edit the oracle home and user 
ORACLE_HOME="/u01/app/oracle/product/10.2.0.5/dbhome_1"
ORACLE_USER="oracle"
ORACLE_HOME_LISTNER=$ORACLE_HOME
 
############################# 
#dbstart exists?
 
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
        echo "Oracle startup: cannot start"
        exit 1
fi
 
#############################
# Datenbank starten oder stoppen
 
case "$1" in
    start)
        # Oracle listener and instance startup
        echo -n "Starting Oracle: "
        su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTNER"
        touch /var/lock/subsys/oracle
        echo "OK"
        ;;
    stop)
        # Oracle listener and instance shutdown
        echo -n "Shutdown Oracle: "
        su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTNER"
        rm -f /var/lock/subsys/oracle
        echo "OK"
        ;;
    reload|restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $0 start|stop|restart|reload"
        exit 1
esac
exit 0

Die richtigen Rechte auf das Startscript vergeben!

chmod u+rwx,g+rx-w,o+rx-w oracle

Log Files

Die Log Files liegen unter $ORACLE_HOME.

cd $ORACLE_HOME
 
ls -la *.log
 
 listener.log
 shutdown.log
 startup.log

Quellen