automatically startup and shutdown an oracle database in linux os.pdf

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, it’s different. You need to cr eate your own service to start and shutdown your database when you start and shutdown your OS respectively. Now we’ll go through this example step by step to show how we can do it 1. First of all we’ve to change our /etc/oratab file. Why do we use it? Oratab file is used by Oracle utilities. It’s 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, you’ll 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, we’ll change last field of this line from “N” to “Y” to let dbstart utility start this database when it runs 2. In this step, we’ll 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, we’ll define two variables, ORA_OWNER and ORACLE_HOME and then, we’ll 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 we’re 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 you’ve saved your file into this directory, make sure that it’s 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.

Upload: fchavesta

Post on 19-Feb-2016

234 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Automatically StartUp and Shutdown an Oracle Database in Linux OS.pdf

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, it’s different. You need to create your own service to

start and shutdown your database when you start and shutdown your OS respectively. Now we’ll go

through this example step by step to show how we can do it

1. First of all we’ve to change our /etc/oratab file. Why do we use it? Oratab file is used by Oracle

utilities. It’s 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, you’ll 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, we’ll change last field of this line from “N” to “Y” to let dbstart utility start this database

when it runs

2. In this step, we’ll 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, we’ll define two variables, ORA_OWNER and

ORACLE_HOME and then, we’ll 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 we’re 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 you’ve saved your file into this directory, make sure that it’s 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.

Page 2: Automatically StartUp and Shutdown an Oracle Database in Linux OS.pdf

# 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

Let’s 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 OS’s 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.

That’s all. Your script and your service is ready for use. Just restart your OS and upon startup you’ll see

your newly created service running. Then open new terminal, enter you database and issue :

SQL>SELECT status FROM v$instance;

You’ll see your database’s status is OPEN

P.S

In some releases, even when we create a new service, it doesn’t work. When we issue dbstart command

manually from OS, we’re 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 you’ll find that it’s

addressing to /var/opt/oracle/oratab file. Just change it to /etc/oratab