51CTO下载-Oracle_RAC学习笔记基本概念及入门.doc_第1页
51CTO下载-Oracle_RAC学习笔记基本概念及入门.doc_第2页
51CTO下载-Oracle_RAC学习笔记基本概念及入门.doc_第3页
51CTO下载-Oracle_RAC学习笔记基本概念及入门.doc_第4页
51CTO下载-Oracle_RAC学习笔记基本概念及入门.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle RAC学习笔记:基本概念及入门oracle 10g real application clusters introduction4nJye6j0 W)%2dmE /:WPF 1、什么是cluster|kn m?q-e8q Af9B* 一个cluster是由两个或是多个独立的、通过网络连接的servers组成的。几个硬件供应商多年以来提供了Cluster性能的各种需求。一些Clusters仅仅为了提供高可用性的,在当前活动的node发生故障时转移到次节点node。另一些是为了提供分布式的连接、工作的可扩展性。另一个Cluster的共同特点是,对于一个应用程序,它可以看做是一个单独的server。同样,管理几个servers应该尽可能像管理一个server一样简单。Cluster管理器软件提供了这种功能。Wmm%)Og Cf,vHKf X ,pLwr 如果是single server的nodes,文件必须存储在其各自node能访问的位置。存在有几个不同拓扑结构来解决数据访问的问题,这主要依赖于Cluster设计的主要目标。*E- m)_h?*: uz+4 相互连接时一个物理的网络连接,作为每个Cluster节点直接的交互通信。sN;& uh6bB RAC是一个软件可以使你通过运行多个依赖相同Database的Instance,使用Cluster硬件。数据库files被存放在物理或是逻辑上连接每个节点的磁盘上。以便于每个活动的Instance都可以对files进行读写操作。pZQ H*N16z Tzq$/ RAC软件管理着数据的访问。所以更改操作在Instances之间是被相互协调的,并且每个Instance看到的信息和数据镜像都是一致的。-?sCK+Q2 seTye 通过RAC结构,可以获得冗余,从而使得即使在一个系统crash或是不可访问时,应用程序也可通过其他Instance访问Database。1 Xpi t N38 m?.vaRb 3、为啥使用RACshEU%xbw 7B)h- W !VjVS RAC可以高度利用标准的Cluster,降低模块servers成本。:D*HPLOb- pf/87)+1 |sMXfX|B RAC自动的提供了服务的工作量管理。应用程序的服务可以被分组或分类,组成商业组件完成应用工作任务。RAC中的服务可以是持续的、不间断的Database操作,并为多Instance上的多个服务提供支持。可以设计services到一个或多个Instance上运行,并且交替Instances可以用于备份Instances。如果主Instance失败,Oracle会将services从失败的Instance节点移动到活动的可替代的Instance上。Oracle也会自动的通过连接进行数据装载的平衡。y$.V 3O y7fhBUm Y yyq+m RAC利用多个廉价的computers共同提供Database的服务,就像一个大的computer一样,服务于只有大规模SMP才能提供的各种应用。0%Itqt XF9WPA! Qj GkScR* RAC是基于共享磁盘结构的,在需求上可以增加或缩减,而不需要人为的在Cluster中进行数据的分隔。并且RAC可以简单的增加、移出Cluster中的servers。qv0oF! H3YflcoU Jllf5 jUiZ7E5H 如果使用对称多处理(symmetric multiprocessing SMP)机制能够对应用程序提供透明的服务,则应该使用RAC也可以得到同样的效果,而不需要进行应用程序代码的任何改动。?cv*uh Ikw40V)5 joq4#s 当一个节点发生失败,RAC可以排除该Database Instance和node本身,从而保证Database的完整。h kA6 0B.bNxpL ;m1kbW 下面是一些可扩展性的例子:/ % (v EUp7K+ I8C.Jq+_ 允许更多并发的批处理。zgP|7.! /OZfz gA3 d,x aeCH$/s! Wlhnt bB 应用层次上的可扩展性:应用程序必须被明确的设计为可扩展的。当系统中如果多数情况下,每个session都在更新相同的data,则可能产生瓶颈。这不仅是指RAC,对于single-instance系统也是一样。+hZnpj?B 46 ip$8F v+ S *q 需要明确的是,如果任何一个层次没有达到可扩展性,不管其他层次可扩展性多强,并发的Cluster进程都可能失败。可扩展性不足的典型原因是共享资源的访问。这使得并发的操作在此瓶颈上序列化执行。这不仅仅是RAC中的局限,而是所有结构中的局限性。B?x1p%P ;!p Skg:yB 8Hv|D=Z 2)scaleup和speedup_+-ohk CnT3jz2x$S =OB|U.L VV(F |a ox/ S scaleup是工作量和资源都成比例增加时能维持相同性能水平的能力(相应时间)7;.W,d t|;-,SI jzC,4| 8 Scaleup=(volume parallel)/(volume original)time for ipcl;?JC?)_ c4)mT(t &)qxqH1Y(SKGP Y $,W4 pU_(OWO6F tdEhsW zbnjS/ uXXIZGIfwu 在一个RAC Instance中,会见到一些普通Instance中不存在的后台进程,它们主要是用于维持Database在每个Instance中的一致性。管理全局资源,具体如下:?.-Mv!d N;ww 3=8wB# W LMON:全局队列服务监控进程Global Enqueue Service Monitorr/)li sV LMD0:全局队列服务守护进程Global Enqueue Service DaemonN!)#Qh4 LMSx:全局缓冲服务进程,x可以从0到jGlobal Cache Service ProcessesK 4zBvP LCK0:锁进程Lock process%iHxY6a+d DIAG:诊断进程Diagnosibility process+.pMQ0?c a=NgLMk $zICk1B 在Cluster层,可以找到Cluster Ready Services软件的主要进程,它们在所有平台上提供标准的Cluster接口,并实现高可用性的操作。在每个Cluster node上都可以看到如下的进程:l5l2#efpe C&j*:m !o3u CRSD和RACGIMON:用于高可用性操作的引擎。xe8So OCSSD:提供成员节点和服务组的访问U( 4D,3Q EVMD:事件检测进程,由oracle用户运行管理GuF(mW/ a sonLR ILZ?ot&5 3gmY&yX& Oracle10g的RAC安装分为两个阶段。第一阶段是安装CRS,其次是安装带有RAC组件的Database软件并创建Cluster数据库。CRS软件使用的Oracle home必须不同于RAC软件使用的home。尽管可以将Cluster中CRS和RAC软件通过使用Cluster文件系统共享存储,但是软件总是按一定规则安装在每个节点的本地文件系统中。这支持在线补丁的升级,并消除了单节点软件造成的失败。另外有两个必须存储在共享的存储设备中:XwQM$F At7t| JIcUp7 voting file:其本质上是用于Cluster synchronization Services守护进程进行节点信息的监控。大小约为20MB。F=|e00Pp #uL)q4 Cg6Y f Oracle Cluster Registry(OCR)文件:也是CRS关键的组成部分。用于维护在Cluster中高可用性组件的信息。例如,Cluster节点列表,Cluster数据库Instance到节点的映射和CRS应用资源的列表(如Services、虚拟内部链接协议地址等)。此文件是通过SRVCTL类似的管理工具自动维护的。其大小约100MB。jQ=o H_8E d oP,Dg# voting file和OCR file是不能被存储在ASM中的,因为它们必须在任何Oracle Instance启动前就可以被访问。并且,两者必须是在冗余的、可靠的存储设备中存放,如RAID。推荐最好的做法是将这些文件放在裸磁盘上。kea&B= PFB| C *0oE5n+va 3、OCR的结构2Mso+f T5 ;8bi yT_+!h b|Es_R ; =t08: Cluster的配置信息是在OCR中维护的。OCR依赖分布式的共享缓存结构用于优化关于Cluster知识库的查询。在Cluster中的每个节点都通过OCR进程访问OCR缓存在其内存中维护着一个副本。事实上在Cluster中,只有一个OCR进程对共享存储中的OCR进行读写操作。此进程负责刷新(refresh)其自己拥有的本地缓存以及Cluster中其他节点的OCR cache。对于涉及到Cluster知识库的访问,OCR客户端直接访问本地OCR进程。当客户端需要更新OCR时,它们将通过本地OCR进程与那个扮演读写OCR文件的进程进行交互。lsPqZ qtJ_ -+v 1rdUPT OCR客户端应用有:Oracle通用安装器(OUI)、SRVCTL、企业管理器(EM)、DBCA、DBUA、NetCA和虚拟网络协议助理(VIPCA)。此外,OCR维护管理着CRS内部中定义的各种应用程序的资源的依赖和状态信息,特别是Database、Instance、Services和节点的应用程序。qcd YY %oZElZM :s9&#ac 配置文件的名字是ocr.loc,并且配置文件变量是ocrconfig_loc。Cluster 知识库的位置是不受限于裸设备的。可以将OCR放置在由Cluster file system管理的共享存储设备上。c %vp Mg0.M$q9 zX7c9tt note:OCR也可用于在ASM的单Instance中作为配置文件,每个节点有一个OCR。%u K/j9 5l%62uXK WW- slOipvy 4、RAC Database存储原理7AfDBe(F 1?ek$X )cZ1I) U;%4|= Sqi97$ 与single-Instance Oracle的存储方式最主要的不同之处在于RAC存储必须将所有RAC中数据文件存放在共享设备中(裸设备或是Cluster文件系统)以便于访问相同Database的Instance能够共享。必须为每个Instance创建至少两个redo log组,并且所有的redo log组必须也存储在共享设备中,从而为了crash恢复的目的。每个Instance的在线redo log groups被称作一个Instance的在线redo 线程。ZO=kO 6 Fv,f) hZXx;+ 此外,必须为每个Instance创建一个共享的undo表空间用于Oracle推荐的undo自动管理特点。每个undo表空间必须是对所有Instance共享的,主要用于恢复的目的。uo&b .Z Y|EW =*= N 归档日志不能被存放在裸设备上,因为其命名是自动产生的,并且每个是不一致的。因此需要存储在一个文件系统中。如果使用Cluster file system(CFS),则可以在任何时间在任何node上访问这些归档文件。如果没有使用CFS,就不得不使其他Cluster成员在恢复时那些归档日志是可用的,例如通过网络文件系统(NFS)来实现。如果使用推荐的flash recovery area特性,则其必须被存储在共享目录下,以便于所有的Instance能够访问。(共享目录可以是一个ASM磁盘组,或是一个CFS)。PsGtn #D1NY54M 8h*RO !h 5、RAC和共享存储技术OY&J%K %kY4w&d l;|rFA. 存储是网格技术中的关键组成部分。传统上,存储都直接依附在每个Server(directly attached to each individual Server DAS)上。在过去的几年来,更灵活的存储出现并得到应用,主要是通过存储空间网络或是正规的以太网来实现访问。这些新的存储方式使得多个Servers访问相同的磁盘集合成为可能,在分布式环境中,可以获得简单的存取。zr =!+ tT14rw,( 因此,三个主要的方法用于RAC的共享存储有:d8/V5 F.P+eU_ e$tc:dlL 裸卷标:既是一些直接附加的裸设备,需要用于存储,并以block模式进程操作。O 9s( n 7 isk ? xD#o.Zfe. 自动存储管理(ASM):对于Oracle Database files,ASM是一个轻便的、专用的、最佳化的Cluster file system。-O;.l! 9c$ /dV 1UombS- 6、Oracle Cluster file systemac/ wdSC E9;rdpL+ F%pGX Oracle Cluster file system(OCFS)是一个共享文件系统,专门为Oracle RAC设计。OCFS排除了Oracle Database files被连接到逻辑磁盘上的需要,并使得所有的节点共享一个ORACLE Home,而不需每个node在本地有一个副本。OCFS卷标可以横跨一个或多共享disks,用于冗余和性能的增强。D) pllX 9fU/; 3GXV 下面时可放入OCFS中的文件类表:WgSv teI E* Oracle software的安装文件:在10g中,此设置只在windows 2000中支持。说是后面的版本会提供在Linux中的支持,但我还没具体看。XpU1zZ RwV_w H $/ q8Nh Oracle 文件(控制文件、数据文件、redo logs文件,bfiles等)LC1; Uo dt#a7 lF0Gw3T 共享配置文件(spfile),!n*5 onhlnD2 CN)30j; 在Oracle运行期间,由Oracle创建的文件。cdx+? R v9& iBjb.: voting和OCR文件zZ7vXa8c $9oVw=; )d3M- Oracle Cluster file system对开发人员和用户时免费的。可从官方网站下载。CsuQ#aC Cw Qf? K;.:Pfm 7、自动存储管理(ASM)XL6)jq_ 6D (.U ASM无需再手动调节I/O,会自动的分配 I/O 负载到所有的可用资源中,从而优化性能。通过允许增加Database大小而不需shutdown数据库来调节存储分配,来辅助DBA管理动态数据库环境。zY w+W=O (Ed#b&A CGA|.1Z6u ASM可以维护数据的冗余备份,从而提高故障的容错。它也可以被安装到可靠的存储机制中。A+mi_E.7 a!R:R E 2E5(h 8、选择RAW或CFSGdSYuH Yu3_!|r 4$O/*# CFS的优点:对于RAC的安装和管理非常简单;对RAC使用Oracle managed files(OMF);single Oracle软件安装;在Oracle data files上可以自动扩展;当物理节点失败时,对归档日志的统一访问。Nu51 dS_zr:D SsHH! 裸设备的使用:一般会用于CFS不可用或是不被Oracle支持的情况下;它提供了最好的性能,不需要在Oracle和磁盘之间的中间层;如果空间被耗尽,裸设备上的自动扩展将失败;ASM、逻辑存储管理器或是逻辑卷标管理其可以简化裸设备的工作,它们也允许加载空间到在线的裸设备上,可为裸设备创建名字,从而便于管理。ry1Xe,Bvx W)* |,rL3A5 Us7c?( 73IAn x_ Np+ j+Z1I#v Cet kB J hVKZ9 u iZ HzB Xhbw bktG 9、RAC的典型Cluster栈c5I/ TvXH&Mf OYIg K liG W)| F1kLS_ mEzU?pr B5 yrcO 在Cluster中的每个节点都需要一个被支持的相互连接的软件协议来支持内部Instance的交互,同时需要TCP/IP支持CRS的轮询。所有的UNIX平台在千兆以太网上使用user datagram protocol(UDP)作为主要的协议并进行RAC内部Instance 的IPC交互。其他支持的特有协议包括用于SCI和Sunfire的连接交互的远程共享内存协议和超文本协议,用于超光纤交互。在任何情况下,交互必须能被平台的Oracle所辨识。bq-eFS ,5G/op 0FK!cO0 使用Oracle clusterware,可以降低安装并支持并发症。但如果用户使用非以太交互,或开发了依赖clusterware的应用程序在RAC上,可能需要vendor clusterware。E+J%OiT(;NEqQ/ MwEW0) 10、RAC certification Matrix:它设计用于处理任何认证问题。可以使用matrix回答任何RAC相关的认证问题。具体使用步骤如下:W+KDw( p#96 *v|_y_5, 连接并登陆 40Dd/ju 点击菜单栏的“certify and availability”按钮Si8vy- 点击“view certifications by product”连接:)vV_fkW 选择RACZR f 选择正确的平台OoPVY2P, :T2WXj GES管理所有非cache 融合算法的内部Instance资源操作和Oracle入队机制的状态轨迹。GES主要的控制的资源是字典cache locks和library cache locks。同时,它还对所有死锁敏感的队列和资源起到死锁检测的作用。n0a$V.a p0=OR$ $Kmm |L(jlt; qsuU|1=*8 假设某data block被第一个节点修改,成为脏数据。并且在clusterwide中,只有一个block copy版本,其内容用SCN号代替了。则具体的步骤如下:80la!j-6 5$CI: RP%z 88 第二个Instance视图修改该block,向GCS提出请求。)RJQplujH pJ/cHvk m4T-M bNQ 3)write to disk coordination:example;D .N ZrFB&ta, uoS uJ5 eCX%su yEXahiX u170,A 在cluster结构中的Instances中的caches中,可能存在同一个block的不同的修改版本。由GCS管理的写协议确保了只有最近一个版本被写入磁盘中。它同时需要确保其他之前的版本从其他cache中被清洗。一个写磁盘的请求可以从任意一个Instance上发起,无论它是保存了block的当前版本还是过去的版本。假设第一个Instance hold过去的block镜像,请求Oracle将buffer写入磁盘,如上图,过程如下::.xu7J= 4Myk2dn PKc A. 第一个Instance发送一个写请求给GCSSBcTe3z y)Oh2s! 2; Hfn_ GCS将请求转给第二个Instance,当前该block的holderjGbX+$ HfjZeSh cCGfy_ : 第二个Instance接到写请求后将block写入磁盘&3?mv, v Qh_ N f3BI-% 第二个Instance通知GCS,告知其写操作完成Oh 3Kc, Wv1=sZ#VDt| Piz VTcm!/ 12、RAC和Instance/crash recovery1Td$_6d)% RR-8p9QU r$hg!P0 1)当一个Instance失败,当该失败被其他Instance检测到,第二个Instance将会执行下面的恢复操作:w84i?N 3mP =Z7nlC t=p&t 在恢复的第一阶段,GES重新灌入队列3F?# %loS2 VquR S GCS也重新灌入其资源。GCS进程只重新灌入那些失去其控制的资源。在这期间,所有的GCS资源请求和写请求都临时被挂起。然而,事务可以继续修改data blocks,只要这些事务已经获得了必要的资源。u*YbXJ6 RC4F w _ tk;b=L 当队列被重新配置后,一个活动的Instance可以获得占有该Instance恢复队列。因此,当GCS资源被重新灌入的同时,SMON确定需要被恢复的blocks的集合。这个集合被称作恢复集。因为,使用cache 融合算法,一个Instance传送这些blocks的内容到请求的Instance,而不需要将这些blocks写入磁盘。这些blocks在磁盘上的版本可能不包含其他Instance进程的data的修改操作的blocks。这意味着SMON需要合并所有失败的Instance的redo logs来确定恢复集。这是因为一个失败的线程可能导致一个在redo 中的hole(洞)需要用指定的block填补。所以失败的Instance的redo 线程不能被连续的应用。同时,活动的Instances的redo 线程不需恢复,因为SMON可以使用过去和当前的通信缓冲的镜像。4S44aCX QU#7v EXu Oo| r 用于恢复的缓冲空间被分配,并且那些之前读取redo logs被辨识的资源被声明为恢复资源。这避免了其他Instance访问这些资源。|O4X&3/ 6QnAC; /rM w=n-l 所有在随后的恢复操作中需要的资源被获得,并且GRD当前是不冻结的。任何不需恢复的data block现在可以被访问。所以当前系统时部分可用的。此时,假设有过去或当前的blocks镜像需要被恢复,而其在cluster Database中的其他caches中,对于这些特殊的blocks,最近的镜像是开始恢复点。如果对于要恢复的block,过去镜像和当前镜像缓冲都不在活动的Instance的caches中,则SMON将写入一个log,表明合并失败。SMON会对第三步中辨识的每个block进行恢复和写入,在恢复之后会马上释放资源,从而使更多的资源在恢复时可以被使用。s? GR Up B r2o( uRv6 当所有的block被恢复,占用的恢复资源被释放,则系统再次可用。je/AG !c ;j h LS9|D?v note:在恢复中,log合并的开支和失败的Instances的数目是成比例的,并且与每个Instance的redo logs的大小有关。BM.j5kA .wbgS&sH |AxzS 2)Instance recovery和Database availabilitya&zMZ wH:k$IQ, xa IEd aXwN. F; ! F$UQB 上图显示了在进行Instance恢复时,每一步执行时数据库的可用程度:+dnE0YWr nWKXwu sdq 5u A RAC运行在多节点上Mcm,Ji,6 TAv3%WEW Y7l%zLU B 有节点失败被检测到IMrxE20 *kN3h D!C 1zr C GRD的队列部分被重新设置;资源管理被重新分配到活动的nodes。此操作的执行比较快s6,SC9_ zTY$u QzI j?+ D GRD的缓冲部分被重新设置,SMON读取失败Instance的redo logs辨识那些需要恢复的blocks的集合ti6I+q9 t2B95 4 Q0 m E SMON向GRD发起请求,获得所有在需要恢复的blocks集合中的Database blocks。当请求结束,所有的其他的blocks都可被访问了4t_*t H7$9mM=l $k8U,z6 F Oracle执行滚动的向前恢复。失败线程的redo logs被应用到Database,并且那些被完全恢复的blocks将马上可以被访问knRgMd 6,tDehCh 9 R& G Oracle执行滚回恢复。对于尚未提交的事务,undo blocks被应用到Database中&x3 lpV0 VI.dFJn BHI2.B H Instance的恢复完成,所有的data可以被访问wUqAT=qNz XgFSt|pen Lf5h/= 13、有效的内部节点行级锁m nk. =wm1r6n ?O_zjT$ fVo?FjIp 74. Ut Oracle支持有效的行级锁。这些行级锁主要是在DML操作时被创建,例如UPDATE。这些锁被持有,直到事务被提交或回滚。任何请求同行的lock的进程都将被挂起。3?(&|k yKanJMVf fr 5?:5Y cache融合算法的块传输独立于这些user可见的行级锁。GCS对blocks的传输是一个底层的操作,无需当代行级锁被释放就开始进行。blocks可能被从一个Instance传输到其他其他Instances,同时该blocks可能被加锁。Q9u.EWJ _u F2Tn MwcE| GCS提供对data blocks的访问,允许多个事务的并发进行。F2 Z7P ed+u lnR Y%x4i$ 14、RAC的额外的内存需求HrCL UPm6$Q f|,lBu RAC特有的内存多数是在SGA创建时从shared pool中分配的。因为blocks可能跨越Instances被缓冲,必须要求更大的缓冲区。因此,当将single Instance的Database迁移到RAC中时,保持每个Instance的请求工作量都能通single-instance时的情况,则需要对运行RAC的Instance增大10%的buffer cache和15%的shared pool。这些值只是基于RAC大小的经验,一个初始的尝试值。一般会大于此值。Nngz_UIf; ; ;62Lx i$ncD 如果正在使用推荐的自动内存管理特性,可以通过修改SGA_TARGET初始参数来设置。但考虑到同样数量的user访问被分散到多个nodes中,每个Instance的内存需求可以被降低。pGWx 3(_ A69d=m:z7P :4ZA 实际资源的使用可以通过查询每个Instance中的GCS和GES实体中的视图V$RESOURCE_LIMIT视图CURRENT_UTILIZATION和MAX_UTILIZATION字段,具体语句为:-*w;.W8# ;.*2v (e2pL %4+ SELECT resource_name, current_utilization, max_utilization FROM v$resource_limit WHERE resource_name like g%s_%;O 0ST_+ 1 z:8G ikF9eG &9BEA 15、RAC与并发执行anBuvE IfNh6vZV m Wr MFD MU?E- Pm#V6l+1 Oracle的优化器是基于执行访问代价的,这就考虑了并发执行的代价,并将其作为获得理想的执行计划的一个部件。y|Wx33? Ob$I#h0; v nz9D 在RAC环境中,优化器的并发选择是由内部节点和外部节点并发两类组成的。例如,一个特殊的查询请求需要六个查询进程完成,并且在本地节点有六个并发的从属执行进程都是idle的,则查询通过使用本地资源执行,从而获得结果。这阐述了有效地内部节点并发,也无需多节点并发的查询协调的开支。如果本地节点中只有两个并发执行从属进程可用,则这两个进程和其他节点的四个进程共同执行查询。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论