How to Automate Startup/Shutdown of Oracle Database on Linux [ID 222813.1]
2012-01-06 16:29
645 查看
How to Automate Startup/Shutdown of Oracle Database on Linux [ID 222813.1] | ||
Modified 22-NOV-2010 Type BULLETIN Status PUBLISHED |
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.1Linux 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 detailedsteps 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
#! /bin/sh # # MEmes: 03/07/2011: Oracle SysV script # # chkconfig: 2345 98 2 # description: Oracle database start/stop script ### BEGIN INIT INFO # Provides: oracle # Required-Start: $network # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Oracle database start/stop script # Description: Automatically starts/stops oracle instance ### END INIT INFO ORACLE_USER=${ORACLE_USER:-oracle} ORACLE_SID=${ORACLE_SID:-oracle} ORAENV_ASK=NO PATH=/usr/local/bin:/usr/bin:/bin [ -r /usr/local/bin/oraenv ] && . /usr/local/bin/oraenv > /dev/null 2>/dev/null . /etc/rc.d/init.d/functions prep () { # Test for valid ORACLE_HOME if [ ! -d "${ORACLE_HOME}" ]; then failure $"ORACLE_HOME is not a valid directory: ${ORACLE_HOME}" echo exit 1 fi # Test for SQL*Plus executable SQLPLUS=${SQLPLUS:-"${ORACLE_HOME}/bin/sqlplus"} if [ ! -x "${SQLPLUS}" ]; then failure $"Cannot locate SQL*Plus executable: ${SQLPLUS}" echo exit 1 fi # Test for lsnrctl executable LSNRCTL=${LSNRCTL:-"${ORACLE_HOME}/bin/lsnrctl"} if [ ! -x "${LSNRCTL}" ]; then failure $"Cannot locate lsnrctl executable: ${LSNRCTL}" echo exit 1 fi return 0 } startup () { # Modify network to reflect current hostname #sed -i -e "s/HOST = [^)]*/HOST = $(hostname -f)/g" ${ORACLE_HOME}/network/admin/tnsnames.ora #sed -i -e "s/HOST = [^)]*/HOST = $(hostname -f)/g" ${ORACLE_HOME}/network/admin/listener.ora # Start Oracle database and listener echo -n $"Starting Oracle DB: " su -c "${SQLPLUS} /nolog" ${ORACLE_USER} > /dev/null 2>&1 <<EOF connect / as sysdba startup exit EOF success echo echo -n $"Starting Oracle Listener: " su -c "${LSNRCTL} start" ${ORACLE_USER} > /dev/null 2>&1 success echo } shutdown () { # Shutdown Oracle listener and database echo -n $"Stopping Oracle Listener: " su -c "${LSNRCTL} stop" ${ORACLE_USER} > /dev/null 2>&1 success echo echo -n $"Stopping Oracle DB: " su -c "${SQLPLUS} /nolog" ${ORACLE_USER} > /dev/null 2>&1 <<EOF connect / as sysdba shutdown immediate exit EOF success echo } case "$1" in start) # Oracle listener and instance startup prep startup ;; stop) # Oracle listener and instance shutdown prep shutdown ;; reload|restart) prep shutdown startup ;; *) echo "Usage: $(basename $0) start|stop|restart|reload" exit 1 esac exit 0
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
|
相关文章推荐
- How To Automate ASM Startup and Shutdown on AIX 5L [ID 580133.1]
- HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another Node [ID 415579.1]
- HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another Node [ID 415579.1]
- How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/Unix systems [ID 1062
- How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux systems[ID 1062983.1]
- How to Maximise CPU Performance for the Oracle Database on Linux
- How To Verify the Word Size (32bit vs 64bit) of the Oracle Binary on MS Windows systems (文档 ID 46506
- How To Verify the Word Size (32bit vs 64bit) of the Oracle Binary on MS Windows systems (文档 ID 46506
- HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another Node (文档 ID 415579.1)
- How to count the number of threads in a process on Linux
- How to make BBED(Oracle Block Brower and EDitor Tool) on Unix/Linux/Windows
- How to add Oracle OLAP to a 12c Database? (Doc ID 1936550.1)
- How to Add the JVM Component to an Existing Oracle Database (Doc ID 1461562.1)
- How to Convert a 32-bit Database to 64-bit Database on Linux (remove olap)
- How To Manually Remove ORACLE_OCM From Database (Doc ID 859113.1)
- How to convert a 32-bit database to 64-bit database on Linux
- How to Set Up DTrace to Detect PHP Scripting Problems on Oracle Linux
- How to find PID of process listening on a port in Linux? netstat and lsof command examples
- Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device
- How to Convert a 32-bit Database to 64-bit Database on Linux (update olap)