This chapter contains instructions for configuring Red Hat Enterprise Linux AS to make database services highly available.
![]() | Note |
|---|---|
The following descriptions present example database configuration instructions. Be aware that differences may exist in newer versions of each database product. Consequently, this information may not be directly applicable. |
A database service can serve highly-available data to a database application. The application can then provide network access to database client systems, such as Web servers. If the service fails over, the application accesses the shared database data through the new cluster system. A network-accessible database service is usually assigned an IP address, which is failed over along with the service to maintain transparent access for clients.
This section provides an example of setting up a cluster service for an Oracle database. Although the variables used in the service scripts depend on the specific Oracle configuration, the example may aid in setting up a service for individual environments. See the Section called Tuning Oracle Services for information about improving service performance.
In the example that follows:
The service includes one IP address for the Oracle clients to use.
The service has two mounted file systems, one for the Oracle software (/u01) and the other for the Oracle database (/u02), which were set up before the service was added.
An Oracle administration account with the name oracle was created on both cluster systems before the service was added.
Network access in this example is through Perl DBI proxy.
The administration directory is on a shared disk that is used in conjunction with the Oracle service (for example, /u01/app/oracle/admin/db1).
The Oracle service example uses five scripts that must be placed in /home/oracle and owned by the Oracle administration account. The oracle script is used to start and stop the Oracle service. Specify this script when you add the service. This script calls the other Oracle example scripts. The startdb and stopdb scripts start and stop the database. The startdbi and stopdbi scripts start and stop a Web application that has been written using Perl scripts and modules and is used to interact with the Oracle database. Note that there are many ways for an application to interact with an Oracle database.
The following is an example of the oracle script, which is used to start and stop the Oracle service. Note that the script is run as user oracle, instead of root.
#!/bin/sh
#
# Cluster service script to start/stop oracle
#
cd /home/oracle
case $1 in
'start')
su - oracle -c ./startdbi
su - oracle -c ./startdb
;;
'stop')
su - oracle -c ./stopdb
su - oracle -c ./stopdbi
;;
esac |
The following is an example of the startdb script, which is used to start the Oracle Database Server instance:
#!/bin/sh
#
#
# Script to start the Oracle Database Server instance.
#
########################################################################
#
# ORACLE_RELEASE
#
# Specifies the Oracle product release.
#
########################################################################
ORACLE_RELEASE=8.1.6
########################################################################
#
# ORACLE_SID
#
# Specifies the Oracle system identifier or "sid", which is the name of
# the Oracle Server instance.
#
########################################################################
export ORACLE_SID=TESTDB
########################################################################
#
# ORACLE_BASE
#
# Specifies the directory at the top of the Oracle software product and
# administrative file structure.
#
########################################################################
export ORACLE_BASE=/u01/app/oracle
########################################################################
#
# ORACLE_HOME
#
# Specifies the directory containing the software for a given release.
# The Oracle recommended value is $ORACLE_BASE/product/<release>
#
########################################################################
export ORACLE_HOME=/u01/app/oracle/product/${ORACLE_RELEASE}
########################################################################
#
# LD_LIBRARY_PATH
#
# Required when using Oracle products that use shared libraries.
#
########################################################################
export LD_LIBRARY_PATH=/u01/app/oracle/product/${ORACLE_RELEASE}/lib
########################################################################
#
# PATH
#
# Verify that the users search path includes $ORCLE_HOME/bin
#
########################################################################
export PATH=$PATH:/u01/app/oracle/product/${ORACLE_RELEASE}/bin
########################################################################
#
# This does the actual work.
#
# The oracle server manager is used to start the Oracle Server instance
# based on the initSID.ora initialization parameters file specified.
#
########################################################################
/u01/app/oracle/product/${ORACLE_RELEASE}/bin/svrmgrl << EOF
spool /home/oracle/startdb.log
connect internal;
startup pfile = /u01/app/oracle/admin/db1/pfile/initTESTDB.ora open;
spool off
EOF
exit 0 |
The following is an example of the stopdb script, which is used to stop the Oracle Database Server instance:
#!/bin/sh
#
#
# Script to STOP the Oracle Database Server instance.
#
######################################################################
#
# ORACLE_RELEASE
#
# Specifies the Oracle product release.
#
######################################################################
ORACLE_RELEASE=8.1.6
######################################################################
#
# ORACLE_SID
#
# Specifies the Oracle system identifier or "sid", which is the name
# of the Oracle Server instance.
#
######################################################################
export ORACLE_SID=TESTDB
######################################################################
#
# ORACLE_BASE
#
# Specifies the directory at the top of the Oracle software product
# and administrative file structure.
#
######################################################################
export ORACLE_BASE=/u01/app/oracle
######################################################################
#
# ORACLE_HOME
#
# Specifies the directory containing the software for a given release.
# The Oracle recommended value is $ORACLE_BASE/product/<release>
#
######################################################################
export ORACLE_HOME=/u01/app/oracle/product/${ORACLE_RELEASE}
######################################################################
#
# LD_LIBRARY_PATH
#
# Required when using Oracle products that use shared libraries.
#
######################################################################
export LD_LIBRARY_PATH=/u01/app/oracle/product/${ORACLE_RELEASE}/lib
######################################################################
#
# PATH
#
# Verify that the users search path includes $ORCLE_HOME/bin
#
######################################################################
export PATH=$PATH:/u01/app/oracle/product/${ORACLE_RELEASE}/bin
######################################################################
#
# This does the actual work.
#
# The oracle server manager is used to STOP the Oracle Server instance
# in a tidy fashion.
#
######################################################################
/u01/app/oracle/product/${ORACLE_RELEASE}/bin/svrmgrl << EOF
spool /home/oracle/stopdb.log
connect internal;
shutdown abort;
spool off
EOF
exit 0 |
The following is an example of the startdbi script, which is used to start a networking DBI proxy daemon:
#!/bin/sh
#
#
#####################################################################
#
# This script allows are Web Server application (perl scripts) to
# work in a distributed environment. The technology we use is
# base upon the DBD::Oracle/DBI CPAN perl modules.
#
# This script STARTS the networking DBI Proxy daemon.
#
#####################################################################
export ORACLE_RELEASE=8.1.6
export ORACLE_SID=TESTDB
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/${ORACLE_RELEASE}
export LD_LIBRARY_PATH=/u01/app/oracle/product/${ORACLE_RELEASE}/lib
export PATH=$PATH:/u01/app/oracle/product/${ORACLE_RELEASE}/bin
#
# This line does the real work.
#
/usr/bin/dbiproxy --logfile /home/oracle/dbiproxy.log --localport 1100 &
exit 0 |
The following is an example of the stopdbi script, which is used to stop a networking DBI proxy daemon:
#!/bin/sh
#
#
###################################################################
#
# Our Web Server application (perl scripts) work in a distributed
# environment. The technology we use is base upon the
# DBD::Oracle/DBI CPAN perl modules.
#
# This script STOPS the required networking DBI Proxy daemon.
#
###################################################################
PIDS=$(ps ax | grep /usr/bin/dbiproxy | awk '{print $1}')
for pid in $PIDS
do
kill -9 $pid
done
exit 0 |
The following example shows how to use cluadmin to add an Oracle service.
cluadmin> service add oracle
The user interface will prompt you for information about the service.
Not all information is required for all services.
Enter a question mark (?) at a prompt to obtain help.
Enter a colon (:) and a single-character command at a prompt to do
one of the following:
c - Cancel and return to the top-level cluadmin command
r - Restart to the initial prompt while keeping previous responses
p - Proceed with the next prompt
Preferred member [None]: ministor0
Relocate when the preferred member joins the cluster (yes/no/?) \
[no]: yes
User script (e.g., /usr/foo/script or None) \
[None]: /home/oracle/oracle
Do you want to add an IP address to the service (yes/no/?): yes
IP Address Information
IP address: 10.1.16.132
Netmask (e.g. 255.255.255.0 or None) [None]: 255.255.255.0
Broadcast (e.g. X.Y.Z.255 or None) [None]: 10.1.16.255
Do you want to (a)dd, (m)odify, (d)elete or (s)how an IP address,
or are you (f)inished adding IP addresses: f
Do you want to add a disk device to the service (yes/no/?): yes
Disk Device Information
Device special file (e.g., /dev/sda1): /dev/sda1
Filesystem type (e.g., ext2, reiserfs, ext3 or None): ext2
Mount point (e.g., /usr/mnt/service1 or None) [None]: /u01
Mount options (e.g., rw, nosuid): [Return]
Forced unmount support (yes/no/?) [no]: yes
Do you want to (a)dd, (m)odify, (d)elete or (s)how devices,
or are you (f)inished adding device information: a
Device special file (e.g., /dev/sda1): /dev/sda2
Filesystem type (e.g., ext2, reiserfs, ext3 or None): ext2
Mount point (e.g., /usr/mnt/service1 or None) [None]: /u02
Mount options (e.g., rw, nosuid): [Return]
Forced unmount support (yes/no/?) [no]: yes
Do you want to (a)dd, (m)odify, (d)elete or (s)how devices,
or are you (f)inished adding devices: f
Disable service (yes/no/?) [no]: no
name: oracle
disabled: no
preferred node: ministor0
relocate: yes
user script: /home/oracle/oracle
IP address 0: 10.1.16.132
netmask 0: 255.255.255.0
broadcast 0: 10.1.16.255
device 0: /dev/sda1
mount point, device 0: /u01
mount fstype, device 0: ext2
force unmount, device 0: yes
device 1: /dev/sda2
mount point, device 1: /u02
mount fstype, device 1: ext2
force unmount, device 1: yes
Add oracle service as shown? (yes/no/?) y
notice: Starting service oracle ...
info: Starting IP address 10.1.16.132
info: Sending Gratuitous arp for 10.1.16.132 (00:90:27:EB:56:B8)
notice: Running user script '/home/oracle/oracle start'
notice, Server starting
Added oracle.
cluadmin> |