Fork me on GitHub
Suzf  Blog

Jeffrey带你一步步安装ORACLE_RAC STEP:ONE

License: Attribution-NonCommercial-ShareAlike 4.0 International

本文出自 Suzf Blog。 如未注明,均为 SUZF.NET 原创。

转载请注明:http://suzf.net/post/85

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 风扇 都开始 往外吐灰尘了 。 这是什么节奏 T_T

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

下面回到正文:

一、配置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 组:

wKioL1UlR9Dz4-00AAFpOn4hR2Y571.jpg
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。对于此示例,我使用:

o OceanI:ORACLE_SID=+ASM1

o 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。对于此示例,我使用:

o OceanI:ORACLE_SID=oceandb1

o 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、共享磁盘配置:

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

wKiom1UlR_6wxGz0AAMkF1efcxY446.jpg

在共享磁盘上创建分区:

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

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 的安装 。

本文出自 “Jeffrey Blog” 博客,转载请注明出处 !

 

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

Suzf Blog

(๑>ڡ<)☆ 谢谢 ~

使用微信扫描二维码完成支付