您的位置:首页 > 数据库 > Oracle

实战 Centos7 oracle12c rac集群部署;

2020-02-02 08:31 2136 查看


Oracle RAC 工作原理:

单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。

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

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



什么是 RAC ?



一般每个实例都放在不同的服务器上面,这样可以起到冗余作用。所有的数据库文件都放在共享存储上面,但是还有一些文件放在每个实例自己的本地的磁盘上面,比如参数文件,每一个实例都可以有自己的参数文件,这个参数文件既可以放在本地也可以放在共享存储上面,多个实例都使用同一个参数文件。

 
在RAC里面,最重要的就是实例和实例之间的交互,即使是分离的实例,但是读取的数据是相同的,RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。


RAC架构:



对于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。如果私有网络,所有的数据都在一个网络下面,那么那么就会对数据造成影响,严重的影响RAC的性能了。实例之间数据之间传递使用私有网络和对外服务提供的网络之间是物理分开的。所以RAC至少有两套网络,一个是实例之间的数据的传递,另外一个是公有网络,是对外提供服务的,外面的业务是提供公有网络的IP链接到数据库的。


RAC特点:


RAC如何容错的?



使用SAN存储,存储和服务器就不在一起了,而是和服务器分离了,是一个网络的存储系统,服务器是服务器,存储是存储,完全分离的。

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


实战部分:

 

建设背景:

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


安装流程:

一、软件下载

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

下载 linuxx64_12201_database.zip 和 linuxx64_12201_grid_home.zip 就可以了,然后上传至节点1的任意目录。


二、硬件和网络环境

  • 检查内存(至少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格式化后 实例二扫描即可;



三、安装软件包

1、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)
: 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



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


部署正式开始:



  • 基础包安装

oracle-database-server-12cR2-preinstall也不会帮你装好这些包,因此这一步是必须要手工做的。




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



session  required  pam_limits.so






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



可以把自己的两个压缩包放到刚才创建的目录中 linuxx64_12201_database.zip  /home/oracle ; linuxx64_12201_grid_home.zip  /u01/12.2.0/grid;之后给予相关权限;



六、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,然后:









注意:scan的 name需要和/etc/hosts里面的scan的名称一致否则会出现错误;







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






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






























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





注意:这里执行成功了会显示所有节点(rac-1 rac-2)自己的主机名称;如果没有需要检查下共享存储;






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

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


[code]

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



















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

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








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


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







  • 点赞
  • 收藏
  • 分享
  • 文章举报
李世龙Ming 发布了276 篇原创文章 · 获赞 0 · 访问量 686 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: