lunes, 12 de mayo de 2014

Oracle RAC 12cR1 : Como ver las dependencias que tiene un recurso con crsctl

Cuando uno empieza a usar Oracle RAC, es necesario entender todos los recursos involucrados para que suba nuestra base de datos, esto no es problema cuando todo esta corriendo bien, pero que pasa cuando existe una falla y estás a contra reloj.

En Oracle 12cR1, existe un nuevo parametro en la herramienta crsctl para poder ver las dependencias que tiene un recurso y así facilitarnos la vida al tratar de resolver un problema.

[root@oel6-112-rac1 ~]# crsctl status resource ora.orcl.db -dependency 
================================================================================
Resource Start Dependencies
================================================================================
----------------------------------ora.orcl.db-----------------------------------
ora.orcl.db(ora.database.type)->
| type:ora.listener.type[weak:type]
| | type:ora.cluster_vip_net1.type[hard:type,pullup:type]
| | | ora.net1.network(ora.network.type)[hard,pullup]
| | | ora.gns(ora.gns.type)[weak:global]
| | | | ora.gns.vip(ora.gns_vip.type)[hard,pullup]
| | | | | ora.net1.network(ora.network.type)[hard,pullup]
| type:ora.scan_listener.type[weak:type:global]
| | ora.scan1.vip(ora.scan_vip.type)[hard,pullup]
| | | ora.net1.network(ora.network.type)[hard,pullup:global]
| | | ora.gns(ora.gns.type)[weak:global]
| | | | ora.gns.vip(ora.gns_vip.type)[hard,pullup]
| | | | | ora.net1.network(ora.network.type)[hard,pullup]
| | | type:ora.scan_vip.type[dispersion:type:active]
| | type:ora.scan_listener.type[dispersion:type:active]
| ora.ons(ora.ons.type)[weak:uniform]
| | ora.net1.network(ora.network.type)[hard,pullup]
| ora.gns(ora.gns.type)[weak:global]
| | ora.gns.vip(ora.gns_vip.type)[hard,pullup]
| | | ora.net1.network(ora.network.type)[hard,pullup]
| ora.DATA.dg(ora.diskgroup.type)[hard:global:uniform,pullup:global]
| | ora.asm(ora.asm.type)[hard,pullup:always]
| | | ora.LISTENER.lsnr(ora.listener.type)[weak]
| | | | type:ora.cluster_vip_net1.type[hard:type,pullup:type]
| | | | | ora.net1.network(ora.network.type)[hard,pullup]
| | | | | ora.gns(ora.gns.type)[weak:global]
| | | | | | ora.gns.vip(ora.gns_vip.type)[hard,pullup]
| | | | | | | ora.net1.network(ora.network.type)[hard,pullup]
| | | ora.ASMNET1LSNR_ASM.lsnr(ora.asm_listener.type)[hard,pullup]
| | | | ora.gns(ora.gns.type)[weak:global]
| | | | | ora.gns.vip(ora.gns_vip.type)[hard,pullup]
| | | | | | ora.net1.network(ora.network.type)[hard,pullup]
--------------------------------------------------------------------------------

De igual manera , podemos ver que dependencia tiene otro recurso si lo llegáramos a iniciar o detener y ver el impacto que este tendría.

[root@oel6-112-rac1 ~]# crsctl status resource ora.DATA.dg -dependency -stop
================================================================================
Resource Stop Dependencies
================================================================================
----------------------------------ora.DATA.dg-----------------------------------
ora.DATA.dg(ora.diskgroup.type)->
| ora.mgmtdb(ora.mgmtdb.type)[hard:global:shutdown]
| ora.orcl.db(ora.database.type)[hard:global:shutdown]

[root@oel6-112-rac1 ~]# crsctl status resource ora.DATA.dg -dependency -pullup
================================================================================
Resource Pullup Dependencies
================================================================================
----------------------------------ora.DATA.dg-----------------------------------
ora.DATA.dg(ora.diskgroup.type)->
| ora.mgmtdb(ora.mgmtdb.type)[pullup:global]
| ora.orcl.db(ora.database.type)[pullup:global]
--------------------------------------------------------------------------------

Conclusión

Si te fijas, es una pequeña mejora al estatus de nuestros recursos que se venia manejando desde previas versiones, pero esta mejora te ayudara a planear y atacar los problemas de una manera mas rapida.