一、实施前期准备工作
1.1 服务器安装操作系统
1.2 Oracle安装介质
1.3 共享存储规划
1.4 网络规范分配
1.1 服务器安装操作系统
配置完全相同的两台服务器,安装相同版本的Linux操作系统。留存系统光盘或者镜像文件。
我这里是RHEL6.2,系统目录大小均一致。对应RHEL6.2的系统镜像文件放在服务器上,供后面配置本地yum使用。
1.2 Oracle安装介质
Oracle 11.2.0.4版本的前3个zip包。 这个用MOS账号自己去support.oracle.com下载,然后只需要上传到节点1即可。
1.3 共享存储规划
从存储中划分出两台主机可以同时看到的共享LUN,3个10G的盘用作OCR和Voting Disk,剩余做数据盘。 根据实际需要选择multipath或者udev绑定设备。这里选用multipath绑定。
multipath -ll
multipath -F
multipath -v2
multipath -ll
1.4 网络规范分配
公有网络 以及 私有网络。
公有网络:两个物理网卡eth1和eth3先做的bonding,然后公网使用绑定后的设备bond0
bond0{public IP,VIP} ScanIP(1~3个);
私有网络:eth0,eth2{2组private IP}
二、安装前期准备工作
2.1 各节点系统时间校对
2.2 各节点关闭防火墙和SELinux
2.3 各节点检查系统依赖包安装情况
2.4 各节点配置/etc/hosts
2.5 各节点创建需要的用户和组
2.6 各节点创建安装目录
2.7 各节点系统配置文件修改
2.8 各节点设置用户的环境变量
2.1 各节点系统时间校对
service ntpd stop
date
#如果时间有问题,就按下面的语法进行设定
date 072310472015 //设定日期为2015-07-23 10:47:00
hwclock -w
hwclock -r
2.2 各节点关闭防火墙和SELinux
service iptables stop
chkconfig iptables off && chkconfig ip6tables off && chkconfig libvirtd off //libvirtd这个服务会调用启动防火墙,所以一起关闭
setenforce 0
#验证防火墙状态为关闭
service iptables status
#验证都是off
chkconfig --list |grep iptables && chkconfig --list |grep ip6tables && chkconfig --list |grep libvirtd
#验证SELinux配置和当前状态
vi /etc/selinux/config
getenforce
2.3 各节点检查系统依赖包安装情况
检查依赖包,没安装的配置本地yum安装即可:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc- gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh ksh compat-libcap1
2.4 各节点配置/etc/hosts
根据主机名和IP规划来配置/etc/hosts
#public ip
172.16.7.112 jyracdb1
172.16.7.114 jyracdb2
#private ip
192.168.10.2 jyracdb1-priv
192.168.10.1 jyracdb2-priv
192.168.20.2 jyracdb1-priv-2
192.168.20.1 jyracdb2-priv-2
#virtual ip
172.16.7.113 jyracdb1-vip
172.16.7.115 jyracdb2-vip
#scan ip
172.16.7.120 jyracdb-scan
2.5 各节点创建需要的用户和组
#新建组:
groupadd -g 700 asmadmin
groupadd -g 701 asmdba
groupadd -g 702 asmoper
groupadd -g 800 oinstall
groupadd -g 801 dba
groupadd -g 802 oper
#新建用户:
useradd -g oinstall -G asmadmin,asmdba,asmoper -u 700 grid
useradd -g oinstall -G dba,asmdba,oper -u 800 oracle
#设置用户密码:
passwd oracle
passwd grid
2.6 各节点创建安装目录
我这里规划的是Oracle DB安装目录/opt/app/oracle,GI安装目录/opt/app/11.2.0/grid 只需要建立/opt/app目录并赋权即可。
mkdir -p /opt/app/ && chown -R oracle:oinstall /opt/app/ && chmod 775 /opt/app && ls -lh /opt
2.7 各节点系统配置文件修改
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 51539607552 //一般设置为系统内存75%单位是字节
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
sysctl -p 生效
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 1024
vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
2.8 各节点设置用户的环境变量
第1个节点grid用户:
export GRID_HOME=/opt/app/11.2.0/grid
export ORACLE_HOME=/opt/app/11.2.0/grid
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=$GRID_HOME/lib:$GRID_HOME/lib32
export ORACLE_BASE=/opt/app/grid
export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_LANG=American_america.ZHS16GBK
第2个节点grid用户:
export GRID_HOME=/opt/app/11.2.0/grid
export ORACLE_HOME=/opt/app/11.2.0/grid
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=+ASM2
export LD_LIBRARY_PATH=$GRID_HOME/lib:$GRID_HOME/lib32
export ORACLE_BASE=/opt/app/grid
export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_LANG=American_america.ZHS16GBK
第1个节点oracle用户:
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=jyzhao1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export ORACLE_BASE=/opt/app/oracle
export NLS_LANG=American_america.ZHS16GBK
第2个节点oracle用户:
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=jyzhao2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export ORACLE_BASE=/opt/app/oracle
export NLS_LANG=American_america.ZHS16GBK
三、GI(Grid Infrastructure)安装
3.1 解压GI的安装包
3.2 安装配置Xmanager软件
3.3 共享存储LUN的赋权
3.4 使用Xmanager图形化界面安装GI
3.5 验证crsctl的状态
3.6 测试集群的FAILED OVER功能
3.1 解压GI的安装包
首先grid用户登录,创建解压介质的目录:
mkdir -p /opt/app/media && chmod 777 /opt/app/media && cd /opt/app/media
然后unzip解压安装GI的安装介质p13390677_112040_Linux-x86-64_3of7.zip
到/opt/app/media这个目录下:
unzip p13390677_112040_Linux-x86-64_3of7.zip -d /opt/app/media
3.2 安装配置Xmanager软件
在自己的Windows系统上成功安装Xmanager Enterprise之后,运行Xstart.exe可执行程序, 配置如下
Session:RAC1
Host:172.16.7.112
Protocol:SSH
User Name:grid
Execution Command:/usr/bin/xterm -ls -display $DISPLAY
点击RUN,输入grid用户的密码可以正常弹出命令窗口界面,即配置成功。
3.3 共享存储LUN的赋权
chown grid:asmadmin /dev/mapper/mpath*
这个重启验证过,multipath对应的原始设备/dev/dm-*的权限重启后会变更为root:disk,而我们需要的权限是grid:asmadminchown grid:asmadmin /dev/mapper/mpath*
将这个加入开机启动脚本/etc/rc.local中。
3.4 使用Xmanager图形化界面安装GI
Xmanager通过grid用户登录,进入介质解压目录,运行runInstaller安装GI
$ cd /opt/app/media/grid/
$ ls
install readme.html response rpm runcluvfy.sh runInstaller sshsetup stage welcome.html
$ ./runInstaller
我这里设定ASM密码:orclasm
创建SYSDG作为OCR和Voting Disk的ASM磁盘组(3个10G的LUN,冗余级别:normal)
安装过程中可忽略的检查项(如果你的检查项中还有其他的,则不可以忽略):
Package:pdksh-5.2.14 //这个RHEL中光盘中没有pdksh这个包,之前准备工作中已安装ksh代替
Package:cvuqdisk-1.0.9-1 //这个可以按提示手工修复,也可以忽略安装后自动修复
Device Checks for ASM
Network Time Protocol(NTP)
Task resolv.conf Integrity
root用户执行2个脚本,需要在各节点分别执行
节点1执行两个脚本的屏幕输出如下:
[root@jyracdb1 ~]# /opt/app/oraInventory/orainstRoot.sh
Changing permissions of /opt/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /opt/app/oraInventory to oinstall.
The execution of the script is complete.
[root@jyracdb1 ~]# /opt/app/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to upstart
CRS-2672: Attempting to start 'ora.mdnsd' on 'jyracdb1'
CRS-2676: Start of 'ora.mdnsd' on 'jyracdb1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'jyracdb1'
CRS-2676: Start of 'ora.gpnpd' on 'jyracdb1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'jyracdb1'
CRS-2672: Attempting to start 'ora.gipcd' on 'jyracdb1'
CRS-2676: Start of 'ora.cssdmonitor' on 'jyracdb1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'jyracdb1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'jyracdb1'
CRS-2672: Attempting to start 'ora.diskmon' on 'jyracdb1'
CRS-2676: Start of 'ora.diskmon' on 'jyracdb1' succeeded
CRS-2676: Start of 'ora.cssd' on 'jyracdb1' succeeded
ASM created and started successfully.
Disk Group SYSDG created successfully.
clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk a64ad5c2080d4fcabfedb69225c4450e.
Successful addition of voting disk 7fee3d0e83e04f4dbf8dac2903b7c575.
Successful addition of voting disk 6cb439677d774ff8bfeea0de9774de7a.
Successfully replaced voting disk group with +SYSDG.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE a64ad5c2080d4fcabfedb69225c4450e (/dev/mapper/mpath_10G_a) [SYSDG]
2. ONLINE 7fee3d0e83e04f4dbf8dac2903b7c575 (/dev/mapper/mpath_10G_b) [SYSDG]
3. ONLINE 6cb439677d774ff8bfeea0de9774de7a (/dev/mapper/mpath_10G_c) [SYSDG]
Located 3 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'jyracdb1'
CRS-2676: Start of 'ora.asm' on 'jyracdb1' succeeded
CRS-2672: Attempting to start 'ora.SYSDG.dg' on 'jyracdb1'
CRS-2676: Start of 'ora.SYSDG.dg' on 'jyracdb1' succeeded
Preparing packages for installation...
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
节点2执行两个脚本的屏幕输出如下:
[root@jyracdb2 app]# /opt/app/oraInventory/orainstRoot.sh
Changing permissions of /opt/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /opt/app/oraInventory to oinstall.
The execution of the script is complete.
[root@jyracdb2 app]# /opt/app/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
Adding Clusterware entries to upstart
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node jyracdb1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Preparing packages for installation...
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
执行完root脚本之后点击OK继续,等待完成安装。
3.5 验证crsctl的状态
[grid@jyracdb1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.SYSDG.dg
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.asm
ONLINE ONLINE jyracdb1 Started
ONLINE ONLINE jyracdb2 Started
ora.gsd
OFFLINE OFFLINE jyracdb1
OFFLINE OFFLINE jyracdb2
ora.net1.network
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.ons
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.registry.acfs
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE jyracdb1
ora.cvu
1 ONLINE ONLINE jyracdb1
ora.jyracdb1.vip
1 ONLINE ONLINE jyracdb1
ora.jyracdb2.vip
1 ONLINE ONLINE jyracdb2
ora.oc4j
1 ONLINE ONLINE jyracdb1
ora.scan1.vip
1 ONLINE ONLINE jyracdb1
[grid@jyracdb1 ~]$
3.6 测试集群的FAILED OVER功能
重启节点2,查看集群状态:
[grid@jyracdb1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE jyracdb1
ora.SYSDG.dg
ONLINE ONLINE jyracdb1
ora.asm
ONLINE ONLINE jyracdb1 Started
ora.gsd
OFFLINE OFFLINE jyracdb1
ora.net1.network
ONLINE ONLINE jyracdb1
ora.ons
ONLINE ONLINE jyracdb1
ora.registry.acfs
ONLINE ONLINE jyracdb1
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE jyracdb1
ora.cvu
1 ONLINE ONLINE jyracdb1
ora.jyracdb1.vip
1 ONLINE ONLINE jyracdb1
ora.jyracdb2.vip
1 ONLINE INTERMEDIATE jyracdb1 FAILED OVER
ora.oc4j
1 ONLINE ONLINE jyracdb1
ora.scan1.vip
1 ONLINE ONLINE jyracdb1
重启节点1:
[grid@jyracdb2 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE OFFLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.SYSDG.dg
ONLINE ONLINE jyracdb1 STOPPING
ONLINE ONLINE jyracdb2
ora.asm
ONLINE ONLINE jyracdb1 Started
ONLINE ONLINE jyracdb2 Started
ora.gsd
OFFLINE OFFLINE jyracdb1
OFFLINE OFFLINE jyracdb2
ora.net1.network
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.ons
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.registry.acfs
ONLINE OFFLINE jyracdb1
ONLINE ONLINE jyracdb2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE OFFLINE
ora.cvu
1 ONLINE ONLINE jyracdb2
ora.jyracdb1.vip
1 ONLINE OFFLINE STARTING
ora.jyracdb2.vip
1 ONLINE ONLINE jyracdb2
ora.oc4j
1 ONLINE ONLINE jyracdb1 STOPPING
ora.scan1.vip
1 ONLINE OFFLINE STARTING
之后;
[grid@jyracdb2 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE jyracdb2
ora.SYSDG.dg
ONLINE ONLINE jyracdb2
ora.asm
ONLINE ONLINE jyracdb2 Started
ora.gsd
OFFLINE OFFLINE jyracdb2
ora.net1.network
ONLINE ONLINE jyracdb2
ora.ons
ONLINE ONLINE jyracdb2
ora.registry.acfs
ONLINE ONLINE jyracdb2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE jyracdb2
ora.cvu
1 ONLINE ONLINE jyracdb2
ora.jyracdb1.vip
1 ONLINE INTERMEDIATE jyracdb2 FAILED OVER
ora.jyracdb2.vip
1 ONLINE ONLINE jyracdb2
ora.oc4j
1 ONLINE ONLINE jyracdb2
ora.scan1.vip
1 ONLINE ONLINE jyracdb2
四、DB(Database)安装
4.1 解压DB的安装包
4.2 DB软件安装
4.3 ASMCA创建磁盘组
4.4 DBCA建库
4.5 验证crsctl的状态
4.1 解压DB的安装包
oracle用户登录,
unzip p13390677_112040_Linux-x86-64_1of7.zip -d /opt/app/media/ && unzip p13390677_112040_Linux-x86-64_2of7.zip -d /opt/app/media/
4.2 DB软件安装
安装grid的时候/opt/app目录权限发生了改变,我们用root用户建立$ORACLE_BASE并赋予权限,各节点执行:
mkdir -p /opt/app/oracle && chown oracle:oinstall /opt/app/oracle
打开Xmanager软件,Oracle用户登录,runInstaller安装数据库软件。
$ cd /opt/app/media/database/
$ ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
$ ./runInstaller
安装过程中可忽略的检查项(如果你的检查项中还有其他的,则不可以忽略):
Package:pdksh-5.2.14 //这个RHEL中光盘中没有pdksh这个包,之前准备工作中已安装ksh代替
Clock Synchronization
Task resolv.conf Integrity
Single Client Access Name(SCAN)
最后root用户按安装提示执行1个脚本,需要在各节点分别执行。
4.3 ASMCA创建磁盘组
打开Xmanager软件,grid用户登录,asmca创建ASM磁盘组 这里我先创建一个DATA磁盘组,冗余选择external(底层存储已经做了RAID),划1块盘(1T容量),以后有需求再后期加入磁盘。
4.4 DBCA建库
打开Xmanager软件,oracle用户登录,dbca图形创建数据库,数据库字符集我这里选择ZHS16GBK。
4.5 验证crsctl的状态
grid用户登录,`crsctl stat res -t` 查看集群资源的状态,发现各节点的DB资源已经正常Open。
[grid@jyracdb1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.LISTENER.lsnr
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.SYSDG.dg
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.asm
ONLINE ONLINE jyracdb1 Started
ONLINE ONLINE jyracdb2 Started
ora.gsd
OFFLINE OFFLINE jyracdb1
OFFLINE OFFLINE jyracdb2
ora.net1.network
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.ons
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
ora.registry.acfs
ONLINE ONLINE jyracdb1
ONLINE ONLINE jyracdb2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE jyracdb2
ora.cvu
1 ONLINE ONLINE jyracdb2
ora.jyracdb1.vip
1 ONLINE ONLINE jyracdb1
ora.jyracdb2.vip
1 ONLINE ONLINE jyracdb2
ora.jyzhao.db
1 ONLINE ONLINE jyracdb1 Open
2 ONLINE ONLINE jyracdb2 Open
ora.oc4j
1 ONLINE ONLINE jyracdb2
ora.scan1.vip
1 ONLINE ONLINE jyracdb2