Copyright to Jeffrey.Su


前言:

     文档编写日期追溯到13年10月,那时的自己还是一枚学生。基本上是三无人员 。听老湿说RAC很高大上,遂弄之。那是啥也不太懂 神马udev 神马 block 什么 ASM 等等 。一切从零开始 , 开始网上收集文档 补充知识 。借鉴了很多文档 。向开源的前辈致敬! 再说说装备之简陋 ,可以称之为小米加***。整体装备 i5 2450 Ram 4G disk 5400/r . @_@

这里内存是最要命的 官方说明rac 单机 物理内存至少是1.5G 。 都分1.5 的话 再加一个 openfiler 机器不就成蜗牛了吗? 后通过实践 virtual box 的共享磁盘还是蛮方便的,就用它了 。 一点一点网上加内存呀  !! 最终 还是弄到 1.5G 囧囧囧 , 之前是各种报错 。 历时 一周半 从无到有 测试环境算是出来了 , 但是仅做了简单的测试 。 Cpu 风扇 都开始 往外吐灰尘了 。 这是什么节奏呀 @_@ j_0022.gif



文中难免出现纰漏,欢迎大家拍砖 。 j_0017.gif

下面回到正文:


一、配置oracle 11g r2 RAC  

 

1环境介绍:

Node Name

Oracle_SID

Databasename

MEM

OS

OceanI 

oceandb1

   oceandb

1.5G  

Rhel5.4

OceanV   

oceandb2

1.5G

Rhel5.4

这里系统安装建议对node2 不是clone system

网络配置

Node Name

Public IP

Private IP 

Virtual IP 

Scan Name

Scan IP 

解析方式

OceanI 

192.168.1.10

10.10.10.10

192.168.1.11

Ocean-rac

192.168.1.99

hosts

OceanV

192.168.1.20

10.10.10.20

192.168.1.21

 

Oracle 软件组件

软件组件

用户

主组

辅组

主目录

Oracl基本目/Oracle主目录

Grid 

grid

oinstall

asmadmin、asmdba、asmoper

/home/grid

/u01/app/grid

/u01/app/11.2.0/grid

Oracle Rac

grid

oinstall

dba、oper、asmdba

/home/oracle

/u01/app/oracle

/u01/app/oracle/product/11.2.0/db_1

存储组件

存储组件

文件系统

卷大小

ASM卷组名

ASM 冗余

Raw 卷名

OCR表决磁盘

ASM

2GB

+CRSV1

External

raw1

数据库文件

ASM

10GB

+DATEV1

External

raw2

快速恢复区

ASM

5GB

+FRAV1

External

raw3

 在这里存储系统使用的是ASM,在 ASM 上存储 OCR 和表决磁盘文件,具体是存储在一个名为 +CRS 的磁盘组中,该磁盘组使用外部冗余配置,只有一个 OCR 位置和一个表决磁盘位置。ASM 磁盘组应在共享存储器上创建,大小至少为 2GB。Oracle 物理数据库文件(数据、联机重做日志、控制文件、存档重做日志)将安装在 ASM 上一个名为 +DATElv1 的 ASM 磁盘组中,而快速恢复区将在一个名为 +FRAlv1 的 ASM 磁盘组上创建。

 

2、系统配置:

2.1、安装oracle RAC所需的linux软件包:

查看安装的包

 

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel
rpm -q glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat 
 
 
yum -y install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel


 

 

2.2、网络配置:

 

分配IP地址:

这里的 SCAN ip地址必须通过GNS或者DNS来解析的,这里使用的是DNS解析.其他地址都在hosts文件里定义。

