OS:RHEL 5.8 64bit
DB:Oracle 11.2.0.4
两节点双网卡,一个Public,一个连IP SAN存储
配置YUM
YUM安装Cluster包
安装Oracle,不安装Database,两节点都在各自的文件系统上安装
配置iscsi,不要在/etc/fstab上添加条目。
http://blog.itpub.net/22621861/viewspace-1357900/
在两个节点上分别netca分别创建监听器
创建DB
在其中一个节点上配置共享磁盘,包括分区,创建文件系统,并在其上用DBCA创建DB。
在另一节点上复制文件并创建目录,否则在这一节点上无法正常启动数据库
并创建audit_file_dest和各种dump目录,并配置正确的owner和权限。
配置Oracle启停脚本。
vi /etc/init.d/dbora
这是可以用该脚本分别在两节点测试效果。
进入system-config-cluster配置集群
参考:
http://book.51cto.com/art/201006/206590.htm
注意:文件系统资源要用分区名/dev/sdc1,不是/dev/sdc

服务的资源顺序和附属关系如下图,否则经测试浮动IP无法正常启动

配置完成后,点右上角"Send to Cluster“,分发到全部集群节点。或复制/etc/cluster/cluster.conf到其他节点相同路径下。
启动集群服务(两节点)
可以使用system-config-cluster管理集群。

