Oracle12c RAC 搭建及配置
注意:这篇文章只是为了向大家展示 12c GI/RAC 的安装过程,仅以测试为目的。如果您希望以此文档作为您的生产系统环境安装文档,请参考官方文档进行充分的测试并根据需要进行修改。
本次安装12c需注意几点地方:
- 配置集群时有标准集群和Flex cluster选择方式,其中Flex cluster是12c的特性,Flex cluster最主要的特性是集群中的节点被分为了 hub node 和 leaf node。其中 hub node 和之前传统的集群节点没有太大的区别,leaf node相当于传统集群的延伸。
- 创建Flex cluster集群网卡接口选择时,会选择 ASM & Private,作用是在节点之间传
递 ASM 的元数据(meta data),由于 ASM 的元数据数据量很小,所以,对于大部分的系统可以选择集群的私网和ASM 使用相同的网络。
3、创建集群时会创建 management 数据库,这又是12c的一个特性,用于存放 CHM(集群监控工具) 产生的统计信息,这个数据库被称为 GI management Repository(a.k.a management DB). 当然,这个小型的数据库可以和 OCR&VOTE存放在相同的位置(磁盘组),建议使用过程中创建这个小的 DB 以便能够很好地管理 chm 的数据。
一、修改系统主机名
[root@ypwnode1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ypwnode1
[root@ypwnode2 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ypwnode2
- 关闭系统防火墙和Selinux
# 防火墙
[root@ypwnode1 ~]# service iptables stop
[root@ypwnode1 ~]# chkconfig iptables off
[root@ypwnode2 ~]# service iptables stop
[root@ypwnode2 ~]# chkconfig iptables off
# Selinux
[root@ypwnode1 ~]#
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@ypwnode2 ~]#
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@ypwnode1 ~]# getenforce
Disabled
[root@ypwnode2 ~]# getenforce
Disabled
三、配置ntp时钟同步(node1和node2均按照此方法配置)
[root@ypwnode1 ~]# mv /etc/ntp.conf /etc/ntp.conf_bak
[root@ypwnode1 ~]# vi /etc/ntp.conf
server 120.25.115.20 # 时钟服务器目标端
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
[root@ypwnode1 ~]# service ntpd restart
[root@ypwnode1 ~]# chkconfig ntpd on
四、挂载存储(ISCSI+Openfiler)
# node1和node2均按照此方法配置
[root@ypwnode1 ~]# yum -y install *iscsi*
[root@ypwnode1 ~]# chkconfig iscsi on
# 扫描目标磁盘
[root@ypwnode1 ~]#
iscsiadm --mode discovery --type sendtargets --portal 192.168.1.100
# 登录节点
[root@ypwnode1 ~]#
iscsiadm --mode node --targetname yangpingwei –portal 192.168.1.100:3260 --login
# 查看从存储划分过来的硬盘(lun+块设备)
五、配置磁盘路径(multipath+udev)
- 磁盘组规划
磁盘组名称 | 磁盘路径 | 大小 | 冗余策略 |
OCR | /dev/mapper/asm_ocr1 | 5G | Normal |
/dev/mapper/asm_ocr2 | 5G | Normal | |
/dev/mapper/asm_ocr3 | 5G | Normal | |
MGMT | dev/mapper/asm_data1 | 30G | external |
dev/mapper/asm_data2 | 10G | external | |
dev/mapper/asm_data3 | 10 | external | |
DATA+ARCH | dev/mapper/asm_data4 | 12G | Flex |
dev/mapper/asm_data5 | 12G | Flex | |
dev/mapper/asm_data6 | 12G | Flex |
2、安装配置multipath(node1和node2均按照此方法配置)
[root@ypwnode1 ~]# yum -y install *multipath*
[root@ypwnode1 ~]# chkconfig multipathd on
[root@ypwnode1 ~]# service multipathd restart
[root@ypwnode1 ~]# multipath -a /dev/sdb
[root@ypwnode1 ~]# multipath -a /dev/sdc
[root@ypwnode1 ~]# multipath -a /dev/sdd
[root@ypwnode1 ~]# multipath -a /dev/sde
[root@ypwnode1 ~]# multipath -a /dev/sdf
[root@ypwnode1 ~]# multipath -a /dev/sdh
[root@ypwnode1 ~]# multipath -a /dev/sdi
[root@ypwnode1 ~]# multipath -a /dev/sdj
[root@ypwnode1 ~]# cat /etc/multipath.conf
#此部分文件部署时默认不用修改 defaults { user_friendly_names yes find_multipaths yes } #此部分文件部署时根据实际情修改 blacklist { devnode "sda" } #此部分文件部署时根据实际情修改 multipaths { multipath { wwid 14f504e46494c4552456d6b78576f2d484364542d71464c32 alias asm_ocr1 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c4552514b367871372d73546b352d486e7273 alias asm_ocr2 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45527163455038652d564a734c2d4b726771 alias asm_ocr3 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45524275394941672d6644314a2d7969636c alias asm_data1 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c4552554c7a5564512d523947532d75726e73 alias asm_data2 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45527563565531562d74744b4a2d3169344e alias asm_data3 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45526f4e4f3356732d71585a732d73626a69 alias asm_data4 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45527464434a52462d473941412d4f7a3378 alias asm_data5 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 14f504e46494c45523439386536682d644d377a2d696e566e alias asm_data6 path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } } |
[root@ypwnode1 ~]# multipath -F
[root@ypwnode1 ~]# multipath -v2
[root@ypwnode1 ~]# multipath -v3
[root@ypwnode1 ~]# multipath -ll
3、配置Udev绑定磁盘权限和所有者
[root@ypwnode1 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
# node1、node2均按此方法配置
ENV{DM_NAME}=="asm_ocr1", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_ocr2", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_ocr3", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data1", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data2", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data3", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data4", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data5", OWNER:="grid", GROUP:="asmadmin", MODE:="660" ENV{DM_NAME}=="asm_data6", OWNER:="grid", GROUP:="asmadmin", MODE:="660" |
重新加载udev配置文件,使文件生效
[root@ypwnode1 ~]# /sbin/udevadm control --reload
[root@ypwnode1 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@ypwnode1 ~]# udevadm trigger
[root@ypwnode1 ~]# ll /dev/dm*
brw-rw---- 1 grid asmadmin 251, 0 10月 22 02:10 /dev/dm-0 brw-rw---- 1 grid asmadmin 251, 1 10月 22 02:10 /dev/dm-1 brw-rw---- 1 grid asmadmin 251, 2 10月 22 02:10 /dev/dm-2 brw-rw---- 1 grid asmadmin 251, 3 10月 22 02:10 /dev/dm-3 brw-rw---- 1 grid asmadmin 251, 4 10月 22 02:10 /dev/dm-4 brw-rw---- 1 grid asmadmin 251, 5 10月 22 02:37 /dev/dm-5 brw-rw---- 1 grid asmadmin 251, 6 10月 22 19:12 /dev/dm-6 brw-rw---- 1 grid asmadmin 251, 7 10月 22 19:12 /dev/dm-7 brw-rw---- 1 grid asmadmin 251, 8 10月 22 19:12 /dev/dm-8 |
六、配置物理网卡虚拟网卡和心跳网卡
1、网络IP规划
# eth0做心跳网卡,eth1和eth2做bond绑定
主机名 | 物理IP | 虚拟IP | 心跳IP | 负载均衡IP |
192.168.1.72 | 1.1.1.80 | 192.168.1.74 | ||
ypwnode2 | 192.168.2.71 | 192.168.1.73 | 1.1.1.81 |
2、物理网卡的配置(eth1和eth2双网卡绑定)
#创建bond [root@ypwnode1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond1 NM_CONTROLLED=no BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.70 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 USERCTL=no BONDING_OPTS="miimon=100 mode=1" #配置eth1网卡 [root@ypwnode1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet MASTER=bond1 SLAVE=yes USERCTL=no MASTER=bond1 SLAVE=yes USERCTL=no #配置eth2网卡 [root@ypwnode1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet MASTER=bond1 SLAVE=yes USERCTL=no *********************************************************************# 添加内核模块 [root@ypwnode1 ~]# vi /etc/modprobe.d/dist.conf alias bond1 bonding options bond1 mode=1 miimon= 100 # 设置启动时自动绑定 [root@ypwnode1 ~]# vi /etc/rc.local ifenslave bond1 eth1 eth2 |
3、心跳网卡的配置(eth0)
[root@ypwnode1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=bbf0e03e-a678-4d9f-a1ed-601460ec25c6 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=1.1.1.80 PREFIX=24 GATEWAY=1.1.1.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:0C:29:0A:EE:EB ********************************************************************* DEVICE=eth0 TYPE=Ethernet UUID=bf17c3af-b617-47bb-b2da-61877879e2c9 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=1.1.1.81 PREFIX=24 GATEWAY=1.1.1.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:0C:29:D3:DF:22 |
- 虚拟网卡的配置
[root@ypwnode1 ~]# cd /etc/sysconfig/network-scripts
[root@ypwnode1 network-scripts]# cp -r ifcfg-bond1 ifcfg-bond1:2
[root@ypwnode1 network-scripts]# vi ifcfg-bond1:2 DEVICE=bond1:2 # node2需要修改名称 NM_CONTROLLED=no BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.72 # node2需要修改IP NETMASK=255.255.255.0 GATEWAY=192.168.1.1 USERCTL=no BONDING_OPTS="miimon=100 mode=1" |
七、配置主机解析配置文件(ypwnode1、ypwnode2配置文件相同)
[root@ypwnode1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 # ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #Public IP 192.168.1.70 ypwnode1 192.168.1.71 ypwnode2 #Virtual IP 192.168.1.72 ypwnode1-vip 192.168.1.73 ypwnode2-vip #Private IP 1.1.1.80 ypwnode1-priv 1.1.1.81 ypwnode2-priv #Scan IP 192.168.1.74 ypwnode-scan |
八、创建用户所属组和安装目录
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -u 54322 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba grid
echo "oracle" | passwd --stdin oracle
echo "grid" | passwd --stdin grid
创建目录
mkdir -p /u01/app/12.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/12.2.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
chown -R grid:oinstall /home/soft/grid
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
九、配置环境变量
************************************Oracle*************************************
# ypwnode1
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export ORACLE_SID=xamjzdb1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
PATH=$PATH:$HOME/bin
# ypwnode2
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export ORACLE_SID=xamjzdb2
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
PATH=$PATH:$HOME/bin
************************************Grid*************************************
# ypwnode1
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.
# export DISPLAY=10.5.101.39:0.0
export TMOUT=10000000000
umask 022
# ypwnode2
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.
# export DISPLAY=10.5.101.39:0.0
export TMOUT=10000000000
umask 022
十、配置内核参数(ypwnode1、ypwnode2全部配置)
#Linux7里面已弃用了sysctl这个参数
[root@ypwnode1 ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 kernel.panic_on_oops = 1 |
十一、设置用户limit限制(ypwnode1、ypwnode2全部配置)
[root@ypwnode1 ~]# vi /etc/security/limits.conf
# oracle
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft nproc 20470
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
# grid
grid soft nofile 10240
grid hard nofile 65536
grid soft nproc 20470
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
# 如果内存小于8G,下面大内存页配置可忽略
grid hard memlock 3145728
grid soft memlock 3145728
oracle hard memlock 3145728
oracle soft memlock 3145728
十二、修改 /etc/pam.d/login 文件(ypwnode1、ypwnode2全部配置)
[root@ypwnode1 ~]# vi /etc/pam.d/login
#添加文件末尾
session required pam_limits.so
- 修改/etc/profile文件(ypwnode1、ypwnode2全部配置)
[root@ypwnode1 ~]# vi /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 |
[root@ypwnode1 ~]# source /etc/profile
十四、安装依赖包
yum -y install binutils smart compat-libstdc++-33 elfutils-libelf \
elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common \
glibc-devel xorg-x11-utils kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel \
make numactl-devel sysstat unixODBC unixODBC-devel pdksh compat-libcap1
十、配置sshd互信认证
# root用户在node1执行
#grid
/u01/app/12.2.0/grid/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "ypwnode1 ypwnode2 ypwnode1-priv ypwnode2-priv" -advanced -noPromptPassphrase -exverify -confirm
#Oracle
/u01/app/12.2.0/grid/oui/prov/resources/scripts/sshUserSetup.sh -user oracle -hosts "ypwnode1 ypwnode2 ypwnode1-priv ypwnode2-priv" -advanced -noPromptPassphrase -exverify -confirm
十六、安装grid网格
- 解压Grid安装包到节点一grid用户下ORACLE_HOME目录
[grid@ypwnode1 ~]$ cd /home/soft
[grid@ypwnode1 ~]$
unzip linuxx64_12201_grid_home.zip -d /u01/app/12.2.0/grid/
2、安装前预检查
/u01/app/12.2.0/grid/runcluvfy.sh stage -pre crsinst -n ypwnode1,ypwnode2 -fixup -verbose
3、开始安装gird
# 使用grid用户登录安装
[grid@ypwnode1 ~]$ cd $ORACLE_HOME/
[grid@ypwnode1 grid]$ export LANG=en_US.UTF-8
[grid@ypwnode1 grid]$ ./gridSetup.sh
点击Next出现【INS-40912】错误,分别在两个节点执行以下命令
[root@ypwnode1 ~]# ifdown bond1:2
[root@ypwnode2 ~]# ifdown bond1:2
# 勾选以root用户身份自动执行脚本
# 勾选忽略所有
# 安装完成
# 查看集群状态
十七、创建ASM磁盘组
1、[grid@ypwnode1 ~]$ export LANG=en_US.UTF-8
2、[grid@ypwnode1 ~]$ asmca
#查看ASM磁盘组
十八、安装database
[oracle@ypwnode1 ~]$ cd /opt/database/
[oracle@ypwnode1 database]$ export LANG=en_US.UTF-8
[oracle@ypwnode1 database]$ ./runInstaller
# 以root用户分别在两个节点执行以下脚本,最后点击OK
十九、创建数据库
[oracle@ypwnode1 ~]$ export LANG=en_US.UTF-8
[oracle@ypwnode1 ~]$ dbca
# 修改数据库实例名,本次不勾选创建容器数据库
# 勾选忽略所有点击下一步
#解锁其他用户设置SYS,SYSTEM用户密码
二十、查看实例状态