实战 Centos7 oracle12c rac集群部署;


Oracle RAC 工做原理:html

微信图片_20190802091514.png

单节点数据库,若是实例宕机了,若是一个业务连接在实例上面,那么这个业务就中断了。这个时候系统就不具备可用性了,那么这个时候单节点的可用性是不好的。

对于RAC来讲,和单实例同样,仍是一份数据文件,都是相同的存储上面放着oracle的文件,可是是由三个实例共用同一份数据文件。这样的好处是在三个实例之间作了冗余,在上面三个实例当中任意两个坏了业务均可以连接到剩下的一个实例,均可以正常的工做。RAC提供了在实例级别的冗余。

RAC不可以解决在数据的安全,尽管有多个实例,可是只有一份数据文件,这样只要数据文件损坏了,那么整个数据库就损坏了。node



什么是 RAC ?linux


20180516200338534.png


通常每一个实例都放在不一样的服务器上面,这样能够起到冗余做用。全部的数据库文件都放在共享存储上面,可是还有一些文件放在每一个实例本身的本地的磁盘上面,好比参数文件,每个实例均可以有本身的参数文件,这个参数文件既能够放在本地也能够放在共享存储上面,多个实例都使用同一个参数文件。

 
在RAC里面,最重要的就是实例和实例之间的交互,即便是分离的实例,可是读取的数据是相同的,RAC不是分布式的系统,由于它只有一个存储,分布式系统是指数据发布在不一样的数据库上面,而后经过中间件来协调作查询。RAC仍是一台数据库,多个实例。

c++


RAC架构:sql

微信图片_20190802092417.png



对于RAC来讲至少有两套物理上不一样的网络,私有网络是专门用来实例之间的数据交互。若是私有网络,全部的数据都在一个网络下面,那么那么就会对数据形成影响,严重的影响RAC的性能了。实例之间数据之间传递使用私有网络和对外服务提供的网络之间是物理分开的。因此RAC至少有两套网络,一个是实例之间的数据的传递,另一个是公有网络,是对外提供服务的,外面的业务是提供公有网络的IP连接到数据库的。数据库


RAC特色:vim


微信图片_20190802093347.png

RAC如何容错的?安全


20180516200435248.png


使用SAN存储,存储和服务器就不在一块儿了,而是和服务器分离了,是一个网络的存储系统,服务器是服务器,存储是存储,彻底分离的。

当节点1坏了,不只仅只是将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。主要是一些提交和未提交的事务。好比实例1坏了,实例2就要从实例1的redo里面读最后一次checkpoint以后的信息,就是实例1最后将全部的数据写到磁盘以后产生的全部的redo应用,该回滚的回滚,该恢复的恢复。即现将以提交和未提交的事务产生的redo都先应用,由于是最后一次checkpoint以后的信息,以前的信息是已经写到磁盘上面了,所谓的恢复是将未写到磁盘上面的信息进行恢复。(虽然实例坏了,可是实例的redo并无坏,放置在共享存储上面,它的redo仍是容许其余实例访问的)实例2读取实例1的redo,而后所有应用一遍,以后再回滚未提交的事务修改的数据块,这个有点像实例的恢复。
bash


实战部分:服务器

 

建设背景:

建设本文档的目的在于详细梳理12c RAC图形化安装的流程,结合官方文档尽量解释安装过程当中的各类操做的原理,提供不一样的存储配置方法和参数修改方法,最后造成一套完整的12c RAC图形化安装步骤以便于从此参考。


安装流程:

1、软件下载

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html

下载 linuxx64_12201_database.zip 和 linuxx64_12201_grid_home.zip 就能够了,而后上传至节点1的任意目录。


图片.png

2、硬件和网络环境

  • 检查内存(至少8GB)、Swap和硬盘大小等等,参考GRID官网安装文档的:Server Hardware Checklist for Oracle Database Installation。

须要说明的是12c RAC安装,OCR盘至少须要40GB大小,由于12c新增了MGMTDB实例进行集群管理,若是你不单独的为他建立一个磁盘组,这些信息就会进入OCR盘,致使OCR盘须要40GB的空间才够,其中OCR和votefiles大约须要2GB,MGMT占用38GB,若是RAC节点数大于2那么还须要再增长一些MGMT的空间,例如5节点大约须要再加5GB,固然这里的值都是在外部冗余的条件下计算的。

  • 检查操做系统版本,参考GRID官网安装文档的:Operating System Checklist for Oracle Database Installation on Linux。

本文的系统环境为Oracle Enterprise Linux 6.9。

  • tmpfs务必保证至少是最大内存的一半。

若是须要更大的SGA,那么至少要将将tmpfs设置为大于SGA的值,由于OEL系统下Oracle占用的共享内存不能大于tmpfs。

  • 检查网络环境。

