想必你们在学习ORACLE 11g时,都想搭建一个RAC的实验环境。在搭建RAC实验环境时,会碰到诸如IP怎么规划、虚拟机环境下怎么共享磁盘、ASM磁盘建立,以及安装过程当中会遇到这样那样的问题。搭建一个完整的RAC实验环境下来,少则一天,多则一周,浪费很多时间和精力,一遍又一遍从新系统,遇到一个又一个问题,相信初学者,搭建过RAC的同窗都会有这样的体会。css
此次把搭建RAC的步骤完整的整理出来,以供你们参考,相互交流学习,文中若有错误,欢迎你们斧正。 html
VMware workstationnode
CentOS release 6.10linux
FreeNAS 11.2c++
p13390677_112040_Linux-x86-64_1of7.zip sql
p13390677_112040_Linux-x86-64_2of7.zip 数据库
p13390677_112040_Linux-x86-64_3of7.zip vim
VM主机的内存2G(官方说至少1.5G,安装grid检查仍会警告不够用,安装过程可能出现失败,建议最少2G)。 centos
硬盘30G。 api
网络适配器2个。
网卡添加2个, 11.2开始至少须要4种IP地址。 RAC的IP规划以下:
Hostname |
Type |
IP Address |
Interface |
racnode1 |
Public IP |
192.168.153.101 |
eth0 |
racnode1-vip |
Virtual IP |
192.168.153.201 |
eth0:1 |
racnode1-pip |
Private IP |
10.0.0.101 |
eth1 |
racnode2 |
Public IP |
192.168.153.102 |
eth0 |
racnode2-vip |
Virtual IP |
192.168.153.202 |
eth0:1 |
racnode2-pip |
Private IP |
10.0.0.102 |
eth1 |
scan-cluster |
SCAN IP |
192.168.153.100 |
eth0 |
说明:
Oracle RAC环境下每一个节点都会有多个IP地址,分别为公共IP(Public IP) 、私有IP(Private IP)和虚拟IP(Virtual IP):
私有IP(Public IP)
Private IP address is used only for internal clustering processing(Cache Fusion).
专用(私有)IP地址只用于内部群集处理,如心跳侦测,服务器间的同步数据用。
虚拟IP(Virtual IP)
Virtual IP is used by database applications to enable fail over when one cluster node fails.
当一个群集节点出现故障时,数据库应用程序经过虚拟IP地址进行故障切换。
当一个群集节点出现故障时,数据库应用程序(包括数据库客户端)经过虚拟IP地址切换到另外一个无端障节点,另外一个功能是均衡负载。
公共IP(Public IP)
Public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公共IP地址
正常的(真实的)IP地址,一般DBA和SA使用公共IP地址在来管理存储、系统和数据库。
监听IP(SCAN IP)
从Oracle 11g R2开始,Oracle RAC网络对IP地址有特殊要求,新增了加监听IP地址(SCAN IP),因此从Oracle 11g R2开始Oracle RAC网络至少须要4种IP地址(前面介绍三种IP地址)。在Oracle 11g R2以前,若是数据库采用了RAC架构,在客户端的tnsnames中,须要配置多个节点的链接信息,从而实现诸如负载均衡、Failover等RAC的特性。所以,当数据库RAC集群须要添加或删除节点时,须要及时对客户端机器的tns进行更新,以避免出现安全隐患。
在Oracle 11g R2中,为了简化该项配置工做,引入了SCAN(Single Client Access Name)的特性。该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及SCAN IP Listener,在客户端仅须要配置SCAN IP的tns信息,经过SCAN IP Listener,链接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操做,均不会对Client产生影响。
按前面的IP规划,来设置每一个节点的网卡的IP地址。
[root@racnode1 ~]# cd /etc/sysconfig/network-scripts/ ,根据自身网卡进行配置,示例:
racnode1:
1.编辑eth0网卡: #vi ifcfg-eth0 ,内容以下: DEVICE=eth0 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.101 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" |
2.建立eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,内容以下: DEVICE=eth0:1 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.201 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.编辑eth1网卡: #vi ifcfg-eth1,内容以下: DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.101 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" UUID=1655f5de-c00e-454c-aa8f-501bf70fd60c ONBOOT=yes HWADDR=00:0C:29:FC:92:29 |
racnode2:
1.编辑eth0网卡: #vi ifcfg-eth0 ,内容以下: DEVICE=eth0 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.102 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:0C:29:C9:A7:2D |
2.建立eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,内容以下: DEVICE=eth0:1 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.202 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.编辑eth1网卡: #vi ifcfg-eth1,内容以下: DEVICE=eth1 HWADDR=00:0C:29:C9:A7:37 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.102 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=eth1 UUID=1207dcc1-7a39-45b0-b604-f38e5c90934d ONBOOT=yes LAST_CONNECT=1546520521 |
racnode一、racnode2配置同样
# vim /etc/hosts ,修改内容以下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#racnode1
192.168.153.101 racnode1
192.168.153.201 racnode1-vip
10.0.0.101 racnode1-pip
#racnode2
192.168.153.102 racnode2
192.168.153.202 racnode2-vip
10.0.0.102 racnode2-pip
#scan-ip
192.168.153.100 scan-cluster
[root@localhost ~]# hostname racnode1 ,修改主机名
[root@localhost ~]# hostname racnode2 ,修改主机名
安装RAC,须要创建相应的用户和组。在racnode一、racnode2上进行用户和组的建立:
Group Name |
Group ID |
Group Info |
Oracle User |
Grid User |
oinstall |
1000 |
Inventory Group |
Y |
Y |
dba |
1200 |
OSDBA Group |
Y |
|
oper |
1201 |
OSOPER Group |
Y |
|
asmadmin |
1300 |
OSASM |
Y |
|
asmdba |
1301 |
OSDBA for ASM |
Y |
Y |
asmoper |
1302 |
OSOPER for ASM |
Y |
root 下执行操做:建立组、用户,并设置用户密码
groupadd -g 1000 oinstall
groupadd -g 1200 dba
groupadd -g 1201 oper
groupadd -g 1300 asmadmin
groupadd -g 1301 asmdba
groupadd -g 1302 asmoper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
passwd grid
passwd oracle
在racnode一、racnode2上进行目录的建立和受权:
root 下执行如下操做:
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
racnode1:
[grid@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
[grid@racnode1 ~]$ source .bash_profile
racnode2:
[grid@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
[grid@racnode2 ~]$ source .bash_profile
(2)配置用户环境变量:oracle用户
racnode1:
[oracle@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl1
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
[oracle@racnode1 ~]$ source .bash_profile
racnode2:
[oracle@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl2
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
[oracle@racnode2 ~]$ source .bash_profile
racnode1: ssh-keygen -t rsa #一路回车 ssh-keygen -t dsa #一路回车 |
racnode2: ssh-keygen -t rsa #一路回车 ssh-keygen -t dsa #一路回车 |
先racnode1、再racnode2上执行过上述两条命令后,再回到racnode1再继续执行下面的命令: cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys scp ~/.ssh/authorized_keys racnode2:~/.ssh/authorized_keys chmod 600 .ssh/authorized_keys 两个节点互相ssh经过一次 ssh racnode1 date ssh racnode2 date ssh racnode1-vip date ssh racnode2-vip date ssh racnode1-pip date ssh racnode2-pip date |
在racnode1和racnode2上都要执行
[root@ ~]# vim /etc/sysctl.conf ,在最后添加如下内容:
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
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
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
[root@ ~]# sysctl -p 当即生效
[root@ ~]# vim /etc/security/limits.conf ,在最后添加如下内容:
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
[root@ ~]# vim /etc/pam.d/login,在session required pam_namespace.so下面插入:
session required pam_limits.so
[root@ ~]# service ntpd status
[root@ ~]# chkconfig ntpd off
[root@ ~]# cp /etc/ntp.conf /etc/ntp.conf.bak
[root@ ~]# rm -rf /etc/ntp.conf
[root@ ~]# cp /etc/profile /etc/profile.bak
[root@ ~]# vim /etc/profile,在文件最后添加如下内容:
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
本次搭建:在VMware 虚拟机上安装和配置FreeNAS 11.2,请自行下载所需版本。
【FreeNAS-11.2-RELEASE.iso】
下载地址:https://download.freenas.org/11.2/STABLE/RELEASE/x64/FreeNAS-11.2-RELEASE.iso
3.2.1 打开虚拟机电源。进入安装界面,敲击回车开始安装。
3.2.2 选择第一个"Install/Upgrade",点击OK。
3.2.3 提示内存小于8G。此处做为虚拟测试,可忽略此项错误提示。直接点击Yes。
3.2.4 选择安装在哪一个磁盘上。此处选择20G的磁盘做为系统安装盘。光标上下移动,空格键为选择。而后点击OK。
3.2.5 此处为警告,告知安装位置及清空磁盘数据。直接点击OK。
3.2.6 设置root的密码。
3.2.7 选择引导类型。此处选择 BIOS 类型。
3.2.8 开始安装。等待一段时间后,即安装完毕。
3.2.9 安装完毕后,弹出提示告知安装完毕。直接点击OK。
3.2.10 安装完毕后须要重启。选择第三个"Reboot System"。点击OK。
3.2.11 系统在将重启后,继续安装一些组件。请等待最终安装完毕。
3.2.12 安装完毕后,以下图。参照提示,可根据实际须要去修改配置。
管理地址也已列出。如:http://192.168.153.230
至此,FreeNAS 系统安装完毕。
3.3.1 浏览器登陆: 默认用户为root , 密码为安装系统时所设置的密码。
3.3.2 登陆后以下,根据实际须要进行配置。
3.3.3 根据oracle 11gR2 RAC环境所需的共享存储,进行配置。
第1步、 配置iscsi服务,打开iscsi并开机勾选自启动。
第2步、 依次进入菜单: Sharing – Block(ISCSI),设置Target Global Configuration。
Base Name 可自定义,此处默认。其余可不填写。 点击SAVE保存。
第3步、 设置 Portals :
点击ADD添加,填写IP地址和端口号,而后SAVE保存。
设置后,以下图。
第4步、设置 Initiators :
点击ADD添加,Initiators和Authorized Networks 都选择 ALL ,点击SAVE保存。
设置后,以下图。
第5步、 设置 Authorized Access :
点击ADD添加,此处Group Id、User和Sercret的值能够任意填写,此处分别设置为一、grid和gridasm ,并点击SAVE保存。
设置后,以下图。
第6步、设置 Targets :
Target Name 可随意填写,此处为 asm 。选择 Portal Group ID 、Initiator Group ID ,便是上面所设置的 Group ID。此处为1。其余选项默认便可。 点击SAVE保存。
设置后,以下图。
第7步、设置 Extents :
点击ADD添加,设置Extent name名称;选择Extent type,分为磁盘或者分区,此处选择磁盘。选择磁盘da一、da二、da三、da4等。 选择LUN RPM磁盘转速。其余默认便可。点击SAVE保存。
依次将所需添加的设备添加完毕后,以下图所示。
第8步、设置Associated Targets :
点击ADD添加,选择Target、选择Extent,便是上步设置的asm 、crs、data一、data二、fra等。
设置后,以下图。
racnode各节点,查看系统是否安装iscsi软件包,以centos6.x为例
[root@ ~]# rpm -qa | grep iscsi
iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64
如未安装,请执行 yum install -y iscsi-initiator-utils 进行安装客户端。
查找iSCSI设备,发现共享存储:
[root@ ~]# iscsiadm -m discovery -t sendtargets -p 192.168.153.230
192.168.153.230:3260,1 iqn.2005-10.org.freenas.ctl:asm
# fdisk /dev/sdb
根据提示输入 n、 p、 w 等
# 同理,重复步骤对 sdc sdd sde 完成分区。
分区完毕后,fdisk -l查看以下:
UEK能够从http://public-yum.oracle.com/下载安装:
http://www.rpmfind.net/linux/centos/6.10/updates/x86_64/Packages/kmod-oracleasm-2.0.8-16.el6_10.x86_64.rpm
http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el6.x86_64.rpm
[root@ ~]# yum install kmod-oracleasm
[root@ ~]# rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
[root@ ~]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
1.6.1 配置并装载ASM核心模块,在一个节点操做便可。
[root@racnode1 ~]# oracleasm configure -i ,根据提示输入:
Configuringthe Oracle ASM library driver.
Thiswill configure the on-boot properties of the Oracle ASM library
driver. The following questions will determinewhether the driver is
loadedon boot and what permissions it will have. The current values
willbe shown in brackets ('[]'). Hitting<ENTER> without typing an
answerwill keep that current value. Ctrl-Cwill abort.
Defaultuser to own the driver interface []: grid
Defaultgroup to own the driver interface []: asmadmin
StartOracle ASM library driver on boot (y/n) [n]: y
Scanfor Oracle ASM disks on boot (y/n) [y]: y
WritingOracle ASM library driver configuration: done
[root@racnode1 ~]# oracleasm init
Creating/dev/oracleasm mount point: /dev/oracleasm
Loadingmodule "oracleasm": oracleasm
MountingASMlib driver filesystem: /dev/oracleasm
1.6.2 建立ASM磁盘
[root@racnode1 ~]# oracleasm createdisk CRSVOL1 /dev/sdb1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL1 /dev/sdc1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL2 /dev/sdd1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk FRAVOL1 /dev/sde1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm listdisks
CRSVOL1
DATAVOL1
DATAVOL2
FRAVOL1
使用oracleasm-discover查找ASM磁盘,运行该命令查看是否能找到刚建立的4个磁盘。
[root@racnode1 ~]# oracleasm-discover
UsingASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
[ASMLibrary - Generic Linux, version 2.0.4 (KABI_V2)]
Discovereddisk: ORCL:CRSVOL1 [2096753 blocks (1073537536 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL1 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL2 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:FRAVOL1 [62912480 blocks (32211189760 bytes), maxio 512]
使用oracleasm scandisks 扫描asm磁盘
[root@racnode1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@racnode1 ~]# yum -y install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel numactl-devel sysstat unixODBC unixODBC-devel compat-libstdc++* libXp
[root@racnode1 ~]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm (这个包须要下载)
[root@racnode2 ~]# 同上
请使用grid用户 ,racnode一、racnode2都要执行一下这个脚本。
[grid@racnode1 ~]$ cd /opt/grid/ 切换到软件上传目录
[grid@racnode1 grid]$ ./runcluvfy.sh stage -pre crsinst -n racnode1,racnode2 -fixup -verbose
结果如:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "racnode1"
Destination Node Reachable?
------------------------------------ ------------------------
racnode1 yes
racnode2 yes
Result: Node reachability check passed from node "racnode1"
Checking user equivalence...
Check: User equivalence for user "grid"
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
Result: User equivalence check passed for user "grid"
(中间部分省略粘贴)
(中间部分省略粘贴)
(中间部分省略粘贴)
Checking the file "/etc/resolv.conf" to make sure only one of domain and search entries is defined
File "/etc/resolv.conf" does not have both domain and search entries defined
Checking if domain entry in file "/etc/resolv.conf" is consistent across the nodes...
domain entry in file "/etc/resolv.conf" is consistent across nodes
Checking if search entry in file "/etc/resolv.conf" is consistent across the nodes...
search entry in file "/etc/resolv.conf" is consistent across nodes
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
The DNS response time for an unreachable node is within acceptable limit on all nodes
File "/etc/resolv.conf" is consistent across nodes
Check: Time zone consistency
Result: Time zone consistency check passed
Pre-check for cluster services setup was successful.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
确保两个节点racnode一、racnode2都已经启动,而后以grid用户登陆,开始Oracle Grid Infrastructure安装 【请在图形界面下】
[grid@racnode1 ~]$ cd /opt/grid/ 切换到软件上传目录
[grid@racnode1 grid]$ ./runInstaller
第1步:选择"skip software updates".
第2步:默认便可。选择"Install and Configure Oracle Grid Infrastructure for a Cluster".
第3步:选择高级安装
第4步: 选择English
第5步:去掉Configure GNS,设置Cluster Name,Scan Name,ScanPort:1521.
注意:将SCAN Name与/etc/hosts文件一致。 咱们这里应是: scan-cluster ,Cluster Name能够自定义。
第6步:选择Add,添加节点
Public Hostname输入racnod2, Virtual Hostname输入racnode2-vip
最终结果以下:
验证ssh等效性
1) 若是前置未设置ssh等效性:选择ssh connectivty,输入OS password:grid(grid用户密
码),点击setup,等待便可,成功则下一步。而后点击"T est".
2) 若是前面已经设置了ssh等效性:能够点击"T est",或直接下一步
点击"setup"后
点击"OK"
点击"Test"
点击OK
若是点击"Next",出现[INS-40912]错误:
【这个问题的解答】这是个虚拟IP,当前你应该ping不通。目前你还没安装,暂时不会绑到网卡上。
这个应该在RAC安装完,启动成功后,才会随机往两台机器上的其中一个网卡绑定。
当其中一台机器坏了,自动飘移到另外一台。
【解决办法】ifconfig eth0:1 down 或者 ifdown eth0:1 而后,点击"Next"
第7步:选择网卡2:eth1,InterfaceType: Private,点击"Next"
第8步:默认便可."Oracle Automatic Storage Management(Oracle ASM)"
第9步:建立ASM磁盘组。若未发现磁盘,则点击change Discovery Path,输入磁盘所在地址。
第10步:设置密码,若是密码设置相对简单,会弹出提示,直接继续便可。
第11步—第14步:默认便可.
安装前检查,有些警告提示能够忽略。 若有其它错误,根据具体错误提示进行分析配置。点下一步出现。
第15步: 默认便可,点击 install 开始安装。
第16步:安装进程。
提示执行脚本。
必定要以root账户执行,而且不能同时执行。
先执行racnode1 /u01/app/oraInventory/orainstRoot.sh,
再执行racnode2 /u01/app/oraInventory/orainstRoot.sh
而后,先执行racnode1 /u01/app/11.2.0/grid/root.sh
再执行 racnode2 /u01/app/11.2.0/grid/root.sh
第17步:安装完毕,点击close。 至此rac软件安装完毕。接下来要进行验证。
以racnode1为例粘贴结果,racnode2执行结果此处不粘贴了。
[root@racnode1 ~]# su - grid
[grid@racnode1 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
检查Clusterware资源:[grid@racnode1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.FRA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode2
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode2
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora. racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora. racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora. racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora. racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
检查集群节点
[grid@racnode1 ~]$ olsnodes -n
racnode1 1
racnode2 2
检查两个节点上的Oracle TNS监听器进程:
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'
grid 94448 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 94485 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|awk '{print $9}'
LISTENER
LISTENER_SCAN1
确认针对Oracle Clusterware文件的Oracle ASM功能:
[grid@racnode1 ~]$ srvctl status asm -a
ASM is running on racnode1,racnode2
ASM is enabled.
检查Oracle集群注册表(OCR):
[grid@racnode1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2624
Available space (kbytes) : 259496
ID : 1555425658
Device/File Name : +CRS
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check bypassed due to non-privileged user
检查表决磁盘:
[grid@racnode1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 0d90b0c368684ff5bff8f2094823b901 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).
确保两个节点racnode一、racnode2都已经启动,而后以oracle用户登陆,安装请在图形界面下
进入软件安装包的目录
[oracle@racnode1 database]$ ./runInstaller
第1步:不勾选I wish to …… ,而后点next。
第2步:选择跳过软件更新,点击next。
第3步: 选择仅安装数据库软件,点击next。
第4步: 选择所有节点,并测试ssh互信。
点击SSH Connectivity… ,输入oracle的密码,点击test 测试经过以下提示:
点击OK,而后点击next。
第5步: 选择语言
第6步: 选择安装的数据库类型,此处选择企业版。
第7步: 默认便可
第8步: 默认便可
第9步: 安装前检查,此时检查结果有一条,该条忽略便可。勾选ignore all。点击next。若有其它报错,根据实际状况进行排查处理。
第10步: 默认便可,点击 install 开始安装
第11步: 安装过程当中须要执行脚本
先在racnode1执行,执行完毕以后,再在racnode2中执行。
也能够在安装ORACLE软件以前建立ASM磁盘组。下面开始建立ASM磁盘组。
命令 asmca 启动图形配置 。 点击Create ,建立磁盘组。
Disk Group Name 命名为DATA;
Redundancy选择 External (None);;
disks勾选 DATAVOL一、DATAVOL2;
点击OK,提示建立成功。
同理,建立FRA组。 另外最初安装grid的时候已经配置过CRS。最终结果以下:
其中,点击Mount ALL ,挂载全部磁盘。点击Yes。确认挂载。
第1步: 切换到oracle用户,以oracle用户运行命令 dbca 。弹出开始画面。
选择Oracle Real Application Cluster(RAC)database,点击next。
选择Create a Database,建立一个数据库。点击next。
第2步: 选择General Purpose or Transaction Processing
第3步:选择Configuration Type:Admin-Managed. Global Database Name:testdb. SID Prefix:testdb.
点击"Select ALL". 这里必定要选择所有节点.
第4步: 配置Enterprise Managert 和 Automatic Maintenance Tasks.
第5步:设置密码。"Use the Same Administrative Password for All Accounts"
提示密码过于简单,点击Yes 。
第6步:在"Databse Area",点击"Browse",选择+DATA.
要求设置ASMSNMP密码
第7步:设置FRA和归档。定义快速恢复区(FRA)大小时,通常用整个卷的大小的90%
点击"Browse",选择 FRA
第8步:设置Sample Schemas和Custom Scripts.通常不勾选"Sample Schemas"
第9步:设置内存、SGA和PGA、字符集、链接模式。
选择Typical,SGA and PGA,先用默认的744MB. 后面根据状况也能够调整。
第10步:点击"Next"
第11步:开始建立数据库。选择"Create Database"
建立过程当中。
弹出下图,提示Database creation complete.和相应的提示信息。
点Exit,退出。数据库建立完成。
RAC安装到此完成。
不少说法:Oracle 自身bug, 若是启动失败 root先执行
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
用oracl用户执行srvctl命令
语法:srvctl stop database -d dbname [-o immediate]
做用:能够一次性关闭dbname的全部实例
[oracle@racnode1 ~]$ srvctl stop database -d racdb -中止全部节点上的实例
而后查看状态:
[oracle@racnode1 ~]$ srvctl status database -d racdb
Instance racnode1 is not running on node racnode1
Instance racnode2 is not running on node racnode2
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop has -f
[root@racnode1 bin]# ./crsctl stop crs -f
本命令只能关闭当前节点的CRS服务,所以须要在RAC的全部节点上执行,启动也同样。has与crs等同
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop cluster ----中止本节点集群服务
[root@racnode1 bin]# ./crsctl stop cluster -all ---中止全部节点服务
也能够以下控制所停节点:
[root@racnode1 bin]# crsctl stop cluster -n racnode1 racnode2
CRS-2677: Stop of 'ora.cssd' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.cssd' on 'racnode2' succeeded
。。。。。。。。。。。省略日志输出。。。。。。。。。。。。。。
你若是想一条命令把全部的进程所有中止可使用上述命令。若是不指定参数的话对当前节点有效,若是指定参数的话对相关参数节点有效。
[root@racnode1 bin]# crsctl check cluster
详细输出
[root@racnode1 bin]# crs_stat -t -v
只检查本节点的集群状态
[root@racnode1 bin]# crsctl check crs
单一节点启动
[root@racnode2 ~]# crsctl start has
[root@racnode2 ~]# crsctl start crs
[root@racnode2 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
全部节点启动
[root@racnode1 bin]# crsctl start cluster -n racnode1 racnode2
CRS-4123: Oracle High Availability Services has been started.
[root@racnode1 bin]# crsctl start cluster -all
[root@racnode2 ~]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
此命令会在后台启动全部RAC CRS相关进程
[root@racnode2 ~]# crs_stat -t -v
CRS-0184: Cannot communicate with the CRS daemon.
由于start has启动的crs进程比较多所以会启动的比较慢,个人机器等待了5分钟,在没有彻底启动成功以前会报上述错误,须要耐心等待一段时间后执行下面命令便可查看到全部CRS相关进程服务已经启动。
[root@racnode2 ~]# crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode2
ora....N2.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora....N3.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora.racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora.racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora.racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora.racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan2.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
ora.scan3.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
说明:
英文解释
ora.gsd is OFFLINE by default ifthere is no 9i database in the cluster.
ora.oc4j is OFFLINE in 11.2.0.1 as DatabaseWorkload Management(DBWLM) is unavailable. these can be ignored in11gR2 RAC.
中文解释
ora.gsd是集群服务中用于与9i数据库进行通讯的一个进程,在当前版本中为了向后兼容才保存下来,状态为OFFLINE不影响CRS的正常运行与性能,咱们忽略便可
ora.oc4j是在11.2.0.2以上版本中有效的服务进程,用于DBWLM的资源管理,所以在11.2.0.1如下版本并无使用
oracl用户执行srvctl命令:
语法:srvctl start|stop|status database -d dbname [-o immediate]
做用:能够一次性启动dbname的全部实例
[oracle@racnode1 ~]$ srvctl start database -d racdb -启动全部节点上的实例
而后查看状态:
[oracle@racnode1 ~]$ srvctl status database -d racdb
在root下执行命令,请配置环境变量,可省略完整路径。
export ORACLE_HOME=/u01/grid/product/11gr2
export PATH=$ORACLE_HOME/bin:$PATH
(1).详细输出资源全名称并检查状态
crsctl status resource -t
crsctl status resource
(2).经常使用srvctl命令
指定dbname上某个实例
srvctl start|stop|status instance -d <dbname> -i <instance_name>
(3).显示RAC下全部实例配置与状态
srvctl status|config database -d <dbname>
(4).显示全部节点的应用服务(VIP,GSD,listener,ONS)
srvctl start|stop|status nodeapps -n<node_name>
(5).ASM进程服务管理
srvctl start|stop|status|config asm -n <nodename>[-i <asm_inst_name>] [-o<oracle_home>]
srvctl config asm -a
srvctl status asm -a
(6).能够获取全部的环境信息:
srvctl getenv database -d <dbname> [-i<instance_name>]
(7).设置全局环境和变量:
srvctl setenv database -d<dbname> -t LANG=en
(8).在OCR中删除已有的数据库信息
srvctl remove database -d <dbname>
(9).向OCR中添加一个数据库的实例:
srvctl add instance -d <dbname> -i<instance_name> -n <node1>
srvctl add instance -d <dbname> -i<instance_name> -n <node2>
(10).检查监听的状态
srvctl status listener
srvctl config listener -a
(11)SCAN配置信息
srvctl config scan
(12)SCAN listener状态信息
srvctl status scan
小结:crsctl命令是一个集群级别命令,能够对全部集群资源进行统一启动、中止等管理操做
srvctl命令是一个服务级别命令,能够对单一服务资源进行统一启动、中止等管理操做
查看数据库实例
#su - oracle
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl2 OPEN
查看datafile、logfile、controfile
SQL> select TS#,STATUS,NAME from v$datafile;
TS# STATUS NAME
---------- --------------------- ---------------------------------
0 SYSTEM +DATA/testdb/datafile/system.256.911229287
1 ONLINE +DATA/orcl/datafile/sysaux.257.911229291
2 ONLINE +DATA/ orcl /datafile/undotbs1.258.911229293
4 ONLINE +DATA/ orcl /datafile/users.259.911229293
6 ONLINE +DATA/ orcl /datafile/example.264.911229559
5 ONLINE +DATA/ orcl /datafile/undotbs2.265.911230235
查看logfile:
SQL> desc v$logfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
GROUP# NUMBER Y
STATUS VARCHAR2(7) Y
TYPE VARCHAR2(7) Y
MEMBER VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
SQL> select GROUP#,STATUS,MEMBER from v$logfile;
GROUP# STATUS MEMBER
---------- ------------------------------------------ -------
2 +FRA/orcl/onlinelog/group_2.262.997887279
2 +CRS/orcl/onlinelog/group_2.258.997887279
1 +FRA/orcl/onlinelog/group_1.261.997887277
1 +CRS/orcl/onlinelog/group_1.257.997887277
3 +FRA/orcl/onlinelog/group_3.265.997887443
3 +CRS/orcl/onlinelog/group_3.259.997887443
4 +FRA/orcl/onlinelog/group_4.266.997887443
4 +CRS/orcl/onlinelog/group_4.260.997887445
8 rows selected
查看controlfile:
SQL> desc v$controlfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
STATUS VARCHAR2(7) Y
NAME VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
BLOCK_SIZE NUMBER Y
FILE_SIZE_BLKS NUMBER Y
SQL> select NAME,STATUS from v$controlfile;
NAME STATUS
------------------------------------------------ -------
+FRA/orcl/controlfile/current.260.997887273
+CRS/orcl/controlfile/current.256.997887273
查看ASM实例
[grid@racnode1 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM1 STARTED
[grid@racnode2 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM2 STARTED
[grid@racnode1 ~]$ sqlplus / as sysasm
查看集群负载状况:
SQL> select inst_id, count(*) from gv$session group by inst_id;
INST_ID COUNT(*)
---------- ----------
1 41
2 39
查看用户在哪一个节点:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl2
查看RAC集群名称:
[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/cemutlo -n
racnode-cluster
其余:crs 等同 has ["crsctl start crs" = "crsctl start has"]
/u01/app/11.2.0/grid/bin/crsctl start crs -- root启动集群实例
/u01/app/11.2.0/grid/bin/crsctl stop crs -- root关闭集群实例
srvctl start database -d orcl -- oracle启动数据库
srvctl stop database -d orcl -- oracle关闭数据库
crsctl status resource -t -- root、grid 查看资源状态
/u01/app/11.2.0/grid/bin/crs_stat -t -v -- oracle10g查看资源命令,11g仍可用。
asmcmd经常使用命令格式
[grid@racnode1 ~]$ asmcmd
ASMCMD> help
查看asm磁盘组
[grid@racnode1 ~]$ asmcmd -p
ASMCMD [+] > exit
若是没有配置DNS(只在hosts文件里标明),检测/etc/resolv.conf会失败的,能够忽略该警告,直接 ignore 便可,不影响安装,或配置dns服务,从新检测。
ssh互信配置
忽略便可
这个警告,点击"more details"查看以下:
选择Ignore All.
找不到共享库。
racnode1:
# yum install compat-libcap1*
racnode2:
# yum install compat-libcap1*
而后, racnode1 执行root.sh
而后, racnode2 执行root.sh
提示:INS-32091,Software Installation was successful.But some configuration assistants failed,were
cancelled or skipped. Are you sure you want to continue?
选择"Yes"。
Oracle安装过程检查报错
解决:以grid用户给asmsnmp设置密码。而后再点击上图的"Retry"。