{"id":1348,"date":"2015-12-17T23:40:41","date_gmt":"2015-12-17T22:40:41","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=1348"},"modified":"2016-01-05T11:32:49","modified_gmt":"2016-01-05T10:32:49","slug":"metodos-de-parcheados-del-rac","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/metodos-de-parcheados-del-rac\/","title":{"rendered":"M\u00e9todos de parcheados del RAC"},"content":{"rendered":"<p>Hoy vamos a ver unas nociones r\u00e1pidas sobre el parchado en un RAC<br \/>\nParchear el RAC es diferente al parcheado de un sibgle node, si Opatch detecta un cluster preguntar\u00e1 al OUI el nombre del nodo local y el listado de nodos.<br \/>\nAdem\u00e1s de esto, antes de instalar un parche hay que parar todoas las aplicaciones que corren en ese directorio de software deben de pararse. <\/p>\n<p>Exsisten 3 m\u00e9todos de parcheado de un RAC<\/p>\n<ul>\n<li>All Node Patching\n<li>Rolling Patching\n<li>Minimum Dowtime\n<\/ul>\n<p>Para llevar a cabo el parchado seguiremos los siguientes pasos:<br \/>\n1.    Parar el grid y todo lo que dependa de el en el nodo ( incluido ASM de single instances)<br \/>\n2. \tDesbloquear el GRID_HOME, como <strong>root<\/strong> ejecutaremos<br \/>\n<code> cd $GRID_HOME\/crs\/install<br \/>\nperl rootcrs.pl -unlock -crshome \/u01\/app\/11.2.0\/grid <\/code><br \/>\nAl ejecutar el rootcrs.pl con el flag -unlock desbloqueamos el GRID_HOME con lo que ya puede modificarse<br \/>\n3.Con el usuario del grid p parcheamos  con el m\u00e9todo que elijamos <strong>( ver 3 m\u00e9todos)<\/strong><br \/>\n4. Como  root de nuevo,volvemos a bloquear los binarios del grid con<br \/>\n<code> cd $GRID_HOME\/crs\/install<br \/>\nperl rootcrs.pl -patch<\/code><br \/>\nAl ejecutar el rootcrs.pl con el flag -patch  bloqueamos el GRID_HOME  y se rearranca el Oracle Clusterware stack<\/p>\n<h1>M\u00e9todos de parcheado<\/h1>\n<p>Vamos a describir cada uno de los tres m\u00e9todos de parchado y las diferencias entre ellos <\/p>\n<h2>All Node Patching<\/h2>\n<p>Este m\u00e9todo consiste en parar todos los recursos de todos los nodos y se instalan a la vez. una vez est\u00e1n todos parcheados arrancamos de nuevo.<br \/>\nEst\u00e9 m\u00e9todo es el que se usa t\u00edpicamente para los parches cr\u00edticos y es el que tiene el  m\u00e1ximum downtime.<br \/>\nOpatch usa este m\u00e9todo cuando el parche no puede aplicarse en \u201c rolling fashion\u201d y cuando no se especifica la opcion minimize_downtime<br \/>\nLos pasos ser\u00edan:<br \/>\n<code><br \/>\n$ CRS_home\/crs\/bin\/crsctl stop cluster -all<br \/>\n$ Grid_home\/bin\/crsctl status resource -t<br \/>\n$ cd Oracle_home\/OPatch\/4519934\/4519934<br \/>\nopatch apply<br \/>\n# Grid_home\/bin\/crsctl start cluster -all   (como root)<br \/>\n$ Grid_home\/bin\/crsctl status resource -t<br \/>\n<\/code><br \/>\nTras esto ejecutamos los post-scripts que nos diga el readme.<\/p>\n<h2>Rolling Patching<\/h2>\n<p>El m\u00e9todo de Rolling patching es el m\u00e9todo mas eficiente para la aplicaci\u00f3n de parches en un RAC o un GRID. En este m\u00e9todo se para un grupo de nodos , se aplican los parches a ese grupo, se levanta.. se va haciendo as\u00ed hasta que todos los nodos del cluster est\u00e1n parcheados.<br \/>\nDe esta forma el downtime es cero ya que siempre dejas un nodo disponible de cada instancia.<br \/>\nNo todos los parches pueden ser aplicados mediante este m\u00e9todo. Si no puede aplicarse es cuando tendr\u00e1s que aplicar el \u201cminimun downtime\u201d o \u201call node\u201d<br \/>\nLos pasos son:<br \/>\n<code><br \/>\n  opatch query -is_rolling_patch<br \/>\n  $ Grid_home\/crs\/bin\/crsctl stop cluster -n RAC1   (paramostodo)<br \/>\n  opatch apply [-local_node   rac1] -remote_nodes  rac2, rac3   Arrancamos los nodos que hemos parcheado<br \/>\n  Comprobamos el estado con crsctl stat res \u2013t<br \/>\n  Repetimos lospasos 2-5 en los que quedan<br \/>\n  Ejecutamos los comandos post-pacth<br \/>\n<\/code><\/p>\n<h2>Minimun Downtime <\/h2>\n<p>Este m\u00e9todo es el casi igual que el de rolling patching, pero lo llevamos a cabo cuando losparches no sean \u201crolling patch\u201dLa diferencia principal es que los nodos que se van parando y arrancando son los que tienen un mismo servicio.Se pierde servicio enlos nodos parcheados, pero si hay mas de un servicio el resto sigue funcionando. Es una mezcla entre el mejor (rolling) y el peor(all nodes)<br \/>\nEn este m\u00e9todo se para un grupo de nodos , se aplican los parches a ese grupo, se levanta.. se va haciendo as\u00ed hasta que todos los nodos del cluster est\u00e1n parcheados.<br \/>\nLos pasos son:<br \/>\n<code><br \/>\n Elegimos un grupo de onodos aparchear.<br \/>\n $ Grid_home\/crs\/bin\/crsctl stop cluster -n RAC1   (paramos todo)<br \/>\n opatch apply -minimize_downtime<br \/>\n Arrancamos los nodos que hemos parcheado<br \/>\nComprobamos el estado con crsctl stat res \u2013t<br \/>\nRepetimos lospasos 2-5 en los que quedan<br \/>\n Ejecutamos los comandos post-pacth<br \/>\n<\/code><\/p>\n<p>A groso modo esta es la diferencia entre los 3 m\u00e9todos de parchado de un RAC, evidentemente, como siempre, conviene leerse el README tanto para ver las especificaciones del parche, como la vuelta atr\u00e1s.<br \/>\nAntes de ejecutar los comandos que ponemos aqu\u00ed, es siempre recomendable el hacer las propias comprobaciones previas con el Opatch tal y como indic\u00e1bamos en la entrada <a href=\"http:\/\/clemente.pamplona.name\/dba\/opatch-parcheando-la-base-de-datos\/\" Opatch, parchando la base de datos> para ver si la instalaci\u00f3n cumple con los requisitos del parche.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver unas nociones r\u00e1pidas sobre el parchado en un RAC Parchear el RAC es diferente al parcheado de un sibgle node, si Opatch detecta un cluster preguntar\u00e1 al OUI el nombre del nodo local y el listado &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/metodos-de-parcheados-del-rac\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[249,254,267,75,266,265],"class_list":["post-1348","post","type-post","status-publish","format-standard","hentry","category-11g","tag-11g","tag-12c","tag-minimize_downtime","tag-opatch","tag-patching","tag-rolling"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=1348"}],"version-history":[{"count":15,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1348\/revisions"}],"predecessor-version":[{"id":1363,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1348\/revisions\/1363"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=1348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=1348"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=1348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}