7个IP是须要申请的,其中2个做为Public IP,2个做为VIP,1个Scan-IP,这5个IP应当是同一网段的,最后还须要2个不一样网段的Private IP,虽然私网IP能够自定义,可是在不清楚私网是经过公网直连仍是经过单独的交换机时(其实oracle要求private ip的interconnect使用单独的交换机且带宽须要至少是GB级别),最好申请独立的私网IP。网卡每一个节点须要2个至少,Public IP占用一个,Private占用一个。


*安装环境小编使用的是共享存储一块 2TB的 用oracleasm 格式化后 分别在两台实例上扫描 实例1格式化后 实例二扫描便可;



3、安装软件包

一、oracleasm

用来配置asm的磁盘,若是将oracle数据文件放置在普通磁盘上,则略过;


wget http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm


wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm


yum install -y kmod-oracleasm


rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm oracleasm-support-2.1.11-2.el7.x86_64.rpm



配置ASM属性:

oracleasm configure -i


Default user to own the driver interface [ ]: grid


Default group to own the driver interface [ ]: oinstall


Start Oracle ASM library driver on boot (y/n) [n]: y


Scan for Oracle ASM disks on boot (y/n) [y]: y


Writing Oracle ASM library driver configuration: done


建立分区 ;

注:在作如下步骤前可先重启服务器,使前面的设置生效 ;这里重启以后咱们 oracleasm createdisk myasm01 /dev/sdb1 建立可能会出问题 能够 oracleasm init 解决;记住不重启的话oracleasm有时候会不生效;
 

reboot  #重启  
   

fdisk -l  #查看磁盘

   

#分区/dev/sdb1,/dev/sdc1, /dev/sdd1
  

fdisk /dev/sdb
  

oracleasm createdisk myasm01 /dev/sdb1  
  

oracleasm createdisk myasm02 /dev/sdc1
  

oracleasm createdisk myasm03 /dev/sdd1
  

oracleasm scandisks
  

oracleasm listdisks


图片.png


#小编这里只用了1块磁盘因此要记住oracleasm盘的路径后面会用到;


部署正式开始:


图片.png


  • 基础包安装

oracle-database-server-12cR2-preinstall也不会帮你装好这些包,所以这一步是必需要手工作的。


yum -y install binutils.x86_64 compat-libcap1.x86_64 compat-libstdc* e2fsprogs.x86_64 libaio* libXau* libXi* libXtst* libstdc* glibc* libgcc* ksh gcc-c++*


--以上命令是我本身简化后的安装语句,通常来讲执行完以上安装就足够了,不够也没事,装grid时若是有缺失的根据报错Detail再装就行了。

--不一样Linux版本所需的包完整列表参考GI安装官方文档的4.7小节--Operating System Requirements for x86-64 LinuxPlatforms。


图片.png


vi /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 10485760
kernel.shmmax = 42949672960
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


  • 时间同步设置

参考网上配置ntp相关的文档便可,手工设置时间也能够。在安装过程当中两台实例时间同样便可,后面安装中能够忽略

  • 禁用防火墙和selinux

因为内网的数据交互会使用大量UDP端口,所以官网要求为RAC关闭防火墙,因此:


图片.png


其余的预安装要求我的认为再也不须要了,若是有更高的性能需求能够查看官方文档来进行更详细的设置,但本着简单安装、简单管理的原则,就这样啦!CentOS7 版本 可用 systemctl stop firewalld; Selinux : vim /sysconfig/selinux ;


图片.png


4、用户、组、以及目录


图片.png

groupadd -g 501 oinstall

groupadd -g 502 dba
groupadd -g 503 asmadmin
groupadd -g 504 asmdba
groupadd -g 505 asmoper
groupadd -g 506 oper
useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -u 502 -g oinstall -G dba,asmdba,oper oracle


