12c 搭建rac 环境
- IP规划
节点 public ip vip private ip scan ip
host01 13.2.71.200 13.2.71.202 13.2.43.200 13.2.71.204
host02 13.2.71.201 13.2.71.203 13.2.43.201
- 系统安装rh7.5
语言选 英文+中文简体
Software GUI,peformance tools,development tools,security tools,system administration tools
分区时,选standard partition,
swap 内存的两倍,最大16G,
boot 2G,
/分区 剩下所有
- 虚拟机注意的点
快照对共享存储不起作用,可以对文件所在的文件夹直接复制
- 环境配置
- hostnamectl set-hostname host01
- 同步阿里云的时间 (时间同步和域名服务器可以不配置)
chmod +x /etc/rc.d/rc.local
cat >> /etc/rc.d/rc.local <<EOF
/usr/sbin/ntpdate ntp.aliyum.com
EOF
ntpdate ntp.aliyun.com
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭selinux
vi /etc/selinux/config
SELINUX=disabled
- 配置/etc/hosts
#
13.2.71.200 host01
13.2.71.201 host02
#每个节点又有一个虚拟IP,节点故障则漂移到另外正常的节点上
13.2.71.202 host01-vip
13.2.71.203 host02-vip
#用于心跳网络,保证数据同步
13.2.43.200 host01-priv
13.2.43.201 host02-priv
#客户端可以通过 SCAN 特性负载均衡地连接到 RAC数据库
13.2.71.204 rac-scan
- 配置 vim /etc/security/limits.conf
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728 (12C的新参数)
oracle hard memlock 3145728
- /dev/shm
内存的80%
vim /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=6G 0 0
mount –o remount /dev/shm
- 内核参数 两条注释的改下,其他的不变
/etc/sysctl.d/ 99-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1572864 #shmmax/4096
kernel.shmmax = 6442450944 #物理内存的80%
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 –system(立即生效)
sysctl –a|grep shmmax
sysctl –a|grep shmall
- 用户配置:
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmoper
groupadd asmdba
useradd -g oinstall -G dba,asmoper,asmadmin,asmdba grid
useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle
passwd grid
passwd oracle
- 创建目录 (中英文得 – 是不一样得,否则会出现乱码,把-p当成文件夹新建出来)
mkdir -p /u01/app/grid
mkdir -p /u01/app/12.2.0.1/grid
mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/12.2.0.1
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 755 /u01
- 环境变量
Grid 用户, su - grid
.bash_profile
第一个节点:
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0.1/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
第二个节点:
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0.1/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
Oracle 用户 su – oracle
第一个节点:
.bash_profile
export ORACLE_SID=oradb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
第二个节点
export ORACLE_SID=oradb2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
- 修改 /etc/nsswitch.conf
修改行
hosts: files dns myhostname
为
hosts: files dns nis
- 关闭透明大页
vim /etc/default/grub
GRUB_CMDLINE_LINUX=”crashkernel=auto rhgb quiet transparent_hugepage=never”
grub2-mkconfig –o /boot/grub2/grub.cfg
重启
cat /sys/kernel/mm/transparent_hugepage/enabled 查看透明大页的状态
- 网卡名更改 eth0 eth1:
在 /etc/sysconfig/network-scripts/ 文件夹下
cp ifcfg-ens33 ifcfg-eth0
/etc/sysconfig/grub 下的GRUB_COMLINE_LINUX="" 中添加 net.ifnames=0 biosdevname=0”
执行 grub2-mkconfig -o /boot/grub2/grub.cfg
编辑/etc/udev/rules.d/70-persistent-ipoib.rules 文件, 红色字体是ifconfig下面的mac
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="00:0c:29:b4:52:4d", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="00:0c:29:b4:52:57", NAME="eth1"
重启
cat /sys/kernel/mm/transparent_hugepage/enabled 查看透明大页的状态
- 禁止ntp服务
systemctl stop chronyd
systemctl disable chronyd
- 禁止avahi-daemon服务
avahi-daemon 服务会影响 oracle的多波通信,进而导致节点重启
因此,oracle环境下不能启用 avahi-daemon 服务
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
- 配置network文件
vi /etc/sysconfig/network
NOZEROCONF=yes
- udev配置共享磁盘
两台主机新加两块盘,fdisk认识到即可/dev/sdb /dev/sdc
vSphere环境虚机添加共享磁盘?
前提条件:
给虚拟机添加共享磁盘只能在虚拟机关机时进行,否则SCSI控制器模式无法更改。
1.选择第一台虚机,编辑设置
添加新的SCSI控制器,选择虚拟或者物理模式(具体取决于需求)。
2.添加新的硬盘,(大小至少40G,一般50G)选择新添加的SCSI控制器,磁盘置备为厚置备置零(需要到存储策略中检查确认)。“虚拟设备节点”切记选择独立-持久的SCSI 设备节点,若原来本地使用SCSI(0:0),那现在可以选SCSI(1:0)。
3.选择第二台虚机,添加现有磁盘。
找到第一台虚机添加的磁盘文件,确认为厚置备置零模式,虚拟化设备节点与第一台虚机相同。配置信息要保持一致。也要新建scsi控制器,选 scsi (1:1)
查看uuid
/usr/lib/udev/scsi_id -g -u -d /dev/sdb
/usr/lib/udev/scsi_id -g -u -d /dev/sdc
touch /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /$devnode",
RESULT=="36000c293e718926fbda60494871cf2ab", RUN+="/bin/sh -c 'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1'"
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /$devnode",
RESULT=="36000c2927e1f292b718597890e33fbb8", RUN+="/bin/sh -c 'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2'"
改掉上面得 RESULT scsi_id
systemctl restart systemd-udevd.service
udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=add
/sbin/udevadm trigger --type=devices --action=change
ll /dev/asm*
- 在一个节点安装grid,oracle,第二个节点自动复制
su – grid
cd $ORACLE_HOME unzip –d $ORACLE_HOME 解压grid包
验证
./runcluvfy.sh stage -pre crsinst -n host01,host02 -verbose
安装少的包(两个节点都要安装)
root 用户安装, u01/app/12.2.0.1/grid/cv/rpm/cvuqdisk*.rpm
compat* ksh* libaio* tigervnc*
还有gird自带的包 cvu* [root@host01 rpm]# pwd
/u01/app/12.2.0.1/grid/cv/rpm
传到对端,安装下cv包
卸载,强行安装用下面的命令
Rpm –e libaio-devel-0.3.109-13.el7.x86_64.rpm
rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm --nodeps --force
12c rhel7.5安装有bug,上传bug,直接解压掉
进grid的解压目录(gridSetup.sh所在目录),应用补丁安装
./gridSetup.sh -applyOneOffs /opt/soft/26247490/26247490
标准cluster
填写cluster名称
添加节点2信息,我选择的两个都是hub节点
点击:Ssh connectivity 点击setup
如果没有做ssh互信的话会报错,要做互信,grid,oracle 两个用户都要做互信,两个节点都要执行下面命令
Ssh 互信 用户更改密码后 依然生效
Su – grid
Ssh-keygen #产生秘钥在.ssh文件夹下
Ssh-copy-id grid@host02 # 在host02 .ssh文件夹下产生authorized_keys 文件
Ssh host02 (执行这一步一般要把 .ssh 文件夹 chmod 700 .ssh,改成777都可能报错)
两各节点都执行下
在两台主句分别命令行执行:
ssh host01 date ssh host01-priv date
ssh host02 date ssh host02-priv date
这里 报 INS-41116 ,我的原因是host01没关防火墙
配置asm,我已经做了udev绑定
创建 GI management Repository(a.k.a management DB)。 又是一个 12c 的新特性。对于 12c 的集群, oracle 会创建一个小型的数据库,用于存放 CHM 产生的统计信息,这个数据库被称为 GI management Repository(a.k.a management DB). 当然,这个小型的数据库会和 OCR&VF 存放在相同的位置(磁盘组),我这里选择否
选择外部冗余,没有的话,选下 change discovery path
设置相同的密码
不配置EM
默认组
配置base路径
安装信息目录
点击fix and check again
可忽略的错误
点击install
两个节点 分别登录root 并执行脚本
遇到下面的问题
执行下面命令,看下所有得进程,全部kill掉,重新sh root.sh
ps -ef|grep d.bin
Ping rac-scan 通的,就忽略了这个错误,是dns得问题
到此rac就搭建好了,测试下:
su – grid
crs_stat –t (有host01,有host02 一个offline)
crsctl stat res –t (信息比上面一条命令全)
ps –ef | grep asm
关掉集群,两个节点上分别执行
root 下面执行 /u01/app/12.2.0.1/grid/bin
. /crsctl stop has
ps –ef | grep has 看下还有进程吗,没有就说明集群关掉了
重启
ifconfig / ip addr
看下两个主机的ip是不是和hosts配置的一致,
rac-scan只存在于一个节点上
su – grid 验证ssh对等性
ssh fanxin01-vip date
ssh fanxin02-vip date
- 数据库安装
高级模式
数据库类型选择 ,选rac集群,选自定义 custom database
数据库名称和唯一标识 ,这里设置的要和 ~/.bash_profile 里面oracle_sid一致
使用模板文件数据库 ,使用下面的,默认
数据库恢复区设置
监听器选择
默认,下一步
手动配置共享内存
字符集选择
专用服务器
去掉添加示例模式到数据库
企业管理端口
设置数据库密码,提示过于简单,选择 yes 继续
创建数据库
点击 finish
开始安装
点击 close
- 测试
lsnrctl status
select instance_name,status from gv$instance;
停机
root下:
crsctl stop has 2个节点执行
crsctl stop cluster –all
检查rac状态
[grid@rac1 ~]$ srvctl config database -d 【dbname】
建表测试下,插入一条语句