How to Automate Startup/Shutdown of Oracle Database on Linux [ID 222813.1] |
|
|
Modified 22-NOV-2010 Type BULLETIN Status PUBLISHED |
|
In this Document
Purpose
Scope and Application
How to Automate Startup/Shutdown of Oracle Database on Linux
References
Applies to:
Oracle Server - Enterprise Edition - Version: 8.0.3.0 to 10.1.0.2 - Release: 8.0.3 to 10.1
Linux OS - Version: 2.4 to 2.6]
Linux x86
Linux x86-64
Linux Itanium
Linux Kernel - Version: 2.4 to 2.6
This document applies to:
SLES7, SLES8, SLES9, SLES10
RHAS 2.1, RHEL 3,4,5, OEL 4,5
***Checked for relevance on 22-November-2010***
Purpose
This document aims to demonstrate automatic startup and shutdown of Oracle databases on Linux.
Scope and Application
The information in this document is useful for system administrators and database administrators trying to automate Oracle database startup and shutdown. The document describes the detailed
steps for configuration on Red Hat Advanced Server 2.1, RedHat Enterprise Linux (RHEL) 3,4,5, SuSE SLES7, United Linux 1.0 (SuSE SLES8 Edition), SLES9, SLES10, Oracle Enterprise Linux (OEL) 4,5. The information may not apply to other Linux distributions.
The following configuration is done to allow Oracle database be up and running in runlevels 3 (character mode) and 5 (X-Window system) and the start / stop commands does not provide the exhaustive
list of all possibilities and it presents an example. Therefore the exact scripts may not work with your configuration
Since the configuration is based on dbstart and dbshut scripts provided by the Oracle Server installation, please see Note
207508.1
The configuration also facilitates automated startup shutdown of Intelligent Agent, Management Server and HTTP Server, which are available with Oracle Server.
The information in this document does not apply to Oracle Internet Application Server. Still the script can be configured to handle starting up and shutting down iAS processes.
How to Automate Startup/Shutdown of Oracle Database on Linux
1. Update 'oratab' (under /etc or /var/opt/oracle) as:
<SID>:<ORACLE_HOME>:Y
where Y states that the database can be started up and shutdown using
dbstart/dbshut.
2. Create the service script:
/etc/init.d/dbora
Note: In Red Hat Advanced Server 2.1, the /etc/init.d is is a symbolic link to /etc/rc.d/init.d
Content of the script is as follows:
- #!/bin/bash
- #
- # chkconfig: 2345 99 10
- # description: Starts and stops Oracle processes
- #
- # Set ORA_HOME to be equivalent to the $ORACLE_HOME
- # from which you wish to execute dbstart and dbshut;
- #
- # Set ORA_OWNER to the user id of the owner of the
- # Oracle database in ORA_HOME.
- #
- ORA_HOME=<Type your ORACLE_HOME in full path here>
- ORA_OWNER=<Type your Oracle account name here>
-
- case "$1" in
- 'start')
- # Start the TNS Listener
- su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
- # Start the Oracle databases:
- # The following command assumes that the oracle login
- # will not prompt the user for any values
- su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
- # Start the Intelligent Agent
- if [ -f $ORA_HOME/bin/emctl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start agent"
- elif [ -f $ORA_HOME/bin/agentctl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl start"
- else
- su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_start"
- fi
- # Start Management Server
- if [ -f $ORA_HOME/bin/emctl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
- elif [ -f $ORA_HOME/bin/oemctl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/bin/oemctl start oms"
- fi
- # Start HTTP Server
- if [ -f $ORA_HOME/Apache/Apache/bin/apachectl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
- fi
- touch /var/lock/subsys/dbora
- ;;
- 'stop')
- # Stop HTTP Server
- if [ -f $ORA_HOME/Apache/Apache/bin/apachectl ]; then
- su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
- fi
- # Stop the TNS Listener
- su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
- # Stop the Oracle databases:
- # The following command assumes that the oracle login
- # will not prompt the user for any values
- su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
- rm -f /var/lock/subsys/dbora
- ;;
- esac
- # End of script dbora
or
NOTE1:
The lines:
# chkconfig: 35 99 10
# description: Starts and stops Oracle database
are mandatory since they describe the characteristics of the service where:
- 35 means that the service will be started in init levels 3 and 5 and will be stopped in other levels.
- 99 means that the service will be started at the near end of the init level processing
- 10 means that the service will be stopped at the near beginning of the init level processing
NOTE 2:
The Management Server is not shut down during service stop since it requires interaction and there is no harm in system killing the processes since the database is shut down already.
3. Set script permissions:
- chmod 755 /etc/init.d/dbora
4. Register the Service
- /sbin/chkconfig --add dbora
This action registers the service to the Linux service mechanism. On SuSE SLES7 and Red Hat Advanced Server 2.1 it will arrange symbolic links under rc<runlevel>.d directories to /etc/init.d/dbora
script.
The above configuration applies also to RHEL 3,4,5 and OEL 4.5.
Finished!
NOTE 3:
The chkconfig utility calls 'insserv' to register and add services. The 'insserv' version shipped with SUSE SLES8, SLES9 and SLES10 is using the following header to define run level and start/shutdown
order.
### BEGIN INIT INFO
# Provides: dbora
# Required-Start: $local_fs $remote_fs $netdaemons
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 3 4 5 6
# Description: Oracle Startup
### END INIT INFO
On SuSE SLES7 the following symbolic links are created:
- /etc/init.d/rc0.d/K10dbora
- /etc/init.d/rc1.d/K10dbora
- /etc/init.d/rc2.d/K10dbora
- /etc/init.d/rc3.d/S99dbora
- /etc/init.d/rc4.d/K10dbora
- /etc/init.d/rc5.d/S99dbora
- /etc/init.d/rc6.d/K10dbora
On Red Hat Advanced Server 2.1 the following symbolic links are created:
- /etc/rc.d/rc0.d/K10dbora
- /etc/rc.d/rc1.d/K10dbora
- /etc/rc.d/rc2.d/K10dbora
- /etc/rc.d/rc3.d/S99dbora
- /etc/rc.d/rc4.d/K10dbora
- /etc/rc.d/rc5.d/S99dbora
- /etc/rc.d/rc6.d/K10dbora
The symbolic links are not created in SLES8 and after with the 'chkconfig -add' command. To have the symbolic links created run the following in addition:
/sbin/chkconfig --set dbora 35
After this action, the following symbolic links will be created pointing to /etc/init.d/dbora script:
- /etc/init.d/rc3.d/S01dbora
- /etc/init.d/rc3.d/K22dbora
- /etc/init.d/rc5.d/S01dbora
- /etc/init.d/rc5.d/K22dbora
In all cases, the 'dbora' service will be running in runlevels 3,5 and it will be stopped in other runlevels (i.e. 0,1,2,4,6).
NOTE 4:
The script in this document assumes that:
- ORACLE_HOME and other required environment settings are done in the login script of ORA_OWNER
- There is no auto-running script like multiple ORACLE_HOME selection in the login profile of ORA_OWNER
NOTE 5:
If SELinux is enabled use "sudo su" instead of "su" in the dbora script. See Note
357906.1
References
NOTE:1016388.102 -
LINUX: DBSHUT FAILS WHEN ISSUING REBOOT, INIT6, OR SHUTDOWN.
NOTE:1074016.6 -
'dbora' does Not Work on RedHat Linux
NOTE:126146.1 -
Customizing System Startup in RedHat Linux
NOTE:207508.1 -
Dbstart does not work if using an spfile only
NOTE:357906.1 -
Automated Database Startup Fails When SELinux Is Enabled
Linux man page: chkconfig (8)
Linux man page: chmod (1)
Linux man page: init.d (7)
Linux man page: ln (1)
Related
Products
- Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
- Oracle Linux and Virtualization > Oracle Linux > Operating System > Linux OS
Keywords
START LISTENER; RUNLEVEL; INIT |
|
|