mkdir -p /u01/app/oracle/product/12.2.0/db_1
mkdir -p /u01/app/grid
mkdir -p /u01/12.2.0/grid
mkdir -p /u01/app/oraInventory
chown -R oracle.oinstall /u01/app/oracle/
chown -R oracle.oinstall /u01/app/oracle/*
chown -R grid.oinstall /u01/app/grid/
chown -R grid.oinstall /u01/app/oraInventory/
chown -R grid.oinstall /u01/12.2.0/grid/


给予权限后给grid&oracle用户设置密码:passwd grid  passwd oracle ;密码自定义;


--修改用户安全限制:

--若是你不使用oracle-database-server-12cR2-preinstall,那么将如下内容复制到/etc/security/limits.conf文件中便可;

--若是你使用了oracle-database-server-12cR2-preinstall,那么将如下内容复制到/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf中便可(将以前的内容清空);


vim /etc/security/limits.conf 填写便可;


图片.png


oracle soft nofile 2048
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728

oracle soft memlock 134217728


grid soft nofile 2048
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728


session  required  pam_limits.so


图片.png


su - grid

vi .bash_profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/12.2.0/grid
export ORACLE_SID=+ASM1/+ASM2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH



su - oracle

vi .bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

export ORACLE_SID=orcl1/orcl2<br>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH


图片.png


能够把本身的两个压缩包放到刚才建立的目录中 linuxx64_12201_database.zip  /home/oracle ; linuxx64_12201_grid_home.zip  /u01/12.2.0/grid;以后给予相关权限;


# chown oracle.oinstall linuxx64_12201_database.zip

# chown oracle.oinstall linuxx64_12201_grid_home.zip #上面图片中没这个可是都提早给了吧一会解压的时候还得给,记住进入相关目录中直接给就行;

# su - oracle
$ unzip linuxx64_12201_database.zip
$ cd database /sshsetup/
$ ./sshUserSetup.sh - user oracle -hosts "node1 node2" -advanced -noPromptPassphrase  #本身的主机名,小编的是 rac-1&rac-2;

$ ./sshUserSetup.sh -user grid -hosts "node1 node2" -advanced -noPromptPassphrase


--最后在节点1使用oracle和grid用户都执行如下两条命令验证互信:


$ ssh node2 date     #小编这里的主机名字是 rac-1 因此 ssh rac-1 date便可;

$ ssh node2-priv date   


6、GRID安装

这里有个小坑,12c的GRID安装再也不会按你设置的grid用户的$ORACLE_HOME变量来做为GI的家目录,而是直接将你GRID软件的解压目录做为家目录。

固然这个小坑还可能引起另外一个大坑,屡次尝试安装grid时你会发现绑定好的磁盘即使dd格式化掉在安装grid时也找不到了...此时只要删了解压的grid目录从新解压安装就行了...(MMP的12c,还有扯淡的屎同样PDB,谁让你从11g升12c直接上腿就完事了)

你须要将linuxx64_12201_grid_home.zip拷贝至grid用户的$ORACLE_HOME,本文中就是/u01/12.2.0/grid,而后:


图片.png


# chown grid.oinstall linuxx64_12201_grid_home.zip
# su - grid
$ unzip linuxx64_12201_grid_home.zip


# cp /home/oracle/ database /rpm/cvuqdisk-1.0.10-1.rpm /root
# rpm -ivh cvuqdisk-1.0.10-1.rpm


# cd /u01/12.2.0/grid/

# ./gridSetup.sh      # 执行过程当中会出现问题;


故障以下:


[grid@lsl crs]$ ./gridSetup.sh 

ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.

Can't connect to X11 window server using '10.138.135.167:1.0' as the value of the DISPLAY variable.


解决方法:


[root@lsl Desktop]# xdpyinfo            #切换的root目录下执行;
name of display:    :1
version number:    11.0
vendor string:    The X.Org Foundation
vendor release number:    11500000

...省略...只须要记录name of display:的值
[root@lsl ]$ export DISPLAY=:1(这时设置为name of display的值:1)   #这里看xdpyinfo 的值,小编的是 export DISPLAY=:0 ;
[root@lsl ]# xhost +
access control disabled, clients can connect from any host

[root@jytest3 Desktop]# su - grid
Last login: Tue Mar  7 17:50:40 CST 2017 on pts/0 ;

su - grid 

cd /u01/12.2.0/grid 

./gridSetup.sh

图片.png  

图片.png


注意:scan的 name须要和/etc/hosts里面的scan的名称一致不然会出现错误;


图片.png

图片.png


注意:这里的主机名字和虚拟主机名字也须要和/etc/hosts 的名称同样;


图片.png


图片.png


注意:在执行远程的时候从服务(实例2&rac-2)安装目录不要有文件,若有会提示远程失败,须要把文件里面的文件清除掉;


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


注意:这里小编建议直接√上节省后面本身执行脚本了;


图片.png


注意:这里执行成功了会显示全部节点(rac-1 rac-2)本身的主机名称;若是没有须要检查下共享存储;


图片.png


图片.png


注意:若是按照小编的方法√本身执行的话不会出现下方文件,注意执行脚本先在实例一(rac-1)上执行 /oracle/app/oraInventory/orainstROOt.sh ;

以后再到实例二(rac-2)上执行 /oracle/app/oraInventory/orainstROOt.sh; 以后再实例一(rac-1)执行/data/grid/root.sh 实例二(rac-2)执行;


图片.png


注意!这里实例一(rac-1)执行脚本通常不会出现问题,实例二(rac-2)会出现问题;问题总结以下;


TIM图片20190802113905.jpg


这个问题基本上是oracleasm权限的问题须要给相应的权限须要对比下若是不一样能够修改;


修改方法以下;chown grid.asmadmin MYASM01  chmod 642 MYASM01 ;


图片.png


图片.png


图片.png


注意:执行过程到90%会提示错误能够直接忽略便可;


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


 echo "oracle soft memlock 3145728" >>/etc/security/limits.conf

 echo "oracle hard memlock 3145728" >>/etc/security/limits.conf


图片.png


图片.png


图片.png


至此小编安装结束后面喜欢继续往下安装的伙伴能够到我百度云盘下载pdf;


https://pan.baidu.com/s/1AiDlKVz77-mhpkHpf9F2OA    提取码 9s5z;

相关文章
相关标签/搜索