sábado, 29 de marzo de 2014

Preguntas y respuestas de la presentación sobre RAC

Muchas gracias a todos los que me acompañaron en la presentación sobre Oracle RAC hace unos días.
Hubo varias preguntas al final, y algunos asistentes me pidieron que les enviara referencias. No tuve tiempo de tomar nota de quién hizo esas preguntas antes de que se cerrara la sesión, así que dejo acá las respuestas, que además sirven para ampliar el material usado en la presentación.
Transcribo las preguntas de memoria, así que espero que sean lo más parecido posible a la realidad. Y aprovecho a desarrollarlas un poco más.


  • ¿Se necesita Oracle ASM con Oracle RAC 11g?
ASM es la única alternativa si se usa la versión Standard Edition de Oracle.
En Enterprise Edition se permiten alternativas (documentadas en la matriz de certificación en el sitio de soporte), aunque Oracle ASM es la recomendada para la base de datos y los archivos OCR y voting disk usados por clusterware. Este es justamente uno de los puntos fuertes a favor de usar RAC, contar con soporte de todos los componentes de la infraestructura por parte del mismo proveedor, lo que da cierta garantía sobre la integración de las partes y se minimiza el tiempo de resolución de incidentes.
Un buen ejemplo de que siempre es necesario consultar la documentación es que HP Serviceguard Storage Management Suite no aparece soportado en 12.1 y sí lo estaba en 11.2 (junto a otros productos).


  • ¿Recomendaciones para hacer upgrade de RAC 10g a RAC 11g?
Este es un tema que tiene varios puntas. La mejor recomendación podría ser estudiar  la documentación, y en particular el Blog de Upgrade de Oracle, que tiene todo lo que nos puede interesar sobre upgrades. Este es el link al workshop de Upgrade. También el sitio de soporte tiene mucha información sobre el tema, y la más completa es "Upgrade Advisor: Database from 10.2 to 11.2 (Doc ID 251.1)" que incluye muchas referencas a todas las etapas de un proyecto de upgrade.

Si el upgrade incluye usar nuevo hardware, se puede realizar la instalación con tranquilidad sobre el hardware nuevo para luego evaluar estrategias para replicar datos sin afectar el sistema de producción. Más adelante se aclaró que el upgrade sería sobre el mismo hardware, lo que plantea desafíos adicionales:
- se debe validar que la versión del Sistema operativo (SO) permita realizar un upgrade a la nueva versión (hay años de diferencia entre las versiones, y si bien se certifican nuevas versiones de la base de datos con versiones viejas del SO, normalmente requiere parches en el SO que pueden no estar instalados). Si se requieren parches, se agrega complejidad al proceso y posiblemente una ventana adicional de indisponibilidad.
- al trabajar sobre los mismos servidores que soportan un sistema en producción, se debe buscar un procedimiento que minimice el impacto en la disponiblidad del sistema. Por ejemplo, dependiendo de la cantidad de servidores que tenga el cluster, se podría ir quitando de a un servidor y hacer la actualización mientras el resto sigue funcionando (método conocido como rolling upgrade). Un punto importante es que ASM permite rolling upgrades a partir de 11g, por lo que se debe planificar un tiempo de indisponiblidad para realizar esta actualización desde 10g cuando se llegue al último servidor.

Por culminar, algo obvio pero que no está de mas recordarlo: este tipo de trabajo requiere mucha validación previa, por lo que es imprescindible contar con un ambiente de prueba donde realizar el procedimiento de upgrade completo, y se puedan realizar ajustes y automatizar todo lo posible previo a su ejecución en producción.


  • ¿Cómo identificar índices que no se usan?
Esta pregunta tiene que ver con la recomendación de evitar la generación de redo innecesario por tener muchos índices que no se usan.
La respuesta obvia podría ser habilitar la funcionalidad de monitoreo de índices, disponible desde 9i. 
Aunque esta solución es muy simple, no es la mejor porque puede detectar casos que no nos interesan, ya que no registra la frecuencia con que fueron usados. Por ejemplo, un proceso agendado que ejecute por la noche y no tenga impacto en el uso del sistema puede ser el único que use un índice.
Otro aspecto importante para buscar oportunidades de reducir la generación de redo es eliminar índices redundantes, cosa que no tiene mucho que ver con esta detección índices usados.
En los foros de OTN hay varias preguntas similares, y esta es un buen ejemplo con varias respuestas que incluyen todos estos detalles.
Otro enfoque para identificar el uso de índices junto a la frecuencia con que son usados es aprovechar los datos capturados por AWR, si tenemos la versión Oracle Enterprise Edition y la licencia del Diagnostic Pack. Esto es algo bastante comentado en la comunidad, y por ejemplo en este muy completo post se pueden ver scripts y ejemplos de como obtener esta información.


  • ¿ASM puede saturar los discos?
ASM es el intermediario para gestionar los discos, pero el acceso a los bloques en disco lo hace el proceso de usuario que lo necesita (y los procesos de la base para escribir). Entonces no hay overhead en el acceso a disco asociado al uso de ASM.
El rendimiento de los discos va a ser el mismo que se pueda obtener por fuera de ASM, con acceso directo desde el sistema operativo (SO). Una buena nota de soporte que intenta aclarar esto es "Comparing ASM to Filesystem in benchmarks (Doc ID 1153664.1)".
Cualquier problema en la configuración que los hace visibles al SO y que pueda impactar en su rendimiento se va a extender a cualquier programa que los use. Esto incluye la conectividad al storage y la redundancia (multipath). Un ejemplo análogo es el uso de raid, donde es posible ver configuraciones que no logran la mejor performance, y cualquier filesystem que utilice estos discos va a sufrir su impacto.
Otra interpretación de la pregunta puede ser apuntando a las tareas internas que ejecuta ASM para garantizar la redundancia configurada. Hay operaciones internas de rebalanceo cuando cambia la cantidad de discos disponibles en los disk groups. Cuando ésta ejecuta se agrega actividad sobre la que ya existe en los discos, y se puede controlar su impacto en la performance con el parámetro ASM_POWER_LIMIT. El avance de estas operaciones se puede seguir en la vista GV$ASM_OPERATION

Espero que les sea útil.
Un saludo.