ORACLE RAC 支持多个实例在同一时间点内通过不同服务对数据库执行相关操作,它提供了一个被称作cluster的集群软件用以支持多个服务同时工作。并且根据业务的需要,也可以扩展数据库实例。
每一个实例有它独有的内存结构和后台进程,ORACLE RAC 通过使用 Cache Fusion (高速缓存融合)来同步各个数据库实例中buffer cache 中的数据,多个数据库实例共享一个数据库。当一个数据库实例2想要访问磁盘上的某数据块,而此时的对该数据块的修改在实例1中的buffer cache中,Cache Fusion 将会将修改后的数据块从实例1的buffer cache中传输给实例2,当然,需要建立节点之间的信任机制。
Oracle Clusterware通过使用如下组件实现对数据库的可伸缩性和该可用性:
?Voting disk:管理集群成员,断定集群节点的网络故障之间的所有权;
?Oracle Cluster Registry (OCR):维护集群配置信息以及配置集群中的任何集群数据库的信息。OCR包含信息如数据库实例运行在哪些节点和服务运行数据库。OCR还存储信息流程和修改控件,OCR驻留在共享存储访问集群中的所有节点。
2.关于 Oracle ASM 自动存储管理
3.关于ORACLE RAC中的网络配置
每个节点至少需要两块网卡,public ip用来向外提供服务,private ip用来实现各节点之间的通信,virtual ip 用来检测当某节点出现故障时实现自动转移。因此virtual ip必须和public ip必须在同一子网作为公共接口。
4.简单安装ORACLE RAC
此处采用redhat5.4版本安装操作系统,虚拟机版本为vmware 9.0 ,数据库版本为oracle database 10.0.2
搭建之前的准备,准备虚拟机一个,创建三个外磁盘,一个用于ocr(1G),一个votedisk(1G),两个用于asm(每个15G) ,四块磁盘设置为独立模式,添加两块网卡,此处采用hostonly连网模式。
5.部署RAC的IP地址规划表如下:
节点rac1的IP规划:
节点1(rac1) | 对应网卡 | IP地址 | 网络名 |
public ip | eth0 | 192.168.10.1 | rac1 |
private ip | eth1 | 10.0.0.1 | rac1-priv |
virtual ip | eth0 | 192.168.10.3 | rac1-vip |
节点2(rac2) | 对应网卡 | IP地址 | 网络名 |
public ip | eth0 | 192.168.10.2 | rac2 |
private ip | eth1 | 10.0.0.2 | rac2-priv |
virtual ip | eth0 | 192.168.10.4 | rac2-vip |
[root@rac1 ~]# groupadd oinstall
[root@rac1 ~]# groupadd dba
[root@rac1 ~]# useradd -d /home/oracle -g oinstall -G dba oracle
[root@rac1 ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@rac1 ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
7. root 用户登录,配置 /etc/hosts ,内容如下:[root@rac1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 rac1 localhost.localdomain localhost
127.0.0.1 localhost
#::1 localhost6.localdomain6 localhost6
#public ip
192.168.10.1 rac1
192.168.10.2 rac2
#private ip
10.0.0.1 rac1-priv
10.0.0.2 rac2-priv
#virtual ip
192.168.10.3 rac1-vip
192.168.10.4 rac2-vip
8.创建rac配置的相关目录
[root@rac1 ~]# mkdir -p /u01/app/oracle/db_1
[root@rac1 ~]# chown -R oracle:oinstall /u01/
9.oracle用户登录,配置 ~/.bash_profile,添加如下内容:
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export CRS_HOME=$ORACLE_BASE/crs
export ORACLE_HOME=$ORACLE_BASE/db_1
export ORACLE_SID=orc1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$CRS_HOME/bin:$PATH
ulimit -u 16384 -n 65536
umask 022
10.root用户下登录,修改内核参数 /etc/sysctl.conf,如下:
首先查看操作系统的内存和交换分区:
[root@rac1 ~]# grep MemTotal /proc/meminfo
MemTotal: 1035140 kB
[root@rac1 ~]# grep SwapTotal /proc/meminfo
SwapTotal: 2097144 kB
添加内容如下:
kernel.shmall = 2097152
#kernel.shmmax = 517570 注意此处不能设置成物理内存的一半
kernel.shmmax=536870912
kernel.shmmni = 4096
kernel.sem = 25032000100128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 102465000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
使配置生效:
[root@rac1 ~]# /sbin/sysctl –p
11.提高oracle用户的shell限制
root用户登录,在 /etc/security/limits.conf添加如下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
12.修改安全限制:
root用户登录,在/etc/pam.d/login添加如下内容:
session required /lib/security/pam_limits.so
13.添加Hangcheck计时器
root用户登录,在/etc/rc.local下添加如下内容:
modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
[root@rac1 ~]# modprobe hangcheck-timer
[root@rac1 ~]# grep Hangcheck /var/log/messages |tail -2
May 14 07:02:06 rac1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
May 14 07:02:06 rac1 kernel: Hangcheck: Using get_cycles().
14.添加分区磁盘
[root@rac1 ~]# fdisk /dev/sdb
[root@rac1 ~]# fdisk /dev/sdc
[root@rac1 ~]# fdisk /dev/sdd
[root@rac1 ~]# fdisk /dev/sde
将原始设备映射到共享分区:
[root@rac1 ~]# vi /etc/sysconfig/rawdevices
添加如下内容:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
/dev/raw/raw3 /dev/sdd1
/dev/raw/raw4 /dev/sde1
使映射立即生效:
[root@rac1 ~]# /sbin/service rawdevices restart
Assigning devices:
/dev/raw/raw1 --> /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2 --> /dev/sdc1
/dev/raw/raw2: bound to major 8, minor 33
/dev/raw/raw3 --> /dev/sdd1
/dev/raw/raw3: bound to major 8, minor 49
/dev/raw/raw4 --> /dev/sde1
/dev/raw/raw4: bound to major 8, minor 65
done
将映射配置到/etc/udev/rules.d/60-raw.rules中,添加内容如下:
ACTION=="add", KERNEL=="/dev/sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", KERNEL=="/dev/sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"
ACTION=="add", KERNEL=="/dev/sdd1",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m"
ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m"
KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="640"
配置分配权限:
[root@rac1 ~]# vi /etc/rc.d/rc.local
#添加如下内容:
chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
chmod 660 /dev/raw/raw4
使绑定的设备生效:
[root@rac1 ~]# start_udev
Starting udev: [ OK ]
[root@rac1 ~]# ls -l /dev/raw
total 0
crw-r----- 1 oracle oinstall 162, 1 May 12 10:10 raw1
crw-r----- 1 oracle oinstall 162, 2 May 12 10:10 raw2
crw-r----- 1 oracle oinstall 162, 3 May 12 10:10 raw3
crw-r----- 1 oracle oinstall 162, 4 May 12 10:10 raw4
15.安装oracle所需软件包
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
libXp-1.0.0-8.1.el5.i386
libXp-devel-1.0.0-8.1.el5.i386
16.为方便配置,本实验对节点2采用拷贝节点1的配置,需要修改IP地址、主机名,以及oracle用户下配置等相关信息:
在启动linux之前(vmware处于关闭状态),修改vmware的工作目录,找到.vmx文件,用记事本打开添加如下信息:(否则两台虚拟机不能同时启动)两台虚拟机都要添加
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:0.deviceType = "disk"
scsi1:3.deviceType = "disk"
scsi1:sharedBus='virtual' ---虚拟机是workstaion时添加,server版本不需要
并且对于节点2中,修改
displayName = "rac2"
scsi0:0.fileName = "D:\RAC10g\rac2\rac1.vmdk"
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29634949/viewspace-1158604/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29634949/viewspace-1158604/