RAC 配置及安装
2012年12月30日 星期日
21:49
*******************************************************************************
一、RAC (real application cluster 真正的可应用的集群工具) 安装规划
1)前期规划
确认集群节点数量,每个节点的主机名;
区分Public、Private NIC;确认第个主机的3个IP地址;
数据库存储技术选型(ASM/OCFS/RAW/Other);redo 1+0 data raid5
存储空间规划,包括软件安装位置、数据库文件位置规划;
2)配置节点主机
配置主机名和3个IP地址;
RPM包检查;
磁盘分区:配置裸设备;
系统需求(OS Kernel参数、空间需求);
创建Oracle用户,要求每个节点UID、GID相同;
定义Oracle用户的环境变量,包括$ORACLE_HOME、$CRS_HOME、资源数量限制。
用户等价;节点时间同步;
Hangcheck-timer模块配置
3)安装部署
安装Oracle Clusterware,安装后进行检查;
安装Oracle Database;创建ASM磁盘;
配置Listener;创建ASM;创建RAC数据库;
安装后测试,Failover和Loadbalance
4)实施阶段
主机配置
安装Clusterware
安装Oracle Database
配置Listener
创建ASM
创建Database
*******************************************************************************
二、实施安装
1)操作系统安装
*****************************************
添加共享磁盘
1.1)RAC1 添加磁盘
添加虚拟磁盘 20G 。
1.2)修改磁盘为共享模式
-> 虚拟介质设置 -> modify -> 选择 shareable
1.3) RAC2 添加磁盘
选择 existing .
*****************************************
配置hosts(所有节点)
# vi /etc/hosts
192.168.8.3 rac1 公有地址 eth0
192.168.8.4 rac1-vip vip地址
10.10.10.3 rac1-priv 私有地址 eth1
192.168.8.5 rac2 公有地址 eth0
192.168.8.6 rac2-vip vip地址
10.10.10.5 rac2-priv 私有地址 eth1
关闭邮件服务开机自动启动
#chkconfig sendmail off
*****************************************
启动RAC1 RAC2 修改主机名和IP (删除网关)
#vi /etc/sysconfig/network 修改主机名
NETWORKING=yes
HOSTNAME=XXXXX
#vi /etc/sysconfig/network-scripts/ifcfg-eth0 公有地址
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.8.3
GATEWAY=192.168.8.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
#vi /etc/sysconfig/network-scripts/ifcfg-eth1 (从eth0复制而来 不需要网关)
DEVICE=eth1
BOOTPROTO=static
IPADDR=10.10.10.3
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
重启网络服务
service network restart
*****************************************
主机配置 (RAC1 RAC2)
创建用户和组(所有节点,oracle用户和组具有相同uid和gid)
# groupadd -g 500 oinstall
# groupadd -g 501 dba
# useradd -u 500 -g oinstall -G dba oracle
# passwd oracle
*****************************************
创建目录
# mkdir -p /u01/app/oracle ORACLE主目录
# mkdir -p /u01/crs_1 CRS主目录
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
*****************************************
修改用户oracle的 .bash_profile(rac1,rac2)
注意 RAC1 prod1 RAC2 prod2
#su - oracle
#vi .profile
export EDITOR=vi
export ORACLE_SID=prod1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/crs_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH
umask 022
*****************************************
配置主机间的信任关系(ssh)
RAC1:
# su - oracle
$ mkdir ~/.ssh
$ ssh-keygen -t rsa
$ ssh-keygen -t dsa
RAC2:
# su - oracle
$ mkdir ~/.ssh
$ ssh-keygen -t rsa
$ ssh-keygen -t dsa
RAC1:
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys
$ ssh rac2 cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ ssh rac2 cat .ssh/id_dsa.pub >>.ssh/authorized_keys
$ scp .ssh/authorized_keys rac2:~/.ssh
测试信任关系(在所有节点上)
$ ssh rac1 date 连接RAC1 测试时间准确性
$ ssh rac1-priv date
$ ssh rac2 date
$ ssh rac2-priv date
*****************************************
配置内核参数
# vi /etc/sysctl.conf
kernel.shmall = 2097171
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
#sysctl -p
*****************************************
为 oracle 用户设置 Shell 限制 限制每个用户访问内存时,打开内存的页面数,一个软限制一个硬限制
# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
*****************************************
#vi /etc/pam.d/login
session required /lib/security/pam_limits.so
# vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
*****************************************
配置 Hangcheck 计时器
hangcheck_tick=30 为每隔30秒检测一次心跳 hangcheck_margin=180 为180秒没有回应就确认对方挂了
# vi /etc/rc.local 心跳测试
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
配置ntp时间同步服务(rac1 server,rac2 client)
RAC1:
[root@rac1 ~]# chkconfig --list | grep time
# chkconfig time-udp on
# chkconfig time on
# chkconfig ntpd on
# chkconfig xinetd on
# service ntpd start
Starting ntpd: [ OK ]
# service xinetd start
Starting xinetd:
RAC2:
# crontab -e 创建文件
0-59/1 * * * * /usr/bin/rdate -s 192.168.8.3 >/dev/null 2>&1 服务器IP
0-59/1 * * * * /usr/sbin/ntpdate 192.168.8.3 >/dev/null 2>&1 服务器IP
# rpm -q make gcc compat-db
*****************************************
配置共享磁盘
# fdisk -l
Disk /dev/hdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 1305 10482381 83 Linux
/dev/hdc2 1306 1573 2152710 82 Linux swap
/dev/hdc3 1574 2610 8329702+ 83 Linux
Disk /dev/hdb: 42.9 GB, 42949672960 bytes 新加盘为hdb
16 heads, 63 sectors/track, 83220 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk /dev/hdb doesn't contain a valid partition table
# fdisk /dev/hdb
Command (m for help): m 查看帮助信息
Command (m for help): p 输出当前信息
Disk /dev/hdd: 42.9 GB, 42949672960 bytes
16 heads, 63 sectors/track, 83220 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n 添加新的分区
Command action
e extended
p primary partition (1-4)
p 主分区
Partition number (1-4): 1
First cylinder (1-83220, default 1): 默认
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-83220, default 83220): 默认
Using default value 83220
Command (m for help): p 输出当前信息
Command (m for help): t change a partition's system id
Selected partition 1
Hex code (type L to list codes): L
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p 输出当前信息
Command (m for help): w 保存修改
[root@rac1 ~]# fdisk -l
*****************************************
建立pv (物理卷)
# pv 两次 TAB TAB 可以查看所有子菜单
# pvcreate /dev/hdb1
# pvdisplay
建立vg(卷组) RAC1
# vgcreate racvg /dev/hdb1 vgcreate 卷组名 设备
# vgdisplay
建立lv (逻辑卷)
# lvcreate -L 200m -n ocr1 racvg -L 大小 -n 节点 卷组名
依次建立 裸设备
# ls -l /dev/mapper
total 0
crw------- 1 root root 10, 63 Sep 8 02:29 control
brw-rw---- 1 root disk 253, 7 Sep 8 05:55 racvg-archive
# reboot
# pvscan
# vgchange -a y racvg 强制同步数据
*****************************************
建立raw 设备(裸设备,在所有节点) (RAC1 RAC2 )
# vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/mapper/racvg-data
重启裸设备(所有节点)
# service rawdevices restart
# ls -l /dev/raw
改变裸设备的所有者(所有节点) (RAC1 RAC2)
# vi /etc/udev/permissions.d/50-udev.permissions
修改裸设备raw 所属用户
# service rawdevices restart(所有节点)
# ls -l /dev/raw
*****************************************
安装配置asm ( rac1 rac2 )
查看系统内核
[root@rac1 ~]# uname -a
启动smb服务
[root@rac1 ~]# service smb start
[root@rac1 ~]# smbpasswd -a oracle
安装和配置asm (注意要和内核匹配,在所有节点)(rac1 rac2 )
[root@rac1 ASM]# ls -l
oracleasm-2.6.9-67.ELsmp-2.0.3-1.i686.rpm
2012 oracleasmlib-2.0.4-1.el4.i386.rpm
2012 oracleasm-support-2.1.4-1.el4.i386.rpm
[root@rac1 ASM]# uname -a
Linux rac1 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux
[root@rac1 ASM]# rpm -ivh *
[root@rac1 ASM]# service oracleasm configure ( rac1 rac2 )
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
*****************************************
安装Clusterware
直接 next
specify inventory directory and credentials 指定清单目录 详细目录 默认
specify home details 修改主目录
修改路径 /u01/crs_1
specify cluster configuration 修改集群信息
添加 RAC2 配置同RAC1
specify network interface usage 修改网络信息
修改etho 地址 public
specify Oracle cluster registry location
external redundancy 选择 external 只需 1 块盘
OCR location : /dev/raw/raw3 ocr地址
voting disk location: /dev/raw/raw6 vot地址
开始安装咯
安装进度
执行配置脚本
RAC1 RAC2 (ROOT用户运行脚本 注意顺序不可颠倒)
/u01/app/oracle/orainventory/orainstRoot.sh
/u01/crs_1/root.sh
最后报错: eth0 is not public .
解决方法:RAC2 root身份执行脚本 /u01/crs_1/bin/下的 vipca 图形化界面:选择 eth0
[root@rac2 ~]$ ./u01/crs_1/bin/vipca
选择 eth0
在IP Alias Name 里面输入 rac1 rac2后面的地址自动显示出来
rac1 rac1_vip 192.168.8.3 ...
rac2 rac2_vip 192.168.8.5 …
vipca 安装进度 就等安装完成咯
最后返回刚才位置点击 ok
这里最后的检测不能出问题
到此CRS就安装完了。
*****************************************
安装完成之后 crs_stat -t 查看 crs 状态
[oracle@rac1 ~]$ vi /etc/profile 添加path 方便root用户使用crs (RAC1 RAC2 )
export PATH=$PATH:/u01/crs_1/bin
[oracle@rac1 ~]$ source /etc/profile 刷新
*****************************************
4)安装Oracle Database
直接 next
选择企业版
specify home details 修改主目录
修改路径 /u01/app/oracle/product/10.2.0/db_1
这里默认选择了一项,因为可以做为单机的,也可以做为集群的,这里做集群,所以
选择 rac1 rac2
检测应该没问题
仅仅安装软件
这里就可以开始安装咯
rac1 rac2 root 用户执行脚本
/u01/app/oracle/product/10.2.0/db_1/root.sh
数据库也 ok了
5)配置Listener
[oracle@rac1 ~]$ netca 配置 监听
选择 cluster configuration 集群环境下
全选 两个节点
一路 next 下来
6)创建Database
node selection : 全选 rac1 rac2
general purpose 一般用途
设置数据库名 sid
management option 默认即可
设置密码
这里选择ASM
创建asm 实例
11设置密码
12 create initalization praameter file 下面选择PFILE(这个PFILE文件是ASM实例的PFILE)
ASM实例用来管理磁盘,要启动数据库的实例首先启动ASM的实例
asm 实例 创建中
asm disk groups(磁盘组)
create new :
DG1 normal 至少选择两块磁盘 (用作镜像)
RECOVER normal 至少选择两块磁盘 (用作镜像)
建立第一个磁盘组,名为DG1,用来存放数据库的数据
Redundancy 冗余有三种冗余方式
High 需要三块磁盘;
Normal需要两块磁盘;
External需要一块磁盘;
这里选择Normal,两块磁盘做镜像
这里指定数据文件存放在哪个磁盘组,这里默认为DG1
这里指定Flash Recovery的存放位置,这里指定 +RECOVERY
这面也可以启动归档,这里不启动
选择系统模板
解除SCOTT用户的锁,密码输入tiger
到此RAC安装结束!!!!!
********************************************************************************************