Sie sind auf Seite 1von 2

Automatically StartUp and Shutdown an Oracle

Database in Linux OS
Today I want to show you how we can Start-up and Shutdown an Oracle database on Linux OS
automatically
In Windows, when we install an Oracle database, it creates a Windows Service which starts the database
automatically as soon as OS starts. But in Linux, its different. You need to create your own service to
start and shutdown your database when you start and shutdown your OS respectively. Now well go
through this example step by step to show how we can do it
1. First of all weve to change our /etc/oratab file. Why do we use it? Oratab file is used by Oracle
utilities. Its created by root.sh script, when we install an Oracle Server, and is updated each time by
DBCA (Database Configuration Assistant) when we create a new database. After having installed a new
database (in this case, our database name is mydb), entering by root user, let us see the source of this file.
At the end of this file, youll find:
mydb:/home/oracle/product/10.1.0/Db_1:N
The first field is the name of my database (mydb), the second one is my home directory
(/home/oracle/product/10.1.0/Db_1), and the third indicates to the dbstart utility whether the database
should, or should not be brough up at the system boot time with Y or N parameters respectively
As a root user, well change last field of this line from N to Y to let dbstart utility start this database
when it runs
2. In this step, well create a file with name startdb and write a small script to be run when our system
starts or shuts down. If you want this file to be added as a service which starts when your OS boots, you
should put it in /etc/init.d/ directory. In this script, well define two variables, ORA_OWNER and
ORACLE_HOME and then, well start (or shutdown) our database by connecting with oracle user and
running lsnrctl (Listener utility), dbstart (utility which starts the database) and dbshut (utility which
shutdowns the database) utilities depending on our OS state.
This is the source of our startdb file:
ORACLE_HOME=/home/oracle/product/10.1.0/Db_1
ORA_OWNER=oracle
case $1 in
start) #If the system is starting, then
su $ORA_OWNER -c $ORACLE_HOME/bin/lsnrctl start #Start the listener
su $ORA_OWNER -c $ORACLE_HOME/bin/dbstart #Start the database
;;
stop) #If the system is stops, that is were shutting down our OS, then
su -$ORA_OWNER -c $ORACLE_HOME/bin/dbshut
su -$ORA_OWNER -c $ORACLE_HOME/bin/lsnrctl stop
;;
esac
3. Once youve saved your file into this directory, make sure that its executable by running:
chmod 750 startdb
4. Then you need to add the appropriate symbolic links to cause the script to be executed when the system
goes down, or comes up. Create it with ln -s command.

# ln -s /etc/init.d/startdb /etc/rc.d/rc3.d/K01startdb
# ln -s /etc/init.d/startdb /etc/rc.d/rc3.d/S99startdb
# ln -s /etc/init.d/startdb /etc/rc.d/rc5.d/K01startdb
# ln -s /etc/init.d/startdb /etc/rc.d/rc5.d/S99startdb
Lets analyze these commands:
The first line creates symbolic link of our script in rc3.d directory. At startup, Linux runs /etc/rc.d/rc
script at the current level (normally 3 or 5). rc3.d indicates 3rd runlevel, K indicates OSs shutdown (on
servers shutdown, Linux calls the scripts in /etc/rc.d/rc3/K* in order)
The second line creates another symbolic link of our script, to be run at startup of our OS, indicating
S99 and the name of our script
Another two lines creates symoblic links for 5th runlevel.
Thats all. Your script and your service is ready for use. Just restart your OS and upon startup youll see
your newly created service running. Then open new terminal, enter you database and issue :
SQL>SELECT status FROM v$instance;
Youll see your databases status is OPEN
P.S
In some releases, even when we create a new service, it doesnt work. When we issue dbstart command
manually from OS, were getting an error:
cat: /var/opt/oracle/oratab: No such file or directory
It has simple reason and solution
If the directory /var/opt/oracle exists during the Oracle installation the dbhome script will have the
parameter ORATAB set to /var/opt/oracle/oratab instead of /etc/oratab. The normal DBCA process
during a default installation will still add the instance entry to /etc/oratab.
It has two solutions:
1. You can either copy the original oratab file to this directory :
cp /etc/oratab /var/opt/oracle/
2. Or you can edit dbstart and dbshut scripts, find the variable ORATAB, and youll find that its
addressing to /var/opt/oracle/oratab file. Just change it to /etc/oratab

Das könnte Ihnen auch gefallen