一、简介
熟悉 Oracle 真正应用集群 (RAC) 10g 技术的最有效方法之一是访问一个实际的 Oracle RAC 10g 集群。没有什么方法比直接体验它们能够更好地理解其好处的了 — 包括容错、安全性、负载均衡和可伸缩性。
Oracle RAC 的核心是共享磁盘子系统。集群中的所有节点必须能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。数据磁盘必须在全局范围内可用,以便答应所有节点访问数据库。每个节点拥有自己的重做日志和控制文件,但是其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。
希望本文能对一些手头上只有一台PC而没有真正的双机环境的朋友提供一个参考。
二、本文实践环境
1、PC主要配置:
Celeron(R) CPU 1.80GHz
Maxtor 6E040L0, ATA DISK drive 40G
RelTek 8139C 网卡 一块
内存DDR333 512MB * 2
显示卡:ATI [Radeon 9200 SE]
操作系统:White Box Enterprise Linux 3 (本文同样适用于RedHat企业版,不同之处是WBEL3目前可以免费运用于商业)
远程终端一台,装有windowsXP和远程X-server软件
2、服务器分区方案
Oracle 数据库文件
RAC节点名
实例名
数据库名
$ORACLE_BASE
文件系统
dbrac
orcl1
orcl
/home/oracle
ASM
Oracle CRS 共享文件
文件类型
文件名
分区
挂载点
文件系统
oracle集群注册表
/u01/orcl/orcfile
/dev/hda8
/u01
OCFS
CRS表决磁盘
/u01/orcl/Cssfile
/dev/hda8
/u01
OCFS
3、所涉及软件
1)oracle 10g 数据库软件
hip.db.lnx32.cpio.gz
2)oracle 10g 集群服务软件
hip.crs.lnx32.cpio.gz
3)OCFS文件系统支持
ocfs-2.4.21-EL-1.0.14-1.i686.rpm
ocfs-support-1.0.10-1.i386.rpm
ocfs-tools-1.0.10-1.i386.rpm
4)ASMlib驱动程序
oracleasm-2.4.21-EL-1.0.3-1.i686.rpm
oracleasm-support-1.0.3-1.i386.rpm
oracleasmlib-1.0.0-1.i386.rpm
以上软件包均可以从oracle官方网站下载
WBEL linux下载地址:http://www.whiteboxlinux.org/download.Html
三、基础操作
1、安装linux
安装过程中一些需要注重的地方:
1)磁盘分区:swap分区大小建议是内存的2倍,这里是2048MB,划出一些系统必要的分区根分区/,var分区/var,usr分区 /usr,home分区/home,临时文件分区/tmp。
注重:这里不要把所有的硬盘空间划分进操作系统,留下一半给后面安装oarcle集群磁盘使用,本文示例
2)文件系统 容量挂载点
/dev/hda11012M/
/dev/hda27.7G /home
/dev/hda71012M /tmp
/dev/hda35.8G /usr
/dev/hda52.0G /var
3)组件选取:一定要选上delvelopment tools和X-windows两项,为了节省空间其他可以不要
4)防火墙:最好不要
5)网络设置:eth0
取消选中 [Configure using DHCP] 复选项
选中 [Activate on boot]
IP 地址:192.168.22.44
网络掩码: 255.255.255.0
6)主机名:dbrac
2、.安装完成后检查必需的 RPM
3、必须安装以下程序包(或更高版本):
make-3.79.1
gcc-3.2.3-34
glibc-2.3.2-95.20
glibc-devel-2.3.2-95.20
glibc-headers-2.3.2-95.20
glibc-kernheaders-2.4-8.34
cpp-3.2.3-34
compat-db-4.0.14-5
compat-gcc-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
openmotif-2.2.2-16
etarch-1.3-1
四、设置
1、更改/etc/hosts
vi /etc/hosts
127.0.0.1localhost.localdomain localhost
192.168.22.44 dbrac int-dbrac
192.168.22.244 vip-dbrac
确保RAC节点名没有出现在回送地址中。
此处设置相当重要,不能跳过,一定按照此设置,IP和主机别名可以自己定
oracle 10g RAC中 使用了虚拟IP(VIP)技术,这是一个令人心动的高可用性、多机无缝切换的解决方案,但在单机模拟环境中仅仅是个形式而已,为了以后的顺利安装,不得不配置它
2、调整内核网络设置参数
编辑/etc/sysctl.conf,增加下面的设置:
vi /etc/sysctl.conf
# Default setting in bytes of the socket receive buffer
et.core.rmem_default=262144
# Default setting in bytes of the socket send buffer
et.core.wmem_default=262144
# Maximum socket receive buffer size which may be set by using
# the SO_RCVBUF socket option
et.core.rmem_max=262144
# Maximum socket send buffer size which may be set by using
# the SO_SNDBUF socket option
et.core.wmem_max=262144
3、添加模块选项:
将下列行添加到 /etc/modules.conf 中:
options sbp2 sbp2_exclusive_login=0
4、创建“oracle”用户和目录
$su -
#groupadd dba
#useradd -g dba -m oracle
#passwd oracle
5、编辑.bash_profile文件,增加oracle环境变量
$vi .bash_profile
export PATH
unset USERNAME
export LANG=zh_CN.EUC
ORACLE_BASE=/home/oracle;export ORACLE_BASE
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.1.0/crs_1
export ORACLE_SID=rac1
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin:/usr/ucb;
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:$ORACLE_HOME/oracm/lib:/usr/local/lib:/usr/lib;export LD_LIBRARY_PATH
export ORACLE_TERM=xterm
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export LD_ASSUME_KERNEL=2.4.1
6、创建CRS分区和数据文件分区
1)先建立CRS分区挂载点
mkdir /u01
chown oracle:dba /u01
2)接着创建CRS分区和共享数据文件分区
fdisk /dev/hda
CRS分区只要500M就够了,剩下的全部划分给数据文件分区,这里为数据文件只分了1个区/dev/hda9
CRS分区为/dev/hda8
[root@dbrac root]# fdisk /dev/hda
The number of cylinders for this disk is set to 4997.
[root@dbrac root]# fdisk /dev/hda
The number of cylinders for this disk is set to 4997.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 41.1 GB, 41109061120 bytes
255 heads, 63 sectors/track, 4997 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device BootStart EndBlocks IdSystem
/dev/hda1 * 1 131 1052226 83Linux
/dev/hda2 1321151 8193150 83Linux