Bootstrap

12c 搭建rac 环境

12c 搭建rac 环境

  1. 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   

  1. 系统安装rh7.5

语言选   英文+中文简体

Software   GUI,peformance tools,development tools,security tools,system administration tools

分区时,选standard partition,

swap 内存的两倍,最大16G,

boot 2G,

/分区  剩下所有

  1. 虚拟机注意的点

快照对共享存储不起作用,可以对文件所在的文件夹直接复制

  1. 环境配置
  1. hostnamectl set-hostname host01
  2. 同步阿里云的时间   (时间同步和域名服务器可以不配置

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

  1. 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

  1. 关闭selinux

vi /etc/selinux/config

SELINUX=disabled

  1. 配置/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       

  1. 配置  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

  1. /dev/shm

内存的80%

vim /etc/fstab

tmpfs    /dev/shm    tmpfs    defaults,size=6G  0  0

mount –o remount /dev/shm

  1. 内核参数   两条注释的改下,其他的不变

/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

  1. 用户配置:

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

  1. 创建目录     (中英文得是不一样得,否则会出现乱码,把-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

  1. 环境变量

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

  1. 修改 /etc/nsswitch.conf

修改行

hosts:      files dns myhostname

hosts:            files dns nis

  1. 关闭透明大页

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  查看透明大页的状态

 

  1. 网卡名更改 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  查看透明大页的状态

  1. 禁止ntp服务

systemctl stop chronyd

systemctl disable chronyd

  1. 禁止avahi-daemon服务

avahi-daemon 服务会影响 oracle的多波通信,进而导致节点重启

因此,oracle环境下不能启用 avahi-daemon 服务

systemctl stop avahi-daemon.service

systemctl disable avahi-daemon.service

  1. 配置network文件

vi /etc/sysconfig/network

NOZEROCONF=yes

  1. 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*

  1. 在一个节点安装gridoracle,第二个节点自动复制

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名称

https://cdn.xbdba.com/img/5b9f6818cac92.jpg

添加节点2信息,我选择的两个都是hub节点

https://cdn.xbdba.com/img/5b9f6820e2e21.jpg

点击: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

  1. 数据库安装

 

高级模式

 

数据库类型选择 ,选rac集群,选自定义  custom database

 

数据库名称和唯一标识 ,这里设置的要和 ~/.bash_profile 里面oracle_sid一致

 

使用模板文件数据库 ,使用下面的,默认

 

数据库恢复区设置

 

监听器选择

  

默认,下一步

 

手动配置共享内存

 

 字符集选择

 

专用服务器

 

去掉添加示例模式到数据库

 

企业管理端口

 

设置数据库密码,提示过于简单,选择 yes 继续

 

创建数据库

 

点击 finish

  

开始安装

 

点击 close

 

  1. 测试

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】

建表测试下,插入一条语句

;