VMware Workstation Pro 15 + OracleLinux7.4 搭建Oracle 12c RAC
# win10,VMware Workstation Pro 15OracleLinux 7.4Oracle 12c一、基本环境配置# 创建共享磁盘C:\Users\Administrator> f:F:\VMware\Program Files> cd F:\VMware\Program FilesF:\VMware\Program Files>...
# win10,VMware Workstation Pro 15
OracleLinux 7.4
Oracle 12c
一、基本环境配置
# 创建共享磁盘
C:\Users\Administrator> f:
F:\VMware\Program Files> cd F:\VMware\Program Files
F:\VMware\Program Files>
vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 F:\VMware\rac\RacShareDisk\ocr.vmdk
vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 F:\VMware\rac\RacShareDisk\ocr2.vmdk
vmware-vdiskmanager.exe –c -s 10g -a lsilogic –t 2 F:\VMware\rac\RacShareDisk\ocr3.vmdk
vmware-vdiskmanager.exe -c -s 15g -a lsilogic -t 2 F:\VMware\rac\RacShareDisk\gimr.vmdk
vmware-vdiskmanager.exe -c -s 20g -a lsilogic -t 2 F:\VMware\rac\RacShareDisk\data.vmdk
vmware-vdiskmanager.exe -c -s 20g -a lsilogic -t 2 F:\VMware\rac\RacShareDisk\fra.vmdk
# 安装OracleLinux7.4虚拟机 略。然后,虚拟机图形界面上添加共享磁盘
# 修改虚拟机参数文件
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
# IP地址规划:
DNS server:192.168.0.1
db node1:192.168.0.11 public
192.168.0.21 vip
17.6.0.11 private
db node2:192.168.0.12 public
192.168.0.22 vip
17.6.0.12 private
scan: 192.168.0.15
# 修改主机名称:
hostnamectl set-hostname 主机名 #rac1、rac2
# 动态IP修改为静态IP
# nm-connection-editor
# ip a | grep inet
# cat /etc/resolv.conf 配置ip地址时配置dns,即添加dns到这个文件
分别重启一下网卡:
systemctl restart network.service
# 直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
# 关闭selinux
#vim /etc/selinux/config
修改文件
SELINUX=disabled
临时关闭
#setenforce 0
# vim /etc/hosts #节点rac1、rac2
192.168.0.11 rac1
192.168.0.12 rac2
192.168.0.21 rac1-vip
192.168.0.22 rac2-vip
17.6.0.11 rac1-priv
17.6.0.12 rac2-priv
192.168.0.15 racscan
# 挂载OracleLinux7.4到虚拟机,配置本地yum源 略
# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 libXext libXext.i686 libXtst libXtst.i686 libX11 libX11.i686 libXau libXau.i686 libxcb libxcb.i686 libXi libXi.i686 make sysstat unixODBC unixODBC-devel readline libtermcap-devel pdksh
# 分区,udev绑定
[root@rac2 ~]# fdisk -l | grep Disk
Disk /dev/sdf: 6442 MB, 6442450944 bytes, 12582912 sectors
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Disk label type: dos
Disk identifier: 0x000dfe53
Disk /dev/sde: 6442 MB, 6442450944 bytes, 12582912 sectors
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/sdd: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/mapper/ol-root: 27.9 GB, 27913093120 bytes, 54517760 sectors
Disk /dev/mapper/ol-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
# fdisk /dev/sdb => /dev/sdb1 其他类似
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb1
36000c29433fb862782ecdceed8741a54
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc1
36000c29a95765ffcc4641743e66ea062
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdd1
36000c292690767df58354d30ab243651
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sde1
36000c2956eab902da23e60eb456fd63b
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdf1
36000c29c0b73c26d358aa496d93895d7
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdg1
36000c299671c28f3aa6aea42d5942bb5
注意:如果上面不返回uuid,解决方法:
1.关闭虚拟机
2.找到vmx文件,在最后加上disk.EnableUUID="TRUE"
3.开机,再次查询UUID
在/etc/udev/rules.d/下创建99-oracle-asmdevices.rules,并添加下面配置
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29433fb862782ecdceed8741a54", SYMLINK+="asm_ocr1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29a95765ffcc4641743e66ea062", SYMLINK+="asm_ocr2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c292690767df58354d30ab243651", SYMLINK+="asm_ocr3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c2956eab902da23e60eb456fd63b", SYMLINK+="asm_data", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29c0b73c26d358aa496d93895d7", SYMLINK+="asm_fra", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c299671c28f3aa6aea42d5942bb5", SYMLINK+="asm_gimr", OWNER="grid", GROUP="asmadmin", MODE="0660"
scp拷贝文件99-oracle-asmdevices.rules到rac2节点上
加载rules文件(rac_udev建立磁盘方式安装grid)
#udevadm control --reload-rules
#udevadm trigger
# 创建用户、目录
[root@rac1 /]# groupadd -g 1100 oinstall
[root@rac1 /]# groupadd -g 1200 asmadmin
[root@rac1 /]# groupadd -g 1201 asmdba
[root@rac1 /]# groupadd -g 1202 asmoper
[root@rac1 /]# groupadd -g 1300 dba
[root@rac1 /]# groupadd -g 1301 oper
[root@rac1 /]# useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
[root@rac1 /]# useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
[root@rac1 ~]# chown -R grid.asmadmin /dev/asm*
# 创建密码:
[root@rac1 /]# passwd grid
[root@rac1 /]# passwd oracle
# 设置互信关系,这里记住oracle和grid用户都要设置互信
# ssh-各个节点
[root@rac1 ~]# su - grid
[grid@rac1 ~]$ ssh-keygen #一路回车
[grid@rac1 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub rac1
[grid@rac1 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub rac2
# 其他节点类似
[root@rac2 ~]# su - grid
[grid@rac2 ~]$ ssh-keygen #一路回车
[grid@rac2 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub rac1
[grid@rac2 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub rac2
oracle用户类似做
验证ssh配置,以oracle、grid用户在所有节点分别执行:
$ ssh rac1 date;ssh rac2 date;ssh rac1-priv date;ssh rac2-priv date;
Tue Mar 5 14:51:50 CST 2019
Tue Mar 5 14:51:51 CST 2019
Tue Mar 5 14:51:51 CST 2019
Tue Mar 5 14:51:51 CST 2019
$ ssh rac1 date;ssh rac2 date;ssh rac1-priv date;ssh rac2-priv date;
Tue Mar 5 14:51:50 CST 2019
Tue Mar 5 14:51:51 CST 2019
Tue Mar 5 14:51:51 CST 2019
Tue Mar 5 14:51:51 CST 2019
# 为grid用户设置环境变量:
如下操作也需要在两个节点上同样进行,这里需要注意的是grid用户的SID和oracle用户的SID,是不一样的。
以 grid 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile):
注:在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:
racnode1:ORACLE_SID=+ASM1
racnode2:ORACLE_SID=+ASM2
Node1:
[root@racnode1 ~]# su - grid
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/grid
export ORACLE_HOME=/u01/app/grid/11.2.0
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
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
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
umask 022
Node2:
#su - grid
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/grid
export ORACLE_HOME=/u01/app/grid/11.2.0
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
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
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
umask 022
# 为 oracle 用户设置环境变量
以 oracle 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile):
注: 在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:
racnode1:ORACLE_SID=orcl1
racnode2:ORACLE_SID=orcl2
#su - oracle
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac1
export ORACLE_SID=orcl1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_UNQNAME=orcl
export TNS_ADMIN=$ORACLE_HOME/network/admin
#export ORACLE_TERM=xterm
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
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
Node2:
#su - oracle
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac2
export ORACLE_SID=orcl2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_UNQNAME=orcl
export TNS_ADMIN=$ORACLE_HOME/network/admin
#export ORACLE_TERM=xterm
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
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
# 创建 Oracle 基目录路径
最后一步是配置 Oracle 基路径,要遵循最佳灵活体系结构 (OFA) 的结构及正确的权限。需要以 root 用户身份在集群的两个 Oracle RAC 节点上完成此任务。
本指南假设在根文件系统中创建/u01目录。请注意,这样做是为了简便起见,不建议将其作为通用做法。通常会将/u01目录作为配置了硬件或软件镜像功能的单独文件系统供应。
#mkdir -p /u01/grid
#mkdir -p /u01/oraInventory/
#mkdir -p /u01/app/grid/12.2.0.1
# chown -R grid:oinstall /u01/app/grid/12.2.0.1
# chown -R grid:oinstall /u01/grid/
# chown -R grid:oinstall /u01/oraInventory/
#mkdir -p /u01/app/oracle
#chown oracle:oinstall /u01/app/oracle
#chmod -R 775 /u01/app/oracle
# 为 Oracle 软件安装用户设置资源限制:
在每个 Oracle RAC 节点上,在 /etc/security/limits.conf 文件中添加以下几行代码(下面的示例显示软件帐户所有者 oracle 和 grid):
#vi /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# 在每个 Oracle RAC 节点上,在 /etc/pam.d/login 文件中添加或编辑下面一行内容(如果不存在此行):
#vi /etc/pam.d/login
session required pam_limits.so
# 修改内核参数
#vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
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 = 1048576
使sysctl生效
#sysctl -p
二、安装grid、oracle
安装GI之前,可以以grid用户的身份对环境进行检测:
[grid@node1 grid]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
[grid@node1 grid]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
上传grid安装包到/目录 V840012-01.zip
从 Oracle Grid Infrastructure 12c Release 2 (12.2)开始,GI 安装方式变成了 image-based 方式,
Oracle 提供的 Grid 安装文件是直接已经安装好的 ORACLE_HOME,因此我们需要把 GRID 的安
装文件直接解压到预先创建好的 grid 用户的 ORACLE_HOME 中,然后运行 gridSetup.sh 启动图
形界面,开始配置 GRID。
这里我们使用的是 12.2.0.1 版本,因此需要在正式安装 grid 之前,先给安装包打上补丁,
步骤如下。
1、 到 MOS 下搜索并下载补丁包(https://support.oracle.com 需要申请注册 MOS 账号)
https://updates.oracle.com/Orion/Services/download/p25784424_12201170814OCWRU_Linux-x86-64.zip?aru=22096835&patch_file=p25784424_12201170814OCWRU_Linux-x86-64.zip
2、 给 grid 打补丁
从这里开始需要图形界面的支持。
--解压 grid 压缩包到规划的 GRID HOME 底下,注意路径要正确
[root@racdb1 software]# unzip V840012-01.zip -d /u01/app/12.2.0.1/grid
[root@racdb1 software]# chown -R grid:oinstall /u01/app/12.2.0.1/grid
[root@racdb1 software]$ unzip p25784424_12201170814OCWRU_Linux-x86-64.zip
[root@racdb1 software]# chown -R grid:oinstall /software/25784424/
[root@racdb1 software]# su – grid
--下载并解压补丁后,运行如下命令即可。注意补丁文件的路径必须正确,如失败,你可能需要
重新解压 grid 压缩包
[grid@racdb1 grid]$ ./gridSetup.sh -applyOneOffs /software/25784424/25784424/
Preparing the home to patch...
Applying the patch /software/25784424/25784424/...
Successfully applied the patch.
注意:补丁结束后,将自动运行 gridSetup.sh 开始安装 GI 套件。如果不打补丁,则直接
运行 gridSetup.sh 开始安装即可,即跳过本节直接进入下一节。
# create ASM Disk Group
3*10GB OCR 表决盘
1*15GB GIMR 盘
n*m GB DATA 盘
n*m GB ARCH 盘
--以上 n、m 根据实际使用量
规划,从存储分配。
MGMT:Insufficient space available in the selected Disks. At least, 37,686 MB of free space is required.
GIMR 为 Oracle 12c 新特性,Release2 起官方要求强制安装,实际为一个几乎无需管理的,做 cluster health monitor的 PDB。关于 GIMR 参照本
文附录一。DATA 盘和 ARCH 盘根据实际情况处理。
这里,我们将3块 ocrvote 磁盘作为实例的 OCR 和表决盘,并采用外部冗余,也就是不冗
余模式。12cR2 除了传统的 Normal 冗余和 High 级别冗余外,还引入了 Flex 冗余,暂未发现有
什么实质性用途。确认磁盘并修改完 DG 名称后,进入下一步。
#################
OCR选择的是normal还是external
normal,external的区别是冗余度不一样,选normal也可以,以后根据需要还可以添加多个冗余的OCR
选择哪个根据你的要求,如果你底层已经做过raid了,用external就可以了。
有外部冗余就external没有就normal。
做OCR的基本都是有raid保护的存储。但是还是建议选择normal。
就几百M的东西 一般是选normal的
安装出现"INS-30510: Insufficient number of ASM disks selected."
错误的原因是由于磁盘数和冗余层级不匹配:
如果创建用来存放OCR和VOTEDISK的ASM磁盘组,那么External、Normal、High三种冗余级别对应的Failgroup个数是1、3、5。也就是说,创建这三种冗余级别的磁盘组至少分别需要1、3、5个ASM磁盘。
如果创建用于非OCR和VOTEDISK存储的ASM磁盘组,那么External、Normal、High三种冗余级别对应的Failgroup至少是1、2、3。也就是说,创建这三种冗余级别的磁盘组至少分别需要1、2、3个ASM磁盘。
如果没有遵循创建ASM磁盘组的规则,将收到以下报错信息:
INS-30510: Insufficient number of ASM disks selected.
#################
执行第二个脚本root.sh,第二节点上出错:
CRS-2676: Start of 'ora.diskmon' on 'rac2' succeeded
CRS-1705: Found 0 configured voting files but 1 voting files are required, terminating to ensure data integrity; details at (:CSSNM00065:) in /u01/grid/diag/crs/rac2/crs/trace/ocssd.trc
CRS-2883: Resource 'ora.cssdmonitor' failed during Clusterware stack start.
CRS-4406: Oracle High Availability Services synchronous start failed.
CRS-4000: Command Start failed, or completed with errors.
2019/06/16 21:30:25 CLSRSC-378: Failed to get the configured node role for the local node
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4000: Command Status failed, or completed with errors.
2019/06/16 21:30:28 CLSRSC-117: Failed to start Oracle Clusterware stack
Died at /u01/app/grid/12.2.0.1/crs/install/crsinstall.pm line 1494.
The command '/u01/app/grid/12.2.0.1/perl/bin/perl -I/u01/app/grid/12.2.0.1/perl/lib -I/u01/app/grid/12.2.0.1/crs/install /u01/app/grid/12.2.0.1/crs/install/rootcrs.pl ' execution failed
解决办法:
[root@rac2 ~]# ls -lrt /dev/asm*
total 0
[root@rac2 ~]# vim /etc/udev/rules.d/99-vmware-scsi-timeout.rules
[root@rac2 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@rac2 ~]# ll /dev/asm*
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_data -> sde
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_fra -> sdf
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_gimr -> sdg
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_ocr1 -> sdb
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_ocr2 -> sdc
lrwxrwxrwx 1 root root 3 Jun 17 00:25 /dev/asm_ocr3 -> sdd
rac2 #再次执行root.sh,成功完成
/u01/app/grid/12.2.0.1/root.sh
更多推荐
所有评论(0)