本文转载自dbaplus社群 本文根据王鹤松老师在deeplus直播第259期线上分享演讲内容整理而成。(文末有获取本期PPT回放的方式,不要错过) 王鹤松 中国东南地区甲骨文用户组(SECOUG)核心成员Oracle11gOCM,拥有十几年的数据库经验,曾服务于电信,税务,交通,金融等行业,有丰富的性能优化、故障诊断、数据库设计、异常恢复经验,热衷于技术的研究与分享。 随着国家政策逐步推进企业上云,云计算做为重点发展的战略性产业受到多方关注。市面上云厂家很多,各有各的优势。Oracle云凭借独一无二的技术,成为私有云和公有云部署的理想平台。本次技术分享会在Oracle云上完整搭建一套RAC,告诉大家在搭建过程中的注意事项以及要规避的坑。还会分享FlEXASM新特性,同时结合云上高可用最佳实践来保证用户不间断的访问。 一、Oracle云的使用 1、个人测试账户申请 https:www。oracle。comcncloudfree 除了要进行邮箱验证和必要的信息录入外,还需要准备一张支持国际货币交易的信用卡,可支持一下三种: 验证过程会模拟一次交易,但会马上撤销,(或者会显示扣费失败,实际验证成功),最终以收到的邮件为准。 2、账号登陆 登陆地址 https:cloud。oracle。com 或者 https:console。aptokyo1。oraclecloud。com(区域选择日本登录地址) https:console。apseoul1。oraclecloud。com(区域选择韩国登录地址) https:console。usphoenix1。oraclecloud。com(区域选择美西登录地址) 3、创建虚拟云网络 建议使用虚拟网络向导创建,并验证入站和出站规则正常。 4、创建SSH秘钥 以xshell工具为例 按提示输入信息外,要注意:要选择RSA算法 生成的密钥属性里,可以将公钥另存成文件,或记录下公钥的具体信息,便于上传服务器 5、创建集群 根据页面提示填写注意事项,其中配置选项里要VMStandard2。2以上,节点总数要选2,添加SSH密钥部分将上个步骤生成的密钥文件上传: 创建成功后,可以在数据库详细信息的节点部分,看到对应的公网IP 6、配置ssh链接 ssh链接后,使用sudo切换用户,如sudosuoracle 二、12C新特性FLEX集群 1、FLEX集群介绍 OracleRAC12c引入了两个新概念: 中心节点:和以前的版本一样,它们通过专用网络相互连接,并且可以直接访问共享存储。这些节点可以直接访问Oracle集群注册表(OCR)和表决磁盘(VD); 叶节点:这些节点是轻型节点,彼此不互连,也不能像中心节点一样访问共享存储。每个叶节点与所连接的中心节点通信,并通过所连接的中心节点连接到集群。 从架构上来说,OracleFlex集群包括一个中心和叶架构,其中只有中心节点可以直接访问Oracle集群注册表(OCR)和表决磁盘(VD)。但是应用可以通过叶节点访问数据库,而不必在叶节点上运行ASM实例。通过中心节点连接到数据库使得它对应用透明。 2、FLEXASM的体系结构: 3、FLEX集群与传统集群的区别 Flex集群RAC12C与传统集群的11GRAC相比,最大不同得是有Hub以及Leaf节点的存在,而Hub节点类似于传统集群节点,但是存在一个最大区别:即传统集群节点11GRAC是ASM实例与数据库实例绑定,ASM实例宕机则直接导致数据库实例无法访问,但是该方式在Flex集群中已将ASM和数据库实例进行了分割,本机ASM实例宕了,其ASM服务飘在其他节点,数据库实例仍然是可以访问的 4、FLEXASM新特性模拟实验 1。在ASM实例中检查集群状态正常 〔gridcat1〕crsctlcheckcluster CRS4537:ClusterReadyServicesisonline CRS4529:ClusterSynchronizationServicesisonline CRS4533:EventManagerisonline 2。检查RAC数据库实例中ASM实例两个节点的状态正常 〔gridcat1〕srvctlstatusasm ASMisrunningoncat2,cat1 3。检查OracleFlexASM是否启用的命令 〔gridcat1〕asmcmdshowclustermode ASMcluster:FlexmodeenabledDirectStorageAccess 〔gridcat1〕asmcmdshowclusterstate Normal 4。确认OracleFlexASM的状态 〔gridcat1〕srvctlstatusasmdetail ASMisrunningoncat2,cat1 ASMisenabled。 ASMinstanceASM1isrunningonnodecat1 Numberofconnectedclients:2 Clientnames:cat1:OCR:catclusterwhs11:whs1:catcluster ASMinstanceASM2isrunningonnodecat2 Numberofconnectedclients:2 Clientnames:cat2:OCR:catclusterwhs12:whs1:catcluster 〔gridcat1〕srvctlconfigasmdetail ASMhome: Passwordfile:OCRorapwASM BackupofPasswordfile:OCRorapwASMbackup ASMlistener:LISTENER ASMisenabled。 ASMisinpiduallyenabledonnodes: ASMisinpiduallydisabledonnodes: ASMinstancecount:3 ClusterASMlistener:ASMNET1LSNRASM 5。sqlplus连接入RAC的节点2的实例2(whs12) sqlplusassysdba 6。查询一定数据量的表单,需要能形成刷屏效果 7。在RAC实例任意节点中关闭节点2的ASM实例 〔gridcat1〕srvctlstopasmnodecat2stopoptionabortforce 8。验证查询未被终止,并能正常输出 9。在RAC实例2(cat2)中检查ASM实例的状态,发现ASM实例并未运行在节点2上 〔gridcat1〕srvctlstatusasm ASMisrunningoncat1 10。在RAC实例2(cat2)中检查ASM和RAC数据库的状态 〔gridcat1〕psefgreppmon oracle392971010:43?00:00:00orapmonwhs11 grid101927100740015:26pts300:00:00grepcolorautopmon 注:由此可以验证flex集群的特性,ASM实例与数据库实例非绑定状态 11。恢复节点2的ASM实例 〔gridcat1〕srvctlstartasmnodecat2 三、高可用性实践 1、创建针对PDB1WHS的故障转移服务 srvctladdservicedwhs1sserwhspdb1rwhs11,whs12Pbasiceselectmbasicz180w5pdbPDB1WHS 2、启动服务 srvctlstartservicedwhs1sserwhspdb1 3、检查服务状态 srvctlstatusservicedwhs1sserwhspdb1 4、在RAC的节点1创建连接串 45pdbwhs (DESCRIPTION (ADDRESS(PROTOCOLTCP)(HOST192。168。0。45)(PORT1521)) (CONNECTDATA (SERVERDEDICATED) (SERVICENAMEserwhspdb1) ) ) 5、使用创建的连接串登陆 sqlplustesttest45pdbwhs 6、检查会话连接的实例信息 setline1000 selectINSTANCENUMBER,INSTANCENAME,STATUS,HOSTNAME INSTANCENUMBERINSTANCENAMESTATUSHOSTNAME 1whs11OPENcat1 7、查询一定数据量的表单,需要能形成刷屏效果 8、强行停止会话所在的实例 srvctlstopinstancedwhs1iwhs11f 9、验证查询未被终止,并能正常输出 10、检查节点1进程信息,发现数据库实例没有启动 〔gridcat1〕psefgreppmon oracle392971010:43?00:00:00orapmonASM1 grid101927100740015:26pts300:00:00grepcolorautopmon 11、再次检查会话连接的实例信息,发现会话在无感知情况下已切换至节点2 setline1000 selectINSTANCENUMBER,INSTANCENAME,STATUS,HOSTNAME INSTANCENUMBERINSTANCENAMESTATUSHOSTNAME 2whs12OPENcat2 注:使用TAF服务来实现业务在云端节点之间的弱感知甚至零感知的会话漂移 QA Q1:公有云上部署高性能OracleRAC集群有哪些比较好的方法啊? A1:首先要注意的是,目前除了Oracle云,甲骨文官方不支持其他云使用Oracle数据库的。当然技术上,其他云是可以安装、部署Oracle数据库的。Oracle云上搭建RAC集群是自动化完成的,对于核心业务可以参考视频的高可用测试进行配置。 Q2:我们公司Oracle数据库是单机模式的,如果想要云上搭建OracleRAC,您有什么建议? A2:云上搭建RAC服务器,使用DATAGUARD的方式从本地单机服务器实时同步数据到云端服务器,然后使用主备切换的方式,将数据库的主库迁移到云上RAC,实现数据库上云。这种是最为成熟的一种上云方式。要注意云上的单机和云上的RAC收费不是一个量级的,建议搭建一个测试环境模拟下。 Q3:已部署普通集群,普通集群如何转换为flex集群?后续要怎么做? A3:按照以下步骤: 步骤1:先使用asmca图形界面的converttooracleflexasm按钮将ASM改为 步骤2:root用户使用命令crsctlsetclustermodeflex将集群改为flex集群; 步骤3:重启集群生效。 Q4:企业上云有必要全部都搬上云吗?上云哪些是重点? A4:现阶段企业上云没有必要全部上云,建议最核心的系统不上云,非最核心和边缘系统上云。虽然上了云,还是建议本地有一个备机以防万一。 上云的有许多优点,例如: 可以降低企业技术开发成本; 现在公有云技术越来越成熟,丰富的产品线可以实现一站式上云; 企业云计算的灵活性非常高; 系统升级方便; 企业上云可以减少运维开支。但最核心不容有失,现阶段,建议还是采用最传统的两地三中心的容灾方法最为稳妥,这种方案相比上云还是更为成熟。 Q5:本地迁移上Oracle云有哪些地方容易出错?怎么选择迁移方案? A5:本地迁移上Oracle云在私网通信配置最容易出错,在视频中有介绍。迁移方式的方式有很多,可以根据具体业务的情况的做出选择。这边建议还是DATAGUARD、OGG、数据泵、XTTS等方法为主。各种方法有各自的优缺点,同平台同版本、停机时间短的,建议使用DATAGUARD;数据库数据量小的,可以使用数据泵方法;应用停机时间短、同步粒度灵活(记录级)、不同平台的,建议使用OGG。可以根据实际情况选择其中一种或几种方式结合使用。 Q6:Oracle云创建的云服务器本身有哪些安全防护功能,是否具备病毒防护等功能? A6:Oracle云创建的云服务器具有病毒防护功能。具体的防护功能有: Oracle云会自动查询漏洞信息,根据季度发布的补丁信息给予用户是否打补丁。具体的补丁更新权取决于用户; Oracle云服务器本身的还有IP访问控制和端口访问控制,严格审计登录用户; SSH连接秘钥带有安全审计功能。要注意,云端的数据安全是要用户自己负责的,所以常规的备份和容灾也不可或缺。