OracleRAC主要支撑Oracle9i、10g、11g,12C版别,能够支撑24×7有用的数据库使用体系,在低本钱服务器上构建高可用性数据库体系,并且自由部署使用,无需修改代码。
在OracleRAC环境下,Oracle集成供给了集群软件和存储管理软件,为用户降低了使用本钱。当使用规划需求扩充时,用户能够按需扩展体系,以保证体系的性能。
(1)多节点负载均衡;
(2)供给高可用:故障容错和无缝切换功能,将硬件和软件过错造成的影响最小化;
(3)通过并行执行技术进步业务响应时间—-一般用于数据分析体系;
(4)通过横向扩展进步每秒交易数和连接数—-一般对于联机业务体系;
(5)节省硬件本钱,能够用多个廉价PC服务器替代贵重的小型机或大型机,一起节省相应维护本钱;
(6)可扩展性好,能够便利增加删除节点,扩展硬件资源。
oraclerac搭建原理详解
1、什么是cluster
一个cluster是由两个或多个独立的、经过网络衔接的servers组成的。集群的意图首要有两方面:进步可用性,在当时活动的node发生毛病时主动搬运到次节点node;供给分布式的衔接,进步工作的可扩展性。集群对外能够看做一个独自的server,像办理独自server相同办理cluster中的servers。简而言之一个Cluster便是一组独立的servers,共同协作,组成一个singlesystem。
2、什么是OraclerealApplicationCluster(RAC)
RAC是oracle的一个软件结构,将数据库files存放在物理或是逻辑上衔接每个节点的磁盘上。RAC软件办理着数据的拜访,更改操作在Instances之间是被彼此和谐的,以便于每个节点上活动的Instance都能够对files进行读写操作,而且每个Instance看到的信息和数据镜像都是一致的。经过RAC结构,能够取得冗余,即使在一个实例crash或是不行拜访时,运用程序也可经过其他Instance拜访Database。
3、为什么运用RAC
RAC能够高度利用规范的Cluster,下降模块servers本钱。
RAC主动的供给了服务的工作量办理。运用程序的服务能够被分组或分类,组成商业组件完结运用工作使命。RAC中的服务能够是持续的、不间断的Database操作,并为多Instances上的多个服务供给支撑。能够规划services到一个或多个Instance上运转,而且交替Instances能够用于备份Instances。假如主Instance失利,Oracle会将services从失利的Instance节点移动到活动的可替代的Instance上。Oracle也会主动的经过衔接进行数据装载的平衡。
RAC利用多个廉价的computers共同供给Database的服务,就像一个大的computer相同,服务于只需大规模SMP才能供给的各种运用。
RAC是根据同享磁盘结构的,在需求上能够添加或减缩,而不需求人为的在Cluster中进行数据的分隔。而且RAC能够简略的添加、移出Cluster中的servers
4、Clusters和可扩展性
运用RAC能够得到运用对称多处理(symmetricmultiprocessingSMP)机制能够对运用程序供给通明的服务同样效果。当一个节点发生失利,RAC能够扫除该DatabaseInstance和node自身,然后保证Database的完好。
a、可扩展性实例
答应更多并发的批处理
答应更大程度的并发履行
在OLTP体系中能够是衔接的用户大增
b、可扩展性的层次
hardware的可扩展性:彼此衔接性是它的要害,这一般依靠于较高的带宽和较低的延迟;
OS的可扩展性:在OS中,同步办法能够决议体系的可扩展性。在一些状况下,硬件的潜在可扩展性会由于OS无力并发坚持恳求的多个资源而被丢掉;
Database办理体系的可扩展性:在并发结构中的一个要害因素是并发是由内部影响的还是外部进程影响的。此问题的答案影响了同步的机制;
运用层次上的可扩展性:运用程序有必要被明确的规划为可扩展的。当体系中假如多数状况下,每个session都在更新相同的data,则或许发生瓶颈;
需求明确的是,假如任何一个层次没有达到可扩展性,不管其他层次可扩展性多强,并发的Cluster进程都或许失利。可扩展性不足的典型原因是同享资源的拜访。这使得并发的操作在此瓶颈上序列化履行。这不仅仅是RAC中的限制,而是一切结构中的限制性。
5、RAC结构及后台进程
RAC实例比一般实例多一些台进程,这些进程首要是用于办理大局资源,坚持Database在每个Instance中的一致性。
LMON:大局行列服务监控进程——GlobalEnqueueServiceMonitor
LMD0:大局行列服务看护进程——GlobalEnqueueServiceDaemon
LMSx:大局缓冲服务进程,x能够从0到j——GlobalCacheServiceProcesses
LCK0:锁进程——Lockprocess
DIAG:确诊进程——Diagnosibilityprocess
在Cluster层的ClusterReadyServices软件的首要进程,它们在一切渠道上供给规范的Cluster接口,并完结高可用性的操作。在每个Clusternode上都能够看到如下的进程:
CRSD和RACGIMON:用于高可用性操作的引擎。
OCSSD:供给成员节点和服务组的拜访
EVMD:事件检测进程,由oracle用户运转办理
OPROCD:Cluster的监控进程
办理Cluster中大局层次上的各种资源(ASMInstance、RACDatabase、Services和CRS运用节点)的东西,首要有ServerControl(SRVCTL)、DBCA和EnterpriseManager。
6、RAC软件存储原理
Oracle10g的RAC装置分为两个阶段。装置CRS和装置带有RAC组件的Database软件,并创立Cluster数据库。CRS软件运用的Oraclehome有必要不同于RAC软件运用的home。votingfile和OCRfile是不能被存储在ASM中的,由于它们有必要在任何OracleInstance发动前就能够被拜访。且有必要存储在同享的存储设备中。
votingfile:其本质上是用于ClustersynchronizationServices看护进程进行节点信息的监控。巨细约为20MB;
OracleClusterRegistry(OCR)文件:也是CRS要害的组成部分。用于保护在Cluster中高可用性组件的信息。例如,Cluster节点列表,Cluster数据库Instance到节点的映射和CRS运用资源的列表(如Services、虚拟内部链接协议地址等)。此文件是经过SRVCTL类似的办理东西主动保护的。其巨细约100MB。
7、OCR的结构
Cluster的配置信息是在OCR中保护的。OCR依靠分布式的同享缓存结构用于优化关于Cluster知识库的查询。在Cluster中的每个节点都经过OCR进程拜访OCR缓存在其内存中保护着一个副本。事实上在Cluster中,只需一个OCR进程对同享存储中的OCR进行读写操作。此进程负责改写(refresh)其自己具有的本地缓存以及Cluster中其他节点的OCRcache。关于涉及到Cluster知识库的拜访,OCR客户端直接拜访本地OCR进程。当客户端需求更新OCR时,它们将经过本地OCR进程与那个扮演读写OCR文件的进程进行交互。
OCR客户端运用有:Oracle通用装置器(OUI)、SRVCTL、企业办理器(EM)、DBCA、DBUA、NetCA和虚拟网络协议助理(VIPCA)。此外,OCR保护办理着CRS内部中定义的各种运用程序的资源的依靠和状况信息,特别是Database、Instance、Services和节点的运用程序。
配置文件的姓名是ocr.loc,而且配置文件变量是ocrconfig_loc。Cluster知识库的位置是不受限于裸设备的。能够将OCR放置在由Clusterfilesystem办理的同享存储设备上。
note:OCR也可用于在ASM的单Instance中作为配置文件,每个节点有一个OCR。
8、RACDatabase存储原理
与single-InstanceOracle的存储办法最首要的不同之处在于RAC存储有必要将一切RAC中数据文件存放在同享设备中(裸设备或是Cluster文件体系)以便于拜访相同Database的Instance能够同享。有必要为每个Instance创立至少两个redolog组,而且一切的redolog组有必要也存储在同享设备中,然后为了crash康复的意图。每个Instance的在线redologgroups被称作一个Instance的在线redo线程。
此外,有必要为每个Instance创立一个同享的undo表空间用于Oracle引荐的undo主动办理特点。每个undo表空间有必要是对一切Instance同享的,首要用于康复的意图。
归档日志不能被存放在裸设备上,由于其命名是主动发生的,而且每个是不一致的。因而需求存储在一个文件体系中。假如运用Clusterfilesystem(CFS),则能够在任何时刻在任何node上拜访这些归档文件。假如没有运用CFS,就不得不使其他Cluster成员在康复时那些归档日志是可用的,例如经过网络文件体系(NFS)来完结。假如运用引荐的flashrecoveryarea特性,则其有必要被存储在同享目录下,以便于一切的Instance能够拜访。(同享目录能够是一个ASM磁盘组,或是一个CFS)。
9、RAC和同享存储技能
存储是网格技能中的要害组成部分。传统上,存储都直接依靠在每个Server(directlyattachedtoeachindividualServerDAS)上。在曩昔的几年来,更灵活的存储呈现并得到运用,首要是经过存储空间网络或是正规的以太网来完结拜访。这些新的存储办法使得多个Servers拜访相同的磁盘调集成为或许,在分布式环境中,能够取得简略的存取。
storageareanetwork(SAN)代表了数据存储技能在这一点的演进。传统上,C/S体系中,数据被存储在Server内部或是依靠它的设备中。随后,进入了networkattachedstorage(NAS)阶段,这使得存储设备与Server和直接衔接它们的网络向分离。它在SAN遵从的准则进一步答应存储设备存在于各自的网络中,并直接经过高速的媒介进行交流。用户能够经过Server体系对存储设备的数据进行拜访,Server体系与本地网络(LAN)和SAN彼此衔接。
文件体系的挑选是RAC的要害。传统的文件体系不支撑多体系的并行挂载。因而,有必要将文件存储在没有任何文件体系的裸卷标或是支撑多体系并发拜访的文件体系中。因而,三个首要的办法用于RAC的同享存储有:
裸卷标:既是一些直接附加的裸设备,需求用于存储,并以block形式进程操作。
Clusterfilesystem:也需求以block形式进程存取。一个或多个Clusterfile体系能够被用于存储一切的RAC文件。
主动存储办理(ASM):关于OracleDatabasefiles,ASM是一个简便的、专用的、最佳化的Clusterfilesystem。
10、OracleClusterfilesystem
OracleClusterfilesystem(OCFS)是一个同享文件体系,专门为OracleRAC规划。OCFS扫除了OracleDatabasefiles被衔接到逻辑磁盘上的需求,并使得一切的节点同享一个ORACLEHome,而不需每个node在本地有一个副本。OCFS卷标能够横跨一个或多同享disks,用于冗余和性能的增强。OracleClusterfilesystem对开发人员和用户时免费的。可从官方网站下载。
可放入OCFS中的文件类表:
Oraclesoftware的装置文件:在10g中,此设置只在windows2000中支撑。说是后面的版别会供给在Linux中的支撑,但我还没详细看。
Oracle文件(操控文件、数据文件、redologs文件,bfiles等)
同享配置文件(spfile)
在Oracle运转期间,由Oracle创立的文件。
voting和OCR文件
11、主动存储办理(ASM)
是10g的新特性。它供给了一个纵向的统一办理的文件体系和卷标办理器,专门用于树立OracleDatabase文件。ASM能够供给单个SMP机器的办理或是贯穿多个OracleRAC的Cluster节点。
ASM无需再手动调节I/O,会主动的分配I/O负载到一切的可用资源中,然后优化性能。经过答应添加Database巨细而不需shutdown数据库来调节存储分配,来辅助DBA办理动态数据库环境。
ASM能够保护数据的冗余备份,然后进步毛病的容错。它也能够被装置到可靠的存储机制中。
12、挑选RAW或CFS
CFS的优点:关于RAC的装置和办理十分简略;对RAC运用Oraclemanagedfiles(OMF);singleOracle软件装置;在Oracledatafiles上能够主动扩展;当物理节点失利时,对归档日志的统一拜访。
裸设备的运用:一般会用于CFS不行用或是不被Oracle支撑的状况下;它供给了最好的性能,不需求在Oracle和磁盘之间的中间层;假如空间被耗尽,裸设备上的主动扩展将失利;ASM、逻辑存储办理器或是逻辑卷标办理器能够简化裸设备的工作,它们也答应加载空间到在线的裸设备上,可为裸设备创立姓名,然后便于办理。
13、RAC的典型Cluster栈
在Cluster中的每个节点都需求一个被支撑的彼此衔接的软件协议来支撑内部Instance的交互,一起需求TCP/IP支撑CRS的轮询。一切的UNIX渠道在千兆以太网上运用userdatagramprotocol(UDP)作为首要的协议并进行RAC内部Instance的IPC交互。其他支撑的特有协议包括用于SCI和Sunfire的衔接交互的远程同享内存协议和超文本协议,用于超光纤交互。在任何状况下,交互有必要能被渠道的Oracle所辨识。
运用Oracleclusterware,能够下降装置并支撑并发症。但假如用户运用非以太交互,或开发了依靠clusterware的运用程序在RAC上,或许需求vendorclusterware。
同交互衔接相同,同享存储计划有必要被当时渠道的Oracle所辨识。假如在方针渠道上,CFS可用,Databasearea和flashrecoveryarea都能够被创立到CFS或ASM上。假如在方针渠道上,CFS不行用,则Databasearea能够创立在ASM或是裸设备上(需求卷标办理器)而且flashrecoveryarea有必要被创立在ASM中。
14、RACcertificationMatrix
它规划用于处理任何认证问题。能够运用matrix答复任何RAC相关的认证问题。详细运用过程如下:
衔接并登陆http://metalink.oracle.com
点击菜单栏的“certifyandavailability”按钮
点击“viewcertificationsbyproduct”衔接
挑选RAC
挑选正确的渠道
15、必要的大局资源
一个single-Instance环境,锁坐标通向一个同享的资源就像表中的一行。lock避免了两个进程一起修正相同的资源。
在RAC环境中,内部节点的同步是要害,由于它坚持着不同节点中各自进程的一致性,避免其在一起修正相同的资源数据。内部节点的同步保证每个Instance看到buffercache中block的最近的版别。下图中显现了当不存在加锁的状况。
a、大局资源的和谐
cluster操作要求在一切Instance中对操控同享资源的拜访进行同步。RAC运用GlobalResourceDirectory来记录clusterDatabase中资源的运用信息。GlobalCacheService(GCS)和GlobalEnqueueService(GES)办理GRD中的信息。
每个Instance在其本地的SGA中保护GRD的一部分。GCS和GES指定一个Instance办理特殊资源的一切信息,它被称为资源的master。每个Instance都知道resource的Instancemasters。
保护RAC的活动中的cache的依靠性(cachecoherency)是十分重要的。所谓cachecoherency是坚持在不同OracleInstances中的多个block版其他一致性的技能。GCS经过所谓的cache交融算法来完结cachecoherency。
GES办理一切非cache交融算法的内部Instance资源操作和Oracle入队机制的状况轨道。GES首要的操控的资源是字典cachelocks和librarycachelocks。一起,它还对一切死锁灵敏的行列和资源起到死锁检测的效果。
b、Globalcachecoordination实例
假设某datablock被第一个节点修正,成为脏数据。而且在clusterwide中,只需一个blockcopy版别,其内容用SCN号代替了。则详细的过程如下:
第二个Instance视图修正该block,向GCS提出恳求。
GCS向block的holder(持有者)提交恳求。在此,第一个Instance便是holder。
第一个Instance接到消息,并将block发送给第二个Instance。第一个Instance保存脏buffer用于康复的意图。block的脏镜像被称作block的pastimage。一个pastimageblock将不能进一步被改动。
收到block后,第二个Instance通知GCS,奉告现已holds该block。
c、writetodiskcoordination:实例
在cluster结构中的Instances中的caches中,或许存在同一个block的不同的修正版别。由GCS办理的写协议保证了只需最近一个版别被写入磁盘中。它一起需求保证其他之前的版别从其他cache中被清洗。一个写磁盘的恳求能够从恣意一个Instance上建议,不管它是保存了block的当时版别还是曩昔的版别。假设第一个Instancehold曩昔的block镜像,恳求Oracle将buffer写入磁盘,如上图,过程如下:
第一个Instance发送一个写恳求给GCS
GCS将恳求转给第二个Instance,当时该block的holder
第二个Instance接到写恳求后将block写入磁盘
第二个Instance通知GCS,奉告其写操作完结
当接到GCS接到通知后,GCS命令一切的曩昔的镜像的holders删除其曩昔的镜像。此镜像将不会在因康复而需求。
16、RAC和Instance/crashrecovery
a、当一个Instance失利,当该失利被其他Instance检测到,第二个Instance将会履行下面的康复操作:
在康复的第一阶段,GES从头灌入行列
GCS也从头灌入其资源。GCS进程只从头灌入那些失掉其操控的资源。在这期间,一切的GCS资源恳求和写恳求都暂时被挂起。但是,业务能够继续修正datablocks,只需这些业务现已取得了必要的资源。
当行列被从头配置后,一个活动的Instance能够取得占有该Instance康复行列。因而,当GCS资源被从头灌入的一起,SMON确认需求被康复的blocks的调集。这个调集被称作康复集。由于,运用cache交融算法,一个Instance传送这些blocks的内容到恳求的Instance,而不需求将这些blocks写入磁盘。这些blocks在磁盘上的版别或许不包括其他Instance进程的data的修正操作的blocks。这意味着SMON需求兼并一切失利的Instance的redologs来确认康复集。这是由于一个失利的线程或许导致一个在redo中的hole(洞)需求用指定的block填补。所以失利的Instance的redo线程不能被连续的运用。一起,活动的Instances的redo线程不需康复,由于SMON能够运用曩昔和当时的通讯缓冲的镜像。
用于康复的缓冲空间被分配,而且那些之前读取redologs被辨识的资源被声明为康复资源。这避免了其他Instance拜访这些资源。
一切在随后的康复操作中需求的资源被取得,而且GRD当时是不冻结的。任何不需康复的datablock现在能够被拜访。所以当时体系是部分可用的。此时,假设有曩昔或当时的blocks镜像需求被康复,而其在clusterDatabase中的其他caches中,关于这些特殊的blocks,最近的镜像是开端康复点。假如关于要康复的block,曩昔镜像和当时镜像缓冲都不在活动的Instance的caches中,则SMON将写入一个log,表明兼并失利。SMON会对第三步中辨识的每个block进行康复和写入,在康复之后会马上释放资源,然后使更多的资源在康复时能够被运用。
当一切的block被康复,占用的康复资源被释放,则体系再次可用。
在康复中,log兼并的开支和失利的Instances的数目是成比例的,而且与每个Instance的redologs的巨细有关。
b、Instancerecovery和Databaseavailability
下图显现了在进行Instance康复时,每一步履行时数据库的可用程度:
RAC运转在多节点上
有节点失利被检测到
GRD的行列部分被从头设置;资源办理被从头分配到活动的nodes。此操作的履行比较快
GRD的缓冲部分被从头设置,SMON读取失利Instance的redologs辨识那些需求康复的blocks的调集
SMON向GRD建议恳求,取得一切在需求康复的blocks调集中的Databaseblocks。当恳求结束,一切的其他的blocks都可被拜访了
Oracle履行滚动的向前康复。失利线程的redologs被运用到Database,而且那些被完全康复的blocks将马上能够被拜访
Oracle履行滚回康复。关于没有提交的业务,undoblocks被运用到Database中
Instance的康复完结,一切的data能够被拜访
17、有用的内部节点行级锁
Oracle支撑有用的行级锁。这些行级锁首要是在DML操作时被创立,例如UPDATE。这些锁被持有,直到业务被提交或回滚。任何恳求相同行的lock的进程都将被挂起。
cache交融算法的块传输独立于这些user可见的行级锁。GCS对blocks的传输是一个底层的操作,无需当代行级锁被释放就开端进行。blocks或许被从一个Instance传输到其他其他Instances,一起该blocks或许被加锁。
GCS供给对datablocks的拜访,答应多个业务的并发进行。
18、RAC的额定的内存需求
RAC特有的内存多数是在SGA创立时从sharedpool中分配的。由于blocks或许跨过Instances被缓冲,有必要要求更大的缓冲区。因而,当将singleInstance的Database迁移到RAC中时,坚持每个Instance的恳求工作量都能与single-instance时的状况相同,则需求对运转RAC的Instance增大10%的buffercache和15%的sharedpool。这些值仅仅根据RAC巨细的经历,一个初始的测验值。一般会大于此值。
假如正在运用引荐的主动内存办理特性,能够经过修正SGA_TARGET初始参数来设置。但考虑到同样数量的user拜访被分散到多个nodes中,每个Instance的内存需求能够被下降。
实际资源的运用能够经过查询每个Instance中的GCS和GES实体中的视图V$RESOURCE_LIMIT视图CURRENT_UTILIZATION和MAX_UTILIZATION字段,详细句子为:
SELECTresource_name,current_utilization,max_utilizationFROMv$resource_limitWHEREresource_namelike‘g%s_%’;
19、RAC与并发履行
Oracle的优化器是根据履行拜访价值的,这就考虑了并发履行的价值,并将其作为取得理想的履行计划的一个部件。
在RAC环境中,优化器的并发挑选是由内部节点和外部节点并发两类组成的。例如,一个特殊的查询恳求需求六个查询进程完结,而且在本地节点有六个并发的隶属履行进程都是idle的,则查询经过运用本地资源履行,然后取得成果。这论述了有用地内部节点并发,也无需多节点并发的查询和谐的开支。假如本地节点中只需两个并发履行隶属进程可用,则这两个进程和其他节点的四个进程共同履行查询。在这种状况下,内部节点和外部节点并发都被运用到,然后加速查询。
在实在环境的决策支撑运用程序中,查询不能经过各种查询servers得到较好的区分。所以有些并发履行servers完结其使命后先于其他servers变为idle状况。Oracle并发履行技能动态监测idle的进程,并将超载进程的行列表中的使命分配使命给处于idle状况的进程。这样,Oracle有用的再分配了一切进程的查询工作量。RAC进一步扩展这个效率到整个cluster上。
20、大局动态性能视图
大局动态性能视图显现一切敞开并拜访RACDatabase的Instances相关的信息。而规范动态性能视图只显现了本地Instance的相关信息。
关于一切V$类型的视图,都会对应一个GV$视图,除了几个其他特殊状况。除了V$视图中的columns,GV$视图中包括了一个名为INST_ID的额定的column,显现了RAC中的Instancenumber。能够在任何敞开的Instance上拜访GV$。
为了查询GV$视图,每个Instance上的初始PARALLEL_MAX_SERVERS初始化参数至少设置为1。这是由于对GV$的查询运用了特殊的并发履行。并发履行的和谐者运转在客户端衔接的Instance上,而且每个Instance上分配一个slave用于查询其潜在的V$视图。假如有一个Instance上的PARALLEL_MAX_SERVERS被设置为0,则无法取得该node的信息,同理,假如一切的并发servers十分忙,则也无法取得成果。在以上两种状况下,不会取得提示或错误信息。
21、RAC和Service
22、虚拟IP地址和RAC
当一个node完全失利,虚拟IP地址(VIP)是关于一切有用运用的。当一个节点失利,其相关的VIP主动的分派到cluster中的其他node上。当这种状况呈现时:
crs在别的一个node的网卡的MAC地址上绑定这个ip,对用户来说是通明的。关于直接衔接的客户端,会显现errors。
随后发往VIP的数据包都将转向新的节点,它将给客户端发送errorRST返回包。然后使客户端快速的取得errors信息,进行对其他节点的衔接重试。
假如不运用VIP,则一个node失利后,发往该节点的衔接将等待10分钟的TCP过期时刻。