[root@OceanI ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1OceanI localhost.localdomain localhost
#::1localhost6.localdomain6 localhost6
 
192.168.1.10    OceanI
192.168.1.11    OceanI-vip      #未非配IP
10.10.10.10     OceanI-pri
 
192.168.1.50    OceanV
192.168.1.51    OceanV-vip      #未非配IP
10.10.10.50     OceanV-pri
 
192.168.1.99   Ocean-rac         #未非配IP


 

2.3、集群时间同步服务:

利用linux本身对时间进行同步

service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf  /etc/ntp.conf.org
rm /var/run/ntpd.pid


这步需要做 否则会影响rac稳定运行

 

 

2.4、创建任务角色划分操作系统权限组、用户和目录:

创建以下 O/S 组:

Jeffrey带你一步步安装ORACLE_RAC STEP:ONE_第1张图片

2.4.1 添加Oracle用户组

groupadd -g 1001 oinstall
groupadd -g 1002 asmadmin
groupadd -g 1003 asmdba
groupadd -g 1004 asmoper
groupadd -g 1005 dba
groupadd -g 1006 oper


2.4.2添加Oracle用户

useradd oracle -u 600
useradd grid -u 601


2.4.3  修改Oracle用户所属组

useradd -g oinstall -G dba,asmadmin,asmdba,asmoper grid 
useradd -g oinstall -G dba,oper,asmdba oracle


分别在两节点使用 id grid /id oracle 查看用户ID、组ID 是否一致[之前未指定用户ID、组ID]


2.4.4  设置密码

passwd oracle   (oracle)
passwd grid (grid)


2.5为 grid 用户帐户创建登录脚本

vi /home/grid/.bash_profile

注:在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:

OceanI:ORACLE_SID=+ASM1

OceanV:ORACLE_SID=+ASM2

 

ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export TMP=/tmp
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 
 
 
source /home/grid/.bash_profile


2.6为 oracle 用户帐户创建登录脚本

vi /home/oracle/.bash_profile

注:在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用: 

OceanI:ORACLE_SID=oceandb1

OceanV:ORACLE_SID=oceandb2

加入.bash_profile

 

ORACLE_SID=oceandb1; export ORACLE_SID
ORACLE_UNQNAME=oceandb; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export TMP=/tmp
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
source /home/oracle/.bash_profile


 

2.7 创建Oracle 基目录路径[两节点均执行相同操作]:

mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid.oinstall /u01/
mkdir -p /u01/app/oracle
chown -R oracle.oinstall /u01/app/oracle/
chmod -R 775 /u01/


2.8 为 Oracle 软件安装用户设置资源限制:

A:修改/etc/security/limits.conf文件,加入以下内容:

#add by lcs for oracle
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536


B:vi /etc/pam.d/login ,加入以下内容:

session required pam_limits.so

C:根据您的 shell 环境,对默认的 shell 启动文件进行以下更改,以便更改所有 Oracle 安装所有者的 ulimit 设置(注意这里的示例显示 oracle 和 grid 用户):

对于 Bourne、Bash 或 Korn shell,通过运行以下命令将以下行添加到 /etc/profile 文件:

#oracle
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
                ulimit -p 16384
                ulimit -n 65536
        else
                ulimit -u 16384 -n 65536
        fi
        umask 022
fi


2.9 为 Oracle 配置 Linux 服务器:

配置内核参数:

/etc/sysctl.conf,添加

#kernel.shmall = 2097152(已有可不修改)
#kernel.shmmax = 2147483648(已有可不修改)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 9000 65500
fs.suid_dumpable = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576


/sbin/sysctl -p    #是修改参数立即生效

2.10 配置系统安全设置[两节点均执行]

iptables -F
/etc/init.d/iptables save
chkconfig iptables off
vim /etc/selinux/config
SELINUX=disabled


2.11 修改tmpfs的大小

umount tmpfs
mount -t tmpfs shmfs -o size=3000m /dev/shm
修改/etc/fstab文件,增加tmpfs大小
vi /etc/fstab
tmpfs                   /dev/shm                tmpfs defaults,size=3G  0 0


2.12 配置RAC 节点以便可以使用 SSH 进行远程访问

略………

2.13共享磁盘配置:

[注]:这里的共享磁盘选择固定大小 添加方式和添加其他虚拟硬盘方式一样 这里不做过多的说明。

Jeffrey带你一步步安装ORACLE_RAC STEP:ONE_第2张图片

共享磁盘上创建分区:

只创建一个分区,在一个节点上执行即可,如下:


2.14使用u_dev绑定裸设备:

[root@OceanI ~]# vim /etc/udev/rules.d/60-raw.rules 
 
# Enter raw device bindings here.
#
# An example would be:
#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
 
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
 
KERNEL=="raw1", OWNER=="grid", GROUP=="asmadmin", MODE="660"
KERNEL=="raw2", OWNER=="grid", GROUP=="asmadmin", MODE="660"
KERNEL=="raw3", OWNER=="grid", GROUP=="asmadmin", MODE="660"
KERNEL=="raw4", OWNER=="grid", GROUP=="asmadmin", MODE="660"
然后启动udev服务生成RAW设备
[root@OceanI /]# start_udev
Starting udev:                                        [OK]
接着验证udev是否成功生成
[root@OceanI ~]# ls -l /dev/raw
total 0
crw-rw---- 1 grid asmadmin 162, 1 Sep 27 05:04 raw1
crw-rw---- 1 grid asmadmin 162, 2 Sep 27 05:04 raw2
crw-rw---- 1 grid asmadmin 162, 3 Sep 27 05:04 raw3
crw-rw---- 1 grid asmadmin 162, 4 Sep 27 05:04 raw4
 
[root@OceanI ~]# scp /etc/udev/rules.d/60-raw.rules OceanV:/etc/udev/rules.d/60-raw.rules
               # start_udev


 

 

2.15  重新启动系统

Reboot

检查之前配置





到这里基本上环境都准备好了 ,下篇讲解 GRID 的安装 。