检查浮动IP
DB:Oracle 11.2.0.4
两节点双网卡,一个Public,一个连IP SAN存储
点击(此处)折叠或打开
-
[root@node1 ~]# cat /etc/hosts
-
# Do not remove the following line, or various programs
-
# that require network functionality will fail.
-
127.0.0.1 localhost.localdomain localhost
-
::1 localhost6.localdomain6 localhost6
-
192.168.217.11 node1.demo.com node1
- 192.168.217.12 node2.demo.com node2
点击(此处)折叠或打开
-
[root@node1 ~]# cat /etc/yum.repos.d/cdrom.repo
-
[rhel-cdrom]
-
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
-
baseurl=file:///mnt/cdrom/Server
-
enabled=1
-
gpgcheck=1
-
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
-
-
[Cluster]
-
name=RHEL5 ISO Cluster
-
baseurl=file:///mnt/cdrom/Cluster
-
enabled=1
- gpgcheck=0
点击(此处)折叠或打开
- yum -y install cman rgmanager system-config-cluster luci ricci
安装Oracle,不安装Database,两节点都在各自的文件系统上安装
配置iscsi,不要在/etc/fstab上添加条目。
http://blog.itpub.net/22621861/viewspace-1357900/
在两个节点上分别netca分别创建监听器
创建DB
在其中一个节点上配置共享磁盘,包括分区,创建文件系统,并在其上用DBCA创建DB。
在另一节点上复制文件并创建目录,否则在这一节点上无法正常启动数据库
点击(此处)折叠或打开
-
[oracle@node1 ~]$ cd $ORACLE_HOME/dbs
-
[oracle@node1 dbs]$ ls
-
hc_rhcsdb.dat init.ora lkRHCSDB orapwrhcsdb spfilerhcsdb.ora
- [oracle@node1 dbs]$ scp * node2:$ORACLE_HOME/dbs
配置Oracle启停脚本。
vi /etc/init.d/dbora
点击(此处)折叠或打开
-
#!/bin/bash
-
#
-
# /etc/init.d/dbora
-
#
-
# chkconfig: 2345 02 98
-
# description: oracle is meant to run under Linux Oracle Server
-
# Source function library.
-
. /etc/rc.d/init.d/functions
-
-
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
-
ORACLE_SID=rhcsdb
-
ORACLE_NAME=oracle
-
LOCKFILE="$ORACLE_HOME/.oracle.lock"
-
RESTART_RETRIES=3
-
DB_PROCNAMES="pmon"
-
LSNR_PROCNAME="tnslsnr"
-
-
#RETVAL=0
-
#Start the oracle Server
-
-
#The following command assumes that the oracle login will not prompt the password
-
start() {
-
-
echo "Starting Oracle10g Server... "
-
tmpfile=/home/oracle/`basename $0`-start.$$
-
logfile=/home/oracle/`basename $0`-start.log
-
#
-
# Set up our sqlplus script. Basically, we're trying to
-
# capture output in the hopes that it's useful in the case
-
# that something doesn't work properly.
-
#
-
echo "startup" > $tmpfile
-
echo "quit" >> $tmpfile
-
-
su - $ORACLE_NAME -c "sqlplus \"/ as sysdba\" < $tmpfile &> $logfile"
-
if [ $? -ne 0 ]; then
-
echo "ORACLE_HOME Incorrectly set?"
-
echo "See $logfile for more information."
-
return 1
-
fi
-
-
#
-
# If we see:
-
# ORA-.....: failure, we failed
-
#
-
rm -f $tmpfile
-
grep -q "failure" $logfile
-
if [ $? -eq 0 ]; then
-
rm -f $tmpfile
-
echo "ORACLE_SID Incorrectly set?"
-
echo "See $logfile for more information."
-
return 1
-
fi
-
-
echo "Starting listener..."
-
((su - $ORACLE_NAME -c "$ORACLE_HOME/bin/lsnrctl start") >> $logfile
-
2>&1) || return 1
-
#return $?
-
if [ -n "$LOCKFILE" ]; then
-
touch $LOCKFILE
-
fi
-
#/usr/local/tomcat/bin/catalina.sh start
-
return 0
-
}
-
-
stop() {
-
echo "Shutting down Oracle10g Server..."
-
-
declare tmpfile
-
declare logfile
-
-
tmpfile=/home/oracle/`basename $0`-stop.$$
-
logfile=/home/oracle/`basename $0`-stop.log
-
if [ -z "$LOCKFILE" ] || [ -f $LOCKFILE ]; then
-
echo
-
else
-
echo "oracle is not run"
-
return 0
-
fi
-
-
# Setup for Stop ...
-
echo "shutdown abort" > $tmpfile
-
echo "quit" >> $tmpfile
-
-
su - $ORACLE_NAME -c "sqlplus \"/ as sysdba\" < $tmpfile &> $logfile"
-
if [ $? -ne 0 ]; then
-
echo "ORACLE_HOME Incorrectly set?"
-
echo "See $logfile for more information."
-
return 1
-
fi
-
-
#
-
# If we see 'failure' in the log, we're done.
-
#
-
rm -f $tmpfile
-
grep -q failure $logfile
-
if [ $? -eq 0 ]; then
-
echo
-
echo "Possible reason: ORACLE_SID Incorrectly set."
-
echo "See $logfile for more information."
-
return 1
-
fi
-
-
status $LSNR_PROCNAME
-
if [ $? -ne 0 ] ; then
-
if [ -n "$LOCKFILE" ]; then
-
rm -f $LOCKFILE
-
fi
-
return 0 # Listener is not running
-
fi
-
-
((su - $ORACLE_NAME -c "$ORACLE_HOME/bin/lsnrctl stop") >> $logfile
-
2>&1) || return 1
-
-
if [ -n "$LOCKFILE" ]; then
-
rm -f $LOCKFILE
-
fi
-
return 0
-
}
-
-
get_lsnr_status()
-
{
-
declare -i subsys_lock=$1
-
-
status $LSNR_PROCNAME
-
if [ $? == 0 ] ; then
-
return 0 # Listener is running fine
-
elif [ $subsys_lock -ne 0 ]; then
-
return 3
-
elif [ $? -ne 0 ] ; then
-
return 1
-
fi
-
}
-
-
get_db_status()
-
{
-
declare -i subsys_lock=$1
-
declare -i i=0
-
declare -i rv=0
-
declare ora_procname
-
-
for procname in $DB_PROCNAMES ; do
-
-
ora_procname="ora_${procname}_${ORACLE_SID}"
-
-
status $ora_procname
-
if [ $? -eq 0 ] ; then
-
# This one's okay; go to the next one.
-
continue
-
elif [ $subsys_lock -ne 0 ]; then
-
return 3
-
elif [ $? -ne 0 ] ; then
-
return 1
-
fi
-
-
done
-
}
-
-
update_status()
-
{
-
declare -i old_status=$1
-
declare -i new_status=$2
-
-
if [ -z "$2" ]; then
-
return $old_status
-
fi
-
-
if [ $old_status -ne $new_status ]; then
-
return 1
-
fi
-
return $old_status
-
}
-
status_ias()
-
{
-
declare -i subsys_lock=1
-
declare -i last
-
#
-
# Check for lock file. Crude and rudimentary, but it works
-
#
-
if [ -z "$LOCKFILE" ] || [ -f $LOCKFILE ]; then
-
subsys_lock=0
-
fi
-
-
# Check database status
-
get_db_status $subsys_lock
-
update_status $? # Start
-
last=$?
-
-
# Check & report listener status
-
get_lsnr_status $subsys_lock
-
update_status $? $last
-
last=$?
-
-
# Check & report opmn / opmn-managed process status
-
#get_opmn_status $subsys_lock
-
#update_status $? $last
-
#last=$?
-
-
#
-
# No lock file, but everything's running. Put the lock
-
# file back. XXX - this kosher?
-
#
-
if [ $last -eq 0 ] && [ $subsys_lock -ne 0 ]; then
-
touch $LOCKFILE
-
fi
-
return $last
-
}
-
-
restart() {
-
echo -n "Restart Oracle10g Server"
-
stop
-
start
-
echo
-
}
-
-
case "$1" in
-
start)
-
start
-
exit $?
-
;;
-
stop)
-
stop
-
exit $?
-
;;
-
status)
-
status_ias
-
exit $?
-
;;
-
restart|reload)
-
stop
-
start
-
;;
-
*)
-
echo "Usage: $0 {start|stop|reload|restart|status}"
-
exit 1
-
;;
-
esac
- exit 0
进入system-config-cluster配置集群
参考:
http://book.51cto.com/art/201006/206590.htm
注意:文件系统资源要用分区名/dev/sdc1,不是/dev/sdc

服务的资源顺序和附属关系如下图,否则经测试浮动IP无法正常启动

配置完成后,点右上角"Send to Cluster“,分发到全部集群节点。或复制/etc/cluster/cluster.conf到其他节点相同路径下。
启动集群服务(两节点)
点击(此处)折叠或打开
-
service cman start
-
service rgmanager start
-
chkconfig cman on
- chkconfig rgmanager on

检查浮动IP
点击(此处)折叠或打开
-
[root@node2 ~]# ip addr list
-
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
-
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
-
inet 127.0.0.1/8 scope host lo
-
inet6 ::1/128 scope host
-
valid_lft forever preferred_lft forever
-
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
-
link/ether 00:0c:29:84:35:a2 brd ff:ff:ff:ff:ff:ff
-
inet 192.168.217.12/24 brd 192.168.217.255 scope global eth0
-
inet 192.168.217.13/24 scope global secondary eth0
-
inet6 fe80::20c:29ff:fe84:35a2/64 scope link
-
valid_lft forever preferred_lft forever
-
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
-
link/ether 00:0c:29:84:35:ac brd ff:ff:ff:ff:ff:ff
-
inet 192.168.135.12/24 brd 192.168.135.255 scope global eth1
-
inet6 fe80::20c:29ff:fe84:35ac/64 scope link
-
valid_lft forever preferred_lft forever
-
4: sit0: <NOARP> mtu 1480 qdisc noop
- link/sit 0.0.0.0 brd 0.0.0.0
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-1772904/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22621861/viewspace-1772904/
本文详细介绍了在RHEL5.864bit环境下,通过配置YUM源、安装Cluster包、实现iscsi存储、安装与配置Oracle数据库、部署集群服务等步骤,完成Oracle数据库的集群部署与管理过程。
904

被折叠的 条评论
为什么被折叠?



