资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,数据库架构升级优化,之,RAC,张春光,Mail,:,micky.zhang,Copyright,leaderit software Corporation,保留所有权利,写在前面的话,易经,坤,初六有云:,“履霜,坚冰至”,象,曰:,“履霜,坚冰,”,,阴始凝也;驯致其道,至坚冰也。,课程计划,1,、什么是,Oracle RAC,2,、,Oracle RAC,的结构,4,、,Oracle RAC,的关键技术,5,、,Oracle RAC,的优缺点,6,、,Oracle RAC,架构的延伸,3,、,Oracle RAC,的原理,1,、什么是,Oracle RAC,Oracle RAC is a unique technology that provides high availability and scalability for all application types.The Oracle RAC infrastructure is also a key component for implementing the Oracle enterprise grid computing architecture.Having multiple instances access a single database prevents the server from being a single point of failure.Oracle RAC enables you to combine smaller commodity servers into a cluster to create scalable environments that support mission critical business applications.Applications that you deploy on Oracle RAC databases can operate without code changes.,1.1,、,Oracle RAC,的含义,RAC,,全称,real application clusters,,译为,“,实时应用集群,”,,是,Oracle,新版数据库中采用的一项新技术,是高可用性的一种,也是,Oracle,数据库支持网格计算环境的核心技术。,1,、什么是,Oracle RAC,1.2,、什么是集群,Interconnected nodesact as a single server.,Cluster software hides the structure.,Disks are availablefor read andwrite by all nodes.,Operating systemis the same on each machine.,Node,Disks,Private Interconnect,Clusterwareon each node,PublicNetwork,PublicNetwork,PublicNetwork,PublicNetwork,1,、什么是,Oracle RAC,1.3,、什么是,Oracle RAC,Multiple instancesaccessing the samedatabase,One Instance per node,Physical orlogical accessto each database file,Software-controlleddata access,Instancesspreadacross nodes,Databasefiles,Interconnect,Sharedcache,1,、什么是,Oracle RAC,1.4,、,Oracle RAC,和单点,DB,1,、什么是,Oracle RAC,Oracle RAC,数据库管理软件,1,,硬件架构拓扑实现,2,,安装操作系统和集群管理软件,构成集群环境,3,,选用,Oracle,的,RAC,组件,构成,RAC,环境,4,,安装数据库管理软件,5,,创建数据库,监听,实例等等,1.5,、,Oracle RAC,的历史,1,、什么是,Oracle RAC,2,、,Oracle RAC,的结构,2.1,、,Oracle RAC,硬件架构拓扑图,硬件架构拓扑说明,该拓扑图是一个典型的两节点,RAC,系统,整个架构由两台主机,一台共享存储设备,两台光纤交换机,四台网络交换机等等构成,其中,两台光纤交换机,两台心跳交换机,两台公用,IP,交换机都做了集群冗余,集群中的设备,无论哪台出了问题,都不会影响整个系统的正常运行,2,、,Oracle RAC,的结构,硬件设备主要包括如下部分:,服务器,共享存储设备,网络交换机,光纤交换机,网线,光纤,2.2,、硬件设备,2,、,Oracle RAC,的结构,2.2,、硬件设备,服务器:,我们有时候称其为,“,数据库服务器,”,,,“,数据库主机,”,,在,RAC,的术语中我们又称其为,“,节点,”,。,服务器的配置应该相同,,cpu,,内存等,还有,每台服务器上至少两块物理网卡,分别用于主机间私有通信和对外公用通信,也可以有多快网卡,进行网卡绑定,实现网卡的冗余。,私有通信的网卡叫,private NIC,,对应的,IP,为,private IP,公用通信的网卡叫,public NIC,,对应的,IP,为,public IP,每台服务器至少一块,HBA,卡,用于共享存储的连接。可以用光纤线直连存储,也可以通过光纤交换机,我们建议使用光纤交换机。同时,也可以配置多块,HBA,卡,实现其冗余,提高其容错性。,2,、,Oracle RAC,的结构,2.2,、硬件设备,共享存储:,共享存储是整个,RAC,架构中的核心,RAC,是一个典型的,“,多实例,单数据库,”,架构,被所有节点共享,并行访问。数据库数据文件,控制文件,参数文件,联机重做日志文件,甚至归档日志文件都放在共享存储上。并保证可以被所有节点同时访问。,IO,性能要求比较高,一般用光纤线连接,运行,scsi,协议,共享存储可以通过存储镜像来实现其冗余,2,、,Oracle RAC,的结构,2.3,、软件架构拓扑图,2,、,Oracle RAC,的结构,软件拓扑说明,该拓扑图是一个典型的两节点,RAC,系统,服务器软件环境有:操作系统(,OS,),集群软件(,Oracle clusterware,),数据库软件(,Oracle RDBMS,),各种驱动程序,2,、,Oracle RAC,的结构,2.4,、软件设备,软件设备如下:,操作系统,如,RHEL,,,AIX,,,HP_UX,等,集群软件:,Oracle clusterware,数据库软件:,Oracle RDBMS,各式驱动程序,如网卡驱动,,HBA,卡驱动,,ASMLib,等,2,、,Oracle RAC,的结构,2.4,、软件设备,操作系统:,每个节点上的必须是相同的操作系统,版本必须一致,包括操作系统小版本,补丁号等,例如:,操作系统:,RHEL AS 4.8 64bit,内核版本:,2.6.9-89.EL,2,、,Oracle RAC,的结构,2.4,、软件设备,集群软件:,是整个集群环境的核心组成部分,安装在操作系统上的特殊软件,负责管理整个集群环境中的硬件资源,并为其上层应用提供服务,如,RAC,集群提供基础服务。,在单服务器模式下,应用所要做的事情,通过,OS,内核和硬件访问来完成,但是在多服务器模式下,,OS,内核无法完成对所有硬件资源的访问控制,集群软件填补了这个空白,应运而生。,2,、,Oracle RAC,的结构,2.4,、软件设备,数据库软件:,新的硬件,新的操作系统,新的集群软件,新的数据库软件,注意彼此之间的兼容性,实验环境用的是,oracle 10.2.0.5,2,、,Oracle RAC,的结构,2.4,、软件设备,集群文件系统:,数据文件,控制文件,参数文件,重做日志文件等等都要放到共享存储上,各节点可以对这些文件进行并行访问控制,一般文件系统很难做到,需要裸设备或者集群文件系统。,Oracle,公司两种集群解决方案是:,ocfs,(,2,)和,ASM,IBM,的集群文件系统:,GPFS,RedHat,的集群文件系统:,GFS,VERITAS,的集群文件系统:,Veritas Storage Foundation,2,、,Oracle RAC,的结构,2.5,、逻辑结构,2,、,Oracle RAC,的结构,3,、,Oracle RAC,的原理,集群环境层面:,并发控制,健忘症,脑裂,,IO,隔离;,共享存储层面:,共享,并发访问;,RAC,层面:,存储层,网络层,集群件层,应用层,数据库实例层面:,并发访问和控制,3.1,、,Oracle RAC,的原理,3.2.1,、并发控制:,在集群环境中,数据是放在共享存储上的,每个节点之间的身份是对等的,对数据有相同的访问权利,这就要求集群件对这种对等权限的并发访问有控制机制,在,Oracle RAC,中,利用,Distribute Lock Management,(,DLM,)机制进行多个节点间并发访问的控制,3.2,、集群环境层面,3,、,Oracle RAC,的原理,3.2.2,、健忘症:,该问题是由于每个节点上都有一份集群配置信息,修改节点的配置信息得不到同步导致的。,解决健忘问题的最简单办法是,整个集群只有一份集群配置信息,无论哪个节点修改了配置信息,都是同一份,配置信息对每个节点都是一样的。,Oracle RAC,使用,OCR Disk,文件解决这个问题,3.2,、集群环境层面,3,、,Oracle RAC,的原理,3.2.3,、脑裂:,在集群环境中,节点间需要某种机制,比如心跳,了解彼此的健康状况。假如心跳出了问题,每个节点都会认为其他节点都不复存在了,自己是唯一的幸存者,就会控制整个集群。因为数据是共享的,都来控制独享,势必会破坏共享数据的完整性和一致性。,这时候表决盘被引入,通过投票机制,获得最高票数或者最早到达的获得投票的,幸存,其他节点被踢出。,在,Oracle RAC,中,Voting Disk,用来记录节点间成员的状态,出现脑裂时,仲裁哪个,partition,获得控制权,其他的,partition,被剔除,3.2,、集群环境层面,3,、,Oracle RAC,的原理,3.2.4,、,IO,隔离:,虽然,Partition,被剔除了,但是并没有限制其对共享数据的访问,所以为了限制已踢出节点对共享数据的访问,必须进行,IO,隔离。,Oracle RAC,采取的是直接重启故障节点。,3.2,、集群环境层面,3,、,Oracle RAC,的原理,因为集群环境中,数据是共享的,每个集群节点都可以访问到,因此存储必须能够共同访问,也就是解决好存储设备的共享和并发访问,3.3,、共享存储层面,3,、,Oracle RAC,的原理,3.4.1,、存储层:,RAC,是多实例单数据库的架构,数据库相关的文件在集群中只有一份,而且是共享。,所以,RAC,有时候不能完全依赖于集群层面解决存储的共享,并发访问控制等,也有自己的机制,cache fusion lock,。,3.4,、,RAC,层面,3,、,Oracle RAC,的原理,3.4.2,、网络层:,在整个,RAC,环境中,可以认为存在四个网络环境:,Public,网络,对应,public Ip,,用于对外提供数据查询服务,服务器维护,数据库维护等,Virtual,网络,对应,virtual IP,,用于提供应用连接,一般应用程序使用的是该,IP,Private,网络,对应,private IP,,用于,RAC,心跳和,cache fusion,,对速度要求很高,存储网络,由存储设备,,HBA,卡,光纤交换机等组成,3.4,、,RAC,层面,3,、,Oracle RAC,的原理,3.4.3,、集群件层:,在单机环境中,,os,内核直接和服务器硬件通信,管理硬件设备,控制进程之间的访问。但是在集群环境下,,os,内核就显得力不从心,无法保证多主机之间的协调工作,集群管理软件应运而生。在,Oracle RAC,环境中,该机制位于,oracle,和,os,内核之间的,Oracle clusterware,,如果该节点需要与其他节点间进行通信,它会在,os,内核前截获请求,并与其他节点的,clusterware,通信协商。,Oracle RAC,层和集群件层是不一样的,因为集群件可以是其他第三方的软件,如,HACMP,,,ServiceGuard,等,3.4,、,RAC,层面,3,、,Oracle RAC,的原理,3.4.4,、应用层:,在,Oracle RAC,数据库系统来看,应用层也就是,Oracle RDBMS,层面。整个应用层是由若干,CRS Resource,组成,一个,resource,是由一个或者一组进程构成的一个完整服务,Oracle RAC,系统之所以能提供高可用服务,主要是因为集群软件对运行其上的应用进行监控,并在应用发生异常时进行重启,切换等干预活动,被监视的对象就是,CRS Resource,,进程是,LMON,(,Lock,Monitor,Process,)。,CRS Resource,可以在,RAC,安装时自动或者手动创建,并注册到,CRS,中,以元数据的形式记录在,OCR,磁盘上。,CRS Resource,包括:,GSD,,,ONS,,,VIP,,,database,,,instance,,,listener,,,service,等,3.4,、,RAC,层面,3,、,Oracle RAC,的原理,4,、,Oracle RAC,的关键技术,OCR Disk,Voting Disk,VIP,DLM,Cache Fusion,Failover,Loadbalance,ASM,4.1,、,Oracle RAC,的关键技术,OCR Disk,主要用来解决集群的,“,健忘,”,问题,健忘问题主要是由于修改集群配置信息后,节点间的集群配置信息不一致导致的,,oracle,给出的解决办法是,只有一份共享的集群配置文件,在,linux,系统中信息如下:,rootrac2#ll/etc/oracle/,-rw-r-r-1 root oinstall 45 Mar 28 14:01 ocr.loc,drwxrwxr-x 5 root root 4096 Apr 12 12:32 oprocd,drwxr-xr-x 3 root root 4096 Mar 28 14:01 scls_scr,rootrac2#cat/etc/oracle/ocr.loc,ocrconfig_loc=/dev/raw/raw1,local_only=FALSE,4.2,、,OCR DISK,4,、,Oracle RAC,的关键技术,也可以用如下命令查看:,4.2,、,OCR DISK,4,、,Oracle RAC,的关键技术,基于,OCR Disk,的重要性,在,oracle clusterware,在运行的过程中必须确保其内容的完整性,因此不是每个节点都可以操作,OCR Disk,,每个节点上都有一份其内容的拷贝,在一块叫,OCR cache,的内存中。,如果需要修改其内容,节点上的,OCR process,会通知可以更改,OCR Disk,的节点,OCR master Node,,,master node,节点上的,OCR process,负责更新本地和其他节点的,OCR cache,内容。,其他的进程,如,ocssd,,,evm,等,都不能直接访问,OCR cache,内容,如果需要访问,会向,OCR process,进程发送请求。,OCR Disk,每四个小时自动备份一次,4.2,、,OCR DISK,4,、,Oracle RAC,的关键技术,Voting Disk,用来解决,“,脑裂,”,问题,仲裁哪个节点或者,partition,获得集群的控制权。,其位置在:,oraclerac2$crsctl query css votedisk,0.0 /dev/raw/raw2,located 1 votedisk(s).,4.3,、,Voting DISK,4,、,Oracle RAC,的关键技术,备份命令为:,4.3,、,Voting DISK,4,、,Oracle RAC,的关键技术,在,TCP/IP,四层模型中,,tcp header,中记录的最重要的信息是源端口和目标端口。,IP header,中记录的最重要的信息是源,IP,地址和目标,IP,地址。,而数据库监听中记录了,IP,地址和端口号,位于应用层,所以客户端的连接请求只有在发现,tcp,层超时,才能感知数据库或者监听出了问题,4.4,、,VIP,4,、,Oracle RAC,的关键技术,TCP/IP,协议栈超时,其时间的阈值由,OS,内核决定,每个操作系统的阈值不相同。,为了解决,TCP/IP,协议栈超时问题,,Oracle RAC,引进,VIP,。,VIP,和,IP,的不同是:,VIP,是浮动的,,IP,是固定到物理网卡上的。一旦某个节点出现了故障,其上运行的,VIP,会漂移到活着的节点上,但是活着的节点上的监听里找不到该,VIP,的地址,应用程序立马会感知到,并向其他,VIP,地址发起连接请求。捕获错误的时间大大缩短。,4.4,、,VIP,4,、,Oracle RAC,的关键技术,Vip,会在安装,clusterware,的最后阶段由,/u01/app/oracle/product/10.2.0/crs_1/bin/vipca,脚本创建,并做为,CRS Resource,注册到,OCR,中,会绑定到每个节点的,public,网卡上:,4.4,、,VIP,监听中记录,public ip,和,vip,:,(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=220.210.100.4)(PORT=1521),(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=220.210.100.2)(PORT=1521),客户端,tnsnames,中配置,VIP,4,、,Oracle RAC,的关键技术,DLM,(,Distributed Lock Management,)分布式锁管理器,负责协调节点间资源的竞争,保证并发的有效性,保护共享数据的安全。,4.5,、,DLM,4,、,Oracle RAC,的关键技术,Cache Fusion,提供传输的扩展性,在实例间传输,block,的,image,,跟踪资源的当前位置和状态,每个实例的,sga,的目录结构中保存有资源信息,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Cache Fusion,模型,Global Resoure Directory,由,Global Cache Service,来管理记录资源的模式、资源的角色、,block,在实例中的状态、在各个活动的节点发布资源的,master,、在必要的时候重新发布,master,(例如实例的启动和关闭),4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Global Cache Service,1,、资源模式,三种,null (,默认的,),share(s)(,查询,),exclusive(x)(,可以改变,block,的内容,其它的实例就是,null mode),2,、资源角色有两种,local,:,第一次请求资源的初始模式,;,只有一个实例可以有这个,block,的,dirty copy,global,:,当一个,Block,在多个实例中变,dirty,时,,Local,就变成了,Global Block,只能由,Global Cache Service,写到磁盘中,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Cache Fusion Block,的传输:,例如:有,ABCD,四个节点,,Global Cache Service:GCS,1.Read with no transfer,如果,C,节点需要向共享磁盘文件上读一个,Block,,那么它向,Global Cache Service,发送请求,这个时候请求被定向到节点,D,,,D,是这个,Block,的,Master(,每个资源都有,Master),。,GCS,把资源授权为,Share Mode,和,Local Role,,在目录中记录下了他的状态,(,目录在节点,D),,然后通知,C,,,C,把这个资源从,Null,改成,Share,。,C,开始,I/O,,现在,C,有了这个,Block,以,Share,模式从磁盘文件读取权限。,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Cache Fusion Block,的传输:,例如:有,ABCD,四个节点,,Global Cache Service:GCS,2.Read to write transfer,B,也要这个,Block,,并且不仅是读,而且还要改变它的内容。,B,向,D(,这个,Block,的,Mater),的,GCS,发出请求,,GCS,向,C,发出请求,要求,C,把这个,Block,给,B,,,C,把,Block,给,B,,,B,收到后,告诉,GCS,,现在,B,可以修改这个,block,了。,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Cache Fusion Block,的传输:,例如:有,ABCD,四个节点,,Global Cache Service:GCS,3.Write to write transfer,A,向,D,节点的,GCS,发出请求,,GCS,告诉,B,节点放弃他的,Exclusive,锁,并且把当前的,Image,传到,A,,如果这个请求没有完成,就会放到,GCS,的队列里。,B,把这个,Block,传到,A,,这个时候,要写,Log,,强制,Log Flush,,把模式变成,Null,。发送到,A,,并且告诉它这个,Exclusive,的资源可以用了。,A,收到了这个,Block,的,Image,,会通知,GCS,并且告诉它,Block,的,Status,是,Exclusive,。这个时候,,B,不能对这个,Block,做操作,虽然在它的,Buffer Cache,中,它还有这个,Block,的,Copy,。,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Cache Fusion Block,的传输:,例如:有,ABCD,四个节点,,Global Cache Service:GCS,4.Write to read transfer,C,要读这个,Block,,先向,D(Master),发出请求,,GCS,要求,A,把它传输到,C,,,A,接受到请求完成它的工作,这可能会在,A,写,Log,和,Log Flush,。在发送这个,Block,之前,,A,会把它的,Exclusive,锁降低到,Share,模式。,C,把从,A,收到的,Block,的,SCN,取出来,建设成一个资源,Assumption,信息为,GCS,更新,Global Resource Directory,。,4.6,、,Cache Fusion,4,、,Oracle RAC,的关键技术,Oracle RAC,同时具备,HA(High Availiablity),和,LB(LoadBalance).,而其高可用性的基础就是,Failover(,故障转移,).,它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言,是感觉不到这种切换。,Oracle 10g RAC,的,Failover,可以分为,3,种:,1.Client-Side Connect time Failover,2.TAF,3.Server-Side TAF,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Client-Side Connect Time Failover,Client-Side Connect Time Failover,的含义:如果用户端,tnsnames,中配置了多个地址,用户发起连接请求时,会先尝试连接地址表中的第一个地址,如果这个连接尝试失败,则继续尝试使用第二个地址,直至连接成功或者遍历了所有的地址。,这种,Failover,的特点:只在建立连接那一时刻起作用,也就是说,这种,Failover,方式只在发起连接时才会去感知节点故障,如果节点没有反应,则自动尝试地址列表中的下一个地址。一旦连接建立之后,节点出现故障都不会做处理,从客户端的表现就是会话断开了,用户程序必须重新建立连接。,启用这种,Failover,的方法就是在客户端的,tnsnames.ora,中添加,FAILOVER=ON,条目,这个参数默认就是,ON,,所以即使不添加这个条目,客户端也会获得这种,Failover,能力。,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Client-Side Connect Time Failover,Tnsnames.ora,配置实例:,ORCL=,(DESCRIPTION=,(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521),(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521),(LOAD_BALANCE=yes),(CONNECT_DATA=,(SERVER=DEDICATED),(SERVICE_NAME=orcl),),),4.7,、,Failover,4,、,Oracle RAC,的关键技术,TAF(Transparent Application Failover),现在的大部分流行的应用系统,(,如:,weblogic,Jboss),都是启动时就建立若干到数据库的长连接,在应用程序整个生命周期内重用这些连接。而,Client-Side Connet Time Failover,的工作方式是它对应用程序的可用性没有太大帮助。,所谓,TAF,,就是连接建立以后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入,当然,这种透明要是有引导的,因为用户的未提交事务会回滚。相对与,Client-Side Connect Time Failover,的用户程序中断,抛出连接错误,用户必须重启应用程序,,TAF,这种方式在提高,HA,上有了很大的进步。,4.7,、,Failover,4,、,Oracle RAC,的关键技术,TAF(Transparent Application Failover),TAF,的配置也很简单,只需要在客户端的,tnsnames.ora,中添加,FAILOVER_MODE,配置项。这个条目有,4,个子项目需要定义。,1.METHOD:,用户定义何时创建到其实例的连接,有,BASIC,和,PRECONNECT,两种可选值。,BASIC,:是指在感知到节点故障时才创建到其他实例的连接。,PRECONNECT:,是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。,两种方法比较:,BASIC,方式在,Failover,时会有时间延迟,,PRECONNECT,方式虽然没有时间延迟,但是建立多个冗余连接会消耗更多资源,两者就是是用时间换资源和用资源换时间的区别。,4.7,、,Failover,4,、,Oracle RAC,的关键技术,TAF(Transparent Application Failover),TAF,的配置也很简单,只需要在客户端的,tnsnames.ora,中添加,FAILOVER_MODE,配置项。这个条目有,4,个子项目需要定义。,2.TYPE,:用于定义发生故障时对完成的,SQL,语句如何处理,其中有,2,种类型:,session,和,select.,这,2,种方式对于未提交的事务都会自动回滚,区别在于对,select,语句的处理,对于,select,,用户正在执行的,select,语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则抛弃。,假设用户正在节点,1,上执行查询,整个结果集共有,100,条记录,现在已从节点,1,上返回,10,条记录,这时节点,1,宕机,用户连接被转移到节点,2,上,如果是,session,模式,则需要重新执行查询语句;如果是,select,方式,会从节点,2,上继续返回剩下的,90,天记录,而已经从节点,1,返回的,10,条记录不会重复返回给用户,对于用户而言,感受不到这种切换。,显然为了实现,select,方式,,Oracle,必须为每个,session,保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案,4.7,、,Failover,4,、,Oracle RAC,的关键技术,TAF(Transparent Application Failover),TAF,的配置也很简单,只需要在客户端的,tnsnames.ora,中添加,FAILOVER_MODE,配置项。这个条目有,4,个子项目需要定义。,3.DELAY,和,RETRIES:,这,2,个参数分别代表重试间隔时间和重试次数。,配置示例:,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Server-Side TAF,Server-SideTAF,可以看作是,TAF,的一种变种,首先,Server-SideTAF,也是,TAF,,所有,TAF,的特点它都有,其次这种,TAF,是在服务器上配置的,而不像,TAF,是在客户端配置的。,Client-Side TAF,是在客户端修改,tnsnames.ora,文件来配置的,如果有很多客户端使用这个数据库,那么每次微小调整都需要把所有的计算机更改一遍,既低效又容易出错。而,Server-Side TAF,通过结合,Service,,在数据库里保存,FAIL_MODE,的配置,把所有的,TAF,配置保存在数据字典中,从而省去了客户端的配置工作,现在客户端的,TNS,文件就不需要任何,TAF,的配置选项了。,从配置参数而言,,Server-Side TAF,和,TAF,相比多了一个,Instance Role(,实例角色,),的概念。所谓的实例角色,就是当有多个,Instance,参与一个,Service,时,可以配置优先使用哪一个,Instance,为用户提供服务。,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Server-Side TAF,用户共有两种可选角色。,PREFERRED:,首选实例,会优先选择拥有这个角色的实例提供服务。,AVAILABLE:,后备实例,用户连接会优先连接,PREFFERRED,的,Instance,,当,PREFERRED,的,Instance,不可用时,才会被转到,AVAILBALE,的,Instance,上。,要使用,Server-Side TAF,必须配置,Service,。,Service,可以在创建数据库时创建,也可以在创建数据库之后修改,既可以使用,dbca,配置向导,也可以用命令行的 方式配置。,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Dbca,配置,TAF,:,4.7,、,Failover,4,、,Oracle RAC,的关键技术,Dbca,配置,TAF,:,4.7,、,Failover,4,、,Oracle RAC,的关键技术,LoadBalance,就是把负载平均的分配到集群中的各个节点,从而提高整体的吞吐能力。,Oracle 10g RAC,提供了两种不同的方法来分散负载:,1.,通过,Connection Balancing,,按照某种算法把用户分配到不同的节点。也可认为是纯技术的分散负载。,2.,通过,Service,,在应用层上进行分散,也可认为是面象业务的分散负载。,4.8,、,Loadbalance,4,、,Oracle RAC,的关键技术,一,Connection Balancing,Connection Balancing,这种负载均衡是在用户连接这个层次进行的,也就是在用户请求建立连接时,根据每个节点的负载决定把连接分配给哪个实例,而一旦连接建立之后,会话的所有操作就都在这个实例上完成,而不会再分派给其他节点了。,4.8,、,Loadbalance,4,、,Oracle RAC,的关键技术,一,Connection Balancing,1.1,客户端均衡(,Client-Side LB,),客户端均衡(,Client-Side LB,)是,Oracle 8,使用的方法,配置方法是在客户端的,tnsnames.ora,文件中加入:,LOAD_BALANCE=YES,条目。当客户端发起连接时,会从地址列表中随机的选取一个,在使用随即算法把连接请求分配到各个实例。,一个,Clint-Side LB,的,TNS,配置文件如下:,这种方法缺点很明显,因为在分配连接时没有考虑每个节点的真实负载,最后分配结果不一定是平衡的;并且随即算法需要长时间片,如果在短时间内同时发起多个连接,这些连接有可能都被分配到一个节点上,甚至更坏的情况下,连接可能被分配到故障节点上。因此,Oracle,引入了服务端均衡,(Sevice-Side LB),方式。,4.8,、,Loadbalance,4,、,Oracle RAC,的关键技术,一,Connection Balancing,1.2,服务器端均衡(,Server-Side LB,),Server-Side LB,是从,Oracle 9i,引入的。它的实现依赖于,Listener,收集负载信息。在数据库运行过程中,,PMON,后台进程会收集系统的负载信息,然后登记到,Listener,中。最少,1,分钟,最多,10,分钟,PMON,就要做一个信息更新,并且如果节点的负载越高,更新频率就越高,以保证,Listener,能掌握每个节点准确的负载情况。如果,Listener,关闭了,,PMON,进程会每隔,1,秒钟检查,Listener,是否重启。除了这个自动的,定时的更新任务外,用户也可以使用,alter system register,命令来手工进行这个过程。,这个自动更新动作,可以从,Listener,的日志中看到,比如下面这个,Listener,日志片段很清楚的记录了这些动作。注意,实例启动时,PMON,进程进行的第一次登记过程叫作,Service-register,,而后的更新过程叫作,service-update,。,4.8,、,Loadbalance,4,、,Oracle RAC,的关键技术,一,Connection Balancing,1.2,服务器端均衡(,Server-Side LB,),有了,PMON,的自动注册机制后,集群的每个节点的,Listener,都掌握所有节点的负载情况,当收到客户端连接请求时,就会把连接转给负载最小的节点,这个节点有可能是自己也有可能是其他节点,也就是,Listener,会转发用户的请求。,Listener,的节点选择方法根据用户所请求的连接方式会有所不同:,1).,如果用户请求的是,Delicate,专有连接,,Listener,首先选
展开阅读全文