This chapter describes how to identify Oracle Database processes, and provides basic information about how to stop and restart them. It also describes how to set up automatic startup and shutdown of the Oracle Database. It contains the following sections:
This section describes how to stop and start Oracle processes. It contains the following topics:
Stopping and Starting Oracle Database and Automatic Storage Management Instances
Stopping and Starting Oracle Enterprise Manager Database Control
Note:
Ensure that you follow the instructions in this section every time you start an Oracle Database or Automatic Storage Management instance or an Oracle Net listener process.To ensure that certain shell limits are set to the values required to run Oracle processes, you must use the ssh
, rlogin
, or telnet
command to connect to the system where you want to start the process, even if that system is the local system. The syntax of this command is as follows:
$ ssh localhost
This section describes how to stop and start Oracle Database and Automatic Storage Management instances.
Stopping an Oracle Database or Automatic Storage Management Instance
Caution:
Do not stop an Automatic Storage Management instance until you have stopped all Oracle Database instances that use that Automatic Storage Management instance to manage their storage.To stop an Oracle Database or Automatic Storage Management instance:
To identify the SID and Oracle home directory for the instance that you want to shut down, run the following command:
On Solaris:
$ cat /var/opt/oracle/oratab
On other operating systems:
$ cat /etc/oratab
The oratab
file contains lines similar to the following, which identify the SID and corresponding Oracle home directory for each database or Automatic Storage Management instance on the system:
sid:oracle_home_directory:[Y|N]
Note:
Oracle recommends that you use the plus sign (+) as the first character in the SID of Automatic Storage Management instances.Depending on your default shell, run the oraenv
or coraenv
script to set the environment variables for the instance that you want to shut down:
Bourne, Bash, or Korn shell:
$ . /usr/local/bin/oraenv
C shell:
% source /usr/local/bin/coraenv
When prompted, specify the SID for the instance.
Run the following commands to shut down the instance:
$ sqlplus /nolog
SQL> CONNECT SYS/sys_password as SYSDBA
SQL> SHUTDOWN NORMAL
After the instance shuts down, you can quit SQL*Plus.
Restarting an Oracle Database or Automatic Storage Management Instance
Caution:
If the database instance uses Automatic Storage Management for storage management, then you must start the Automatic Storage Management instance before you start the database instance.To restart an Oracle Database or Automatic Storage Management instance:
If required, repeat Steps 1 and 2 of the preceding procedure to set the ORACLE_SID
and ORACLE_HOME
environment variables to identify the SID and Oracle home directory for the instance that you want to start.
Run the following commands to start the instance:
$ sqlplus /nolog
SQL> CONNECT SYS/sys_password as SYSDBA
SQL> STARTUP
After the instance starts, you can exit from SQL*Plus.
Note:
This section is not applicable to Mac OS X.To stop the Oracle Cluster Services Synchronization (CSS) daemon, run the following command:
On AIX:
/etc/init.cssd stop
On other platforms:
/etc/init.d/init.cssd stop
To start the CSS daemon, run the following command:
$ORACLE_HOME/bin/localconfig reset
This command stops the Oracle CSS daemon and then restarts it.
This section describes how to stop and start an Oracle Net listener.
To stop an Oracle Net listener:
Run the following command to determine the listener name and Oracle home directory for the Oracle Net listener that you want to stop:
On Mac OS X:
$ ps -ax | grep tnslsnr
On other platforms:
$ ps -ef | grep tnslsnr
This command displays a list of the Oracle Net listeners running on the system. The output of this command is similar to the following:
94248 ?? I 0:00.18 oracle_home1/bin/tnslsnr listenername1 -inherit 94248 ?? I 0:00.18 oracle_home2/bin/tnslsnr listenername2 -inherit
In this sample output, listenername1
and listenername2
are the names of the listeners.
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for the listener that you want to stop:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home1
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home1
Run the following command to stop the Oracle Net listener:
$ $ORACLE_HOME/bin/lsnrctl stop listenername
Note:
If the name of the listener is the default name,LISTENER
, then you do not have to specify the name in this command.Restarting Oracle Net Listener
To start an Oracle Net listener:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for the listener that you want to start:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home1
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home1
Run the following command to restart the Oracle Net listener:
$ $ORACLE_HOME/bin/lsnrctl start [listenername]
You must specify the listener name only if it is different from the default listener name, LISTENER
. The listener name is mentioned in the listener.ora
file. To display the contents of this file, run the following command:
$ more $ORACLE_HOME/network/admin/listener.ora
This section describes how to stop and start iSQL*Plus.
To stop iSQL*Plus:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for iSQL*Plus:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to stop iSQL*Plus:
$ $ORACLE_HOME/bin/isqlplusctl stop
To start iSQL*Plus:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for the iSQL*Plus instance that you want to start:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to start iSQL*Plus:
$ $ORACLE_HOME/bin/isqlplusctl start
This section describes how to stop and start Oracle Ultra Search.
To stop Oracle Ultra Search:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for Oracle Ultra Search:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to stop Oracle Ultra Search:
$ $ORACLE_HOME/bin/searchctl stop
To start Oracle Ultra Search:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for Oracle Ultra Search:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to start Oracle Ultra Search:
$ $ORACLE_HOME/bin/searchctl start
This section describes how to stop and start Oracle Enterprise Manager Database Control.
Note:
This section is not applicable to Mac OS X.Stopping Oracle Enterprise Manager Database Control
To stop Oracle Enterprise Manager Database Control:
Depending on your default shell, run the oraenv
or coraenv
script to set the environment for the database managed by the Database Control that you want to stop:
coraenv
script:
% source /usr/local/bin/coraenv
oraenv
script:
$ . /usr/local/bin/oraenv
Run the following command to stop the Database Control:
$ $ORACLE_HOME/bin/emctl stop dbconsole
Starting Oracle Enterprise Manager Database Control
To start Database Control:
Set the ORACLE_SID
and ORACLE_HOME
environment variables to identify the SID and Oracle home directory for the database control that you want to start:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home $ ORACLE_SID=sid $ export ORACLE_HOME ORACLE_SID
C shell:
% setenv ORACLE_HOME oracle_home % setenv ORACLE_SID sid
Run the following command to start the Database Control:
$ $ORACLE_HOME/bin/emctl start dbconsole
If you are using Oracle Enterprise Manager Grid Control to manage multiple Oracle products from a central location, then you must have an Oracle Management Agent installed on each host system. Typically, the Oracle Management Agent is installed in its own Oracle home directory.
This section describes how to stop and start Oracle Management Agent.
Stopping Oracle Management Agent
To stop Oracle Management Agent:
Run the following command to determine the Oracle home directory for Oracle Management Agent:
$ ps -ef | grep emagent
This command displays information about the Oracle Management Agent processes. The output of this command is similar to the following:
94248 ?? I 0:00.18 oracle_home/agent/bin/emagent ...
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for the Oracle Management Agent:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to stop Oracle Management Agent:
$ $ORACLE_HOME/agent/bin/emctl stop agent
Starting Oracle Management Agent
To start Oracle Management Agent:
If required, set the ORACLE_HOME
environment variable to specify the appropriate Oracle home directory for Oracle Management Agent:
Bourne, Bash, or Korn shell:
$ ORACLE_HOME=oracle_home
$ export ORACLE_HOME
C shell:
% setenv ORACLE_HOME oracle_home
Run the following command to start Oracle Management Agent:
$ $ORACLE_HOME/agent/bin/emctl start agent
Oracle recommends that you configure your system to automatically start Oracle Database when the system starts up, and to automatically shut it down when the system shuts down. Automating database startup and shutdown guards against incorrect database shutdown.
To automate database startup and shutdown, use the dbstart
and dbshut
scripts, which are located in the $ORACLE_HOME/bin
directory. The scripts refer to the same entries in the oratab
file, which are applied on the same set of databases. You cannot, for example, have the dbstart
script automatically start sid1
, sid2
, and sid3
, and have the dbshut
script shut down only sid1
. However, you can specify that the dbshut
script shuts down a set of databases while the dbstart
script is not used at all. To do this, include a dbshut
entry in the system shutdown file, but do not include the dbstart
entry from the system startup files.
See Also:
Theinit
command in your operating system documentation for more information about system startup and shutdown proceduresTo automate database startup and shutdown by using the dbstart
and dbshut
scripts:
Log in as the root
user.
Open the oratab
file in any text editor:
# vi /etc/oratab
Database entries in the oratab
file are displayed in the following format:
SID:ORACLE_HOME:{Y|N}
In this example, Y
or N
specifies whether you want the scripts to start or shut down the database. For each database for which you want to automate shutdown and startup, first find the instance identifier (SID) for that database, which is identified by the SID
in the first field. Then, change the last field for each to Y.
Note:
If you add new database instances to the system, then remember to edit the entries for those instances in theoratab
file if you want them to start automatically.Run the following commands to create the /Library/StartupItems/Oracle
directory and to change directory to it:
# mkdir -p /Library/StartupItems/Oracle # cd /Library/StartupItems/Oracle
Using any text editor, create a startup script called Oracle
in this directory, with contents similar to the following:
#!/bin/bash # source the common startup script . /etc/rc.common # Change the value of ORACLE_HOME to specify the correct Oracle home # directory for the installation ORACLE_HOME=/Volumes/u01/app/oracle/product/10.2.0/db_1 # # change the value of ORACLE to the login name of the # oracle owner at your site ORACLE=oracle PATH=${PATH}:$ORACLE_HOME/bin export ORACLE_HOME PATH # Set shell limits for the Oracle Database ulimit -c unlimited ulimit -d unlimited ulimit -s 65536 StartService() { if [ -f $ORACLE_HOME/bin/tnslsnr ] ; then ConsoleMessage "Starting Oracle Net" su $ORACLE -c "$ORACLE_HOME/bin/lsnrctl start" fi ConsoleMessage "Starting Oracle Databases" su $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" } StopService() { ConsoleMessage "Stopping Oracle Databases" su $ORACLE -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" if [ -f $ORACLE_HOME/bin/tnslsnr ] ; then ConsoleMessage "Stopping Oracle Net" su $ORACLE -c "$ORACLE_HOME/bin/lsnrctl stop" fi } RestartService() { StopService StartService } RunService "$1"
Note:
The script can only stop Oracle Net listener for which a password has not been set. In addition, if the listener name is not the default nameLISTENER
, then you must specify the listener name in the stop
and start
commands:
$ORACLE_HOME/bin/lsnrctl {start|stop} listener_name
Using any text editor, create a startup item parameter list file called StartupParameters.plist
in this directory, with contents similar to the following:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Description</key> <string>Oracle Database Startup</string> <key>Provides</key> <array> <string>Oracle Database</string> </array> <key>Requires</key> <array> <string>Disks</string> </array> <key>Uses</key> <array> <string>Disks</string> <string>Network</string> <string>NFS</string> </array> <key>OrderPreference</key> <string>Late</string> </dict> </plist>
Caution:
AL32UTF8 is the Oracle Database character set that is appropriate for XMLType data. It is equivalent to the IANA registered standard UTF-8 encoding, which supports all valid XML characters.Do not confuse the Oracle Database database character set UTF8 (no hyphen) with the database character set AL32UTF8 or with character encoding UTF-8. Database character set UTF8 has been superseded by AL32UTF8. Do not use UTF8 for XML data. UTF8 supports only Unicode version 3.1 and earlier; it does not support all valid XML characters. AL32UTF8 has no such limitation.
Using database character set UTF8 for XML data could potentially cause a fatal error or affect security negatively. If a character that is not supported by the database character set appears in an input-document element name, a replacement character (usually "?") is substituted for it. This will terminate parsing and raise an exception.
Change the owner, group, and permissions of the files that you created as follows:
# chown root:wheel * # chmod 700 *
To automate database startup and shutdown by using the dbstart
and dbshut
scripts:
Log in as the root
user.
Edit the oratab
file for your platform.
To open the file, use one of the following commands:
On Solaris:
# vi /var/opt/oracle/oratab
On AIX, HP-UX, Linux, and Tru64 UNIX:
# vi /etc/oratab
Database entries in the oratab
file are displayed in the following format:
SID:ORACLE_HOME:{Y|N|W}
In this example, the values Y
and N
specify whether you want the scripts to start or shut down the database, respectively. For each database for which you want to automate shutdown and startup, first determine the instance identifier (SID) for that database, which is identified by the SID
in the first field. Then, change the last field for each to Y
.
You can set dbstart
to autostart a single-instance database that uses an Automatic Storage Management installation that is auto-started by Oracle Clusterware. This is the default behavior for an Automatic Storage Management cluster. If you want to do this, then you must change the oratab
entry of the database and the Automatic Storage Management installation to use a third field with the value W
and N
, respectively. These values specify that dbstart
auto-starts the database only after the Automatic Storage Management instance is started.
Note:
If you add new database instances to the system and if you want to automate startup for them, then you must edit the entries for those instances in theoratab
file.Change directory to one of the following depending on your operating system.
Platform | Initialization File Directory |
---|---|
AIX | /etc |
Linux and Solaris | /etc/init.d |
HP-UX and Tru64 UNIX | /sbin/init.d |
Create a file called dbora
, and copy the following lines into this file:
Note:
Change the value of theORACLE_HOME
environment variable to an Oracle home directory for the installation. Change the value of the ORACLE
environment variable to the user name of the owner of the database installed in the Oracle home directory (typically, oracle
).#! /bin/sh -x # # Change the value of ORACLE_HOME to specify the correct Oracle home # directory for your installation. ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 # # Change the value of ORACLE to the login name of the # oracle owner at your site. # ORACLE=oracle PATH=${PATH}:$ORACLE_HOME/bin HOST=`hostname` PLATFORM=`uname` export ORACLE_HOME PATH # if [ ! "$2" = "ORA_DB" ] ; then if [ "$PLATFORM" = "HP-UX" ] ; then remsh $HOST -l $ORACLE -n "$0 $1 ORA_DB" exit else rsh $HOST -l $ORACLE $0 $1 ORA_DB exit fi fi # case $1 in 'start') if [ "$PLATFORM" = "Linux" ] ; then touch /var/lock/subsys/dbora fi $ORACLE_HOME/bin/dbstart $ORACLE_HOME & ;; 'stop') $ORACLE_HOME/bin/dbshut $ORACLE_HOME & ;; *) echo "usage: $0 {start|stop}" exit ;; esac # exit
Note:
This script can only stop Oracle Net listener for which a password has not been set. In addition, if the listener name is not the default name,LISTENER
, then you must specify the listener name in the stop
and start
commands:
$ORACLE_HOME/bin/lsnrctl {start|stop} listener_name
Change the group of the dbora
file to the OSDBA group (typically dba
), and set the permissions to 750:
# chgrp dba dbora # chmod 750 dbora
Create symbolic links to the dbora
script in the appropriate run-level script directories as follows.
Platform | Symbolic Links Commands |
---|---|
AIX |
# ln -s /etc/dbora /etc/rc.d/rc2.d/S99dbora # ln -s /etc/dbora /etc/rc.d/rc2.d/K01dbora |
HP-UX |
# ln -s /sbin/init.d/dbora /sbin/rc3.d/S990dbora # ln -s /sbin/init.d/dbora /sbin/rc0.d/K001dbora |
Linux |
# ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora # ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora # ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora |
Solaris |
# ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora # ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora |
Tru64 UNIX |
# ln -s /sbin/init.d/dbora /sbin/rc3.d/S99dbora # ln -s /sbin/init.d/dbora /sbin/rc0.d/K01dbora |