环境:CentOS CentOS release 6.5 (Final) 64bite
oracle版本:ORACLE 11G R2.0.4 64bite
规划方案:
IP规划
#public network (eth0)
192.168.48.10 rac1
192.168.48.20 rac2
#private network (eth1)
10.0.0.1 rac1-priv
10.0.0.2 rac2-priv
$public virtual ip(vip)
192.168.48.11 rac1-vip
192.168.48.21 rac2-vip
#single client access name(scan)
192.168.48.100 rac-scan
存储规划
sdb1 raw1 10G DATA 存放数据文件
sdc1 raw2 5G ARCH 归档日志
add1 raw3 2G OCR 存放ocr和voting
安装过程
环境部署
一.vmware设置
内存:2048 处理器:1 网卡:2(host only) 去除不必要的硬件
二.centos安装
a.网络设置:在hostname,在设置界面编辑两块网卡
b.磁盘划分: swap:4096,/boot:200,/:fill to max
c.安装包选择:自己的习惯是选择所有的开发包
d.修改主机名
vi /etc/sysconfig/network
[root@rac1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rac1
vi /etc/hosts 在后面加入主机名的解析
[root@rac1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
192.168.48.10 rac1
三.操作系统配置
a.配置hosts文件,复制网络ip规划到Host文件
[root@rac1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
192.168.48.10 rac1
#public network (eth0)
192.168.48.10 rac1
192.168.48.20 rac2
#private network (eth1)
10.0.0.1 rac1-priv
10.0.0.2 rac2-priv
$public virtual ip(vip)
192.168.48.11 rac1-vip
192.168.48.21 rac2-vip
#single client access name(scan)
192.168.48.100 rac-scan
b.关闭selinux,iptables,ntp时间同步
>vi /etc/selinux/config
SELINUX=disabled #将SELINUX的配置改为disabled
>service iptables stop #停止iptables
chkconfig iptables off #设置开机不启动
chkconfig --list |grep iptables #确认全部处于off状态
>service ntpd stop #停止NTP服务
chkconfig ntpd off #设置开机不启动
rm -rf /etc/ntpd.conf
rm -rf /var/run/ntpd.pid
c.搭建本地yum源
>挂载安装镜像
>[root@rac1 mnt]# mount /dev/cdrom /mnt/cdrom #mount到mnt目录下
>[root@rac1 mnt]# cp -r cdrom centos/cdrom #复制镜像到指定目录作为本地源
>[root@rac1 cdrom]# vi /etc/yum.repos.d/CentOS-Media.repo
baseurl=file:///mnt/centos/cdrom
gpgcheck=1
enabled=1 #允许使用本地yum源
>移除其他的yum配置文件
[root@rac1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@rac1 yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
[root@rac1 yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak
d.安装软件包
1.yum install glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh compat-libcap1 compat-libstdc++ elfutils-libelf-devel gcc-c++
>需要注意的是,系统里面已经默认安装了ksh,在安装pdksh的话会出现冲突,所以需要先rpm -e ksh,再安装pdksh,
而且pdksh这个包没有纳入centos的安装盘中,需要单独下载
下载地址:http://mirror.centos.org/centos/5/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
2.另外,没有安装图形界面的话需要安装X环境包
> [root@rac1 ~]# yum grouplist |grep 'X'; #不记得具体的包名可以用此查看
[root@rac1 ~]# yum groupinstall 'X Window System';
3.安装虚拟机tools需要的包
> yum install kernel-headers-2.6.32-431.el6.x86_64 gcc
有可能已经安装过
4.安装虚拟机tools
>点击虚拟菜单下的安装虚拟机工具子菜单. 菜单:VM->Install VMware tools....(虚拟机->安装VMware Tools...)
>cp VMwareTools-9.6.0-1294478.tar.gz ../vmtools/VMwareTools-9.6.0-1294478.tar.gz
>tar -xzvf VMwareTools-9.6.0-1294478.tar.gz
>./vmware-install.pl
3.oracle相关环境设置
a.创建用户和组:
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmdba
groupadd asmoper
useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid
useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle
echo -n oracle | passwd --stdin grid #设置grid用户密码为oracle
echo -n oracle | passwd --stdin oracle
b.创建目录
mkdir -p /u01/app/11.2.0/grid ---grid安装目录
mkdir -p /u01/app/grid ---grid的BASE目录,要求不能与上面同一目录的
mkdir -p /u01/app/oracle
chown -R grid:oinstall /u01/app/11.2.0/grid
chown -R grid:oinstall /u01/app/grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
c.修改grid和oracle的bash_profile文件
vi /home/grid/.bash_profile
***************************************
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=rac1; export ORACLE_HOSTNAME
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
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
****************************************
vi /home/oracle/.bash_profile
****************************************
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=rac1; export ORACLE_HOSTNAME
ORACLE_UNQNAME=prod;export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=prod1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
****************************************
d.修改内核参数
vi /etc/sysctl.conf
***************************************
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
****************************************
e.修改oracle用户限制
vi /etc/security/limits.conf
*****************************************
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
******************************************
f.配置 /etc/profile
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
aliasgrep='grep --color=auto'
export PATH=$PATH:/u01/app/11.2.0/grid/bin
******************************************
g.增加swap空间(可选)
1.检查swap大小和硬盘空间 free -m查看内存和swap | df -h查看硬盘空间 ,得有2.7G的空间才可以
2.添加交换文件
mkdir -p /opt/temp
dd if=/dev/zero of=/opt/temp/swap bs=1024 count=2048000 --这个是2G
3.创建交换空间
mkswap /opt/temp/swap
4.启动新增加的2G交换空间
swapon /opt/temp/swap
5.修改/etc/fstab,使新加的2G交换空间在系统重新启动后自动生效
echo "/opt/temp/swap swap swap defaults 0 0" >>/etc/fstab
6.重启生效
h.创建共享磁盘 因为使用的是虚拟机,所以共享磁盘也得用虚拟机配置出来
利用虚拟机自带的工具创建:vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 e:\share\data.vmdk
1.cmd窗口进入 vmware的路径执行:
vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 e:\share\rac1-1.vmdk
vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 e:\share\rac1-2.vmdk
vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 e:\share\rac1-3.vmdk
2.修改虚拟机配置文件rac1.vmx,添加
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"
scsi1.sharedBus = "VIRTUAL"
scsi1.virtualDev = "lsilogic"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "E:\Share\RAC1-1.vmdk"
scsi1:1.writeThrough = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""
scsi1:2.present = "TRUE"
scsi1:2.fileName = "E:\Share\RAC1-2.vmdk"
scsi1:2.writeThrough = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""
scsi1:3.present = "TRUE"
scsi1:3.fileName = "E:\Share\RAC1-3.vmdk"
scsi1:3.writeThrough = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""
3.重启
4.磁盘分区 可以用fdisk -l查看刚才添加的磁盘
fdisk /dev/sdb >u>n>p>1>default>default>w
fdisk /dev/sdc >u>n>p>1>default>default>w
fdisk /dev/sdd >u>n>p>1>default>default>w
5.利用udev工具绑定裸设备
>[root@rac1 ~]# vi /etc/udev/rules.d/60-raw.rules
添加以下内容
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"
KERNEL=="raw1", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw2", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw3", OWNER="grid", GROUP="asmadmin", MODE="660"
6.start_udev
Starting udev: [ OK ]
可以用 ll/dev/raw查看是否绑定成功
至此,安装前的环境已经搭建后
四.克隆节点
1.复制文件夹->'i copy it'->
2.克隆后网络配置
a.vi /etc/udev/rules.d/70-persistent-net.rules #删除掉关于eth0,eth1的信息,修改eth2,eth3网卡的
名字为eth0,eth1
b.vi /etc/sysconfig/network-scripts/ifcfg-eth0 #分别修改eth0和eth1的mac地址为a中修改后对应的mac
c.修改ip地址 vi /ifcfg-eth0 #按照ip规划修改rac2的IP地址
service network restart
3.修改rac2主机名配置
vi /etc/hosts
vi /etc/sysconfig/network
4.修改 .bash_profile配置的实例名
vi /home/grid/.bash_profile
vi /home/oracle/.bash_profile
五.配置节点互信
1.为ssh何scp创建连接(rac1和rac2都要执行)
ls -l /usr/local/bin/ssh
ls -l /usr/local/bin/scp
不存在则创建
[root@rac1 ~]# /bin/ln -s /usr/bin/ssh /usr/local/bin/ssh
[root@rac1 ~]# /bin/ln -s /usr/bin/scp /usr/local/bin/scp
2.为grid用户配置SSH
在每个节点上
[root@rac1 ~]# su - grid
[grid@rac1 ~]$ mkdir ~/.ssh
[grid@rac1 ~]$ cd .ssh
[grid@rac1 .ssh]$ ssh-keygen -t rsa
[grid@rac1 .ssh]$ ssh-keygen -t dsa
在节点1上:
[grid@rac1 .ssh]$ touch authorized_keys
[grid@rac1 .ssh]$ ssh rac1 cat /home/grid/.ssh/id_rsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac2 cat /home/grid/.ssh/id_rsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac1 cat /home/grid/.ssh/id_dsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac2 cat /home/grid/.ssh/id_dsa.pub >> authorized_keys
[grid@rac1 .ssh]$ scp authorized_keys rac2:/home/grid/.ssh/
分别在每个节点上
[grid@rac1 .ssh]$ ssh rac1 date
[grid@rac1 .ssh]$ ssh rac2 date
[grid@rac1 .ssh]$ ssh-agent $SHELL
[grid@rac1 .ssh]$ ssh-add
3.为oracle用户配置SSH
[grid@rac1 .ssh]$ su - oracle
[oracle@rac1 ~]$ mkdir ~/.ssh
[oracle@rac1 ~]$ cd .ssh
[oracle@rac1 .ssh]$ ssh-keygen -t rsa
[oracle@rac1 .ssh]$ ssh-keygen -t dsa
在节点1上
[oracle@rac1 .ssh]$ touch authorized_keys
[oracle@rac1 .ssh]$ ssh rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac1 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac2 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ scp authorized_keys rac2:/home/oracle/.ssh/
分别在每个节点上
[oracle@rac1 .ssh]$ ssh rac1 date
[oracle@rac1 .ssh]$ ssh rac2 date
[oracle@rac1 .ssh]$ ssh-agent $SHELL
[oracle@rac1 .ssh]$ ssh-add
六.安装前环境检查
以grid用户在grid解压目录下面运行:
./runcluvfy.sh stage -post hwos -n rac01,rac02 -verbose ----检查两个节点
./runcluvfy.sh comp ssa -n rac1,rac2 -s /dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw3 ---检查共享存储
七.安装grid infrastructure
su - grid
cd /software/grid/
./runInstaller #启动安装程序
<1>Skip sofware updates #跳过软件更新
<2>Install and Configure Oracle Grid Infrastructurs for a Cluster #安装集群件
<3>Advanced Installation #高级安装
<4>Simplifies Chinese/Traditional Chinese #支持简体/繁体中文
<5>oradbrac/oradbrac-scan/1521 #集群件参数
注意:1.集群名自己取,如rac-cluster
2.SCAN名需要和/etc/hosts中的scan ip别名一致(rac-scan),端口默认,不选GNS,next
<6>点 add 输入 oradbrac2/oradbrac2-vip #添加第二个节点信息
选择ssh连接测试,输入密码后,点击setup,建立成功后可以test
<7>确认回显信息,点next即可!
<8>选择Oracle Automatic Storage Management(Oracle ASM)
<9>Disk Group Name OCR #设置集群件存储名
Redundancy External #外部磁盘冗余
选择 OCR(2G) #选择共享存储
<10>Do not use Intelligent Management Interface(IPMI) #不使用IPMI
<11>确认回显信息(ASM磁盘用户及组),点next
<12>确认安装路径,点next
<13>确认安装路径,点next
注意:此处可能会碰到一些路径是之前没有创建的,在两个节点建立即可,并确保有写入的权限
<14>依赖包检测,对于缺失的包,请:
1、rpm -qa|grep 关键字 查看系统是否安装高版本包,如果已安装可忽略
2、缺失的包使用 rpm -ivh 或者 yum install 安装,可以用yum list compat* 来检测可用的包
3、Network Time Protocol(NTP),Task resolv.conf Intergrity 检测忽略
点 next 下一步
<15>确认回显信息,点 Install 开始安装
<16>等待弹出root.sh用户执行脚本窗口时执行:
跑脚本的顺序一定要对,先在RAC1执行第一个脚本,再到RAC2执行第一个脚本,然后到RAC1执行第一脚本,最后再去RAC2执行第二个脚本
oradbrac1(root用户): /u01/app/oraInventory/orainstRoot.sh
oradbrac2(root用户): /u01/app/oraInventory/orainstRoot.sh
oradbrac1(root用户): /u01/app/11.2.0/grid/root.sh
出现Adding daemon to inittab时,需要不停地执行命令:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 直到 Adding daemon to inittab 成功
oradbrac2(root用户): /u01/app/11.2.0/grid/root.sh
出现Adding daemon to inittab时,需要不停地执行命令:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 直到 Adding daemon to inittab 成功
注意:以上四个脚本必须没有错误才可以,否则请铲掉重来(两个节点一样):
1、rm -fr /u01/*
2、rm -fr /etc/oracle/*
3、mkdir /u01/app/oracle -p
chown -R oracle.oinstall /u01/app/oracle/
chown -R grid.oinstall /u01
chmod -R 775 /u01
su - grid
mkdir -p $ORACLE_BASE
mkdir -p $ORACLE_HOME
exit
su - oracle
mkdir -p $ORACLE_HOME
exit
<17>点 OK 继续安装。
[INS-10014]...暂时不知道什么原因,也暂时忽略掉
出现 [INS-20802]Oracle Cluster Verification Utility Failed. 点 OK 忽略即可!
<18>点Close完成 Grid Infrastructure 的安装
八、安装Oracle DataBase 软件
安装前检查
su - grid
crs_stat -t -v #查看CRS状态
可以看到oradbrac1和oradbrac2两个节点都处于ONLINE状态即可
安装DataBase
exit
su - oracle
cd /software/database
./runInstaller #启动安装程序
<1>不选 I wish to recelve security updates via My Oracle Support
<2>Skip sofware updates
<3>Install database software only #如果是学习,建议只安装database software,如果同时建库
<4>Oracle Real Application Clusters database installation
默认会勾选两个节点,如果只显示一个节点,应该是CRS有问题,建议重装 Grid Infrastructure!
<5>Simplifies Chinese/Traditional Chinese #支持简体/繁体中文
<6>Enterprise Edition(4.7GB) #选择标准数据库还是企业数据库,一般选企业数据库
<7>确认回显信息(数据库软件安装路径),点next即可!
<8>确认回显信息(数据库用户),点next即可!
<9>依赖包检测,点 next 下一步(报错信息应该与安装 Grid Infrastructure 最终检查结果一致)
<10>点击Install开始安装
<11>等待弹出root.sh用户执行脚本窗口时执行:
oradbrac1(root用户): /u01/app/oraInventory/orainstRoot.sh
oradbrac2(root用户): /u01/app/oraInventory/orainstRoot.sh
oradbrac1(root用户): /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
oradbrac2(root用户): /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
<12>点Close完成 Oracle DataBase 的安装
九、在开始建库之前,需要配置存储数据库数据文件的ASM磁盘组
su - grid
asmca #asmca的图形化界面,分别创建Data和Backup磁盘组
Create #创建磁盘组
Disk Group Name : Data
Redundancy : External(None)
勾选 **data
点OK
等会儿会有回显"Gisk Group Data created successfully."
相同方法创建Backup
点 Mount All
点 Yes
确认回显信息正确,点Exit退出!
十、创建实例(建库)
su - oracle
dbca #调出DBCA的图形界面
<1>Oracle Real Application Cluster(RAC) database
<2>Create a Database
<3>General Purpose or Transaction Processing #一般用户数据库,除非用作数据仓库,否则建议选此项
<4>Global Database Name:oradbrac
SID Prefix (会随着 Global Database Name 变化,不需要修改)
确认oradbrac1和oradbrac2都被勾选
点next
<5>不勾选 Configure Enterprise Manager ,点 next
<6>Use the Same Administrative Password for All Accounts
输入密码,点 next
<7>Use Oracle-Managed Files
+Data #存储数据文件
<8>Fast Recovery Area
+Backup #存储闪存文件和备份文件,在线日志等
<9>不勾选 Sample Schemas #数据库自带样例
<10>点标签 Character Sets 设置数据库字符集后点 next
一般勾选 ZHS16GBK-GBK 16-bit Simplified Chinese
<11>点 next
<12>确认信息后 点 ok 开始建库
<13>弹出回显窗口点 Exit 完成建库
重要参考资料(感谢):
http://blog.itpub.net/25960404/viewspace-1127317/
http://www.cnblogs.com/mophee/archive/2013/06/01/3107137.html