Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:start_db_linux

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

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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
dba/start_db_linux.txt · Zuletzt geändert: 2019/12/02 22:49 von gpipperr