Presentación dada en el primer Webcast en español del Oracle RACSIG - http://oracleracsig.org/
Esta es una versión actualizada con funcionalidades de las últimas versiones (11g/12c) a la presentación que dí durante el OTN Tour 2011 en Montevideo, Oracle RAC sin sorpresas, donde se repasa lo que implica usar Oracle RAC, los desafíos y recomendaciones de cómo sacarle mejor provecho.
Este enfoque introductorio intenta facilitar el camino a los técnicos que están evaluando o comenzado a utilizar Oracle RAC, tarea que tiene una larga curva de aprendizaje.
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Oracle RAC sin sorpresas - v2014
1. 1
RAC sin sorpresas – v2.0RAC sin sorpresas – v2.0
Ing. Nelson Calero, OCP
nelson.calero@gmail.com
@ncalerouy
12 Marzo 2014
2. 2
Sobre mí
• http://www.linkedin.com/in/ncalero
• Ingeniero en Computación. OCP DBA 10g. Especializado en
performance y HA (MySQL / Cluster / Oracle / RAC)
• Trabajando con herramientas Oracle y entorno linux desde 1996
• DBA Oracle (desde 2001) & MySQL (desde 2005)
• Instructor de Oracle University desde 2011 (RAC, New features, ..)
• Co-fundador y Presidente del Grupo de Usuarios
Oracle de Uruguay (UYOUG) desde 2009
• Orador frecuente (Oracle OpenWorld Latinoamérica, Collaborate,
OTN Tour Uruguay/Argentina, JIAP, MySQL Argentina)
3. 3
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos
2 – Desafíos al usar RAC
3 – Performance
4. 4
Conceptos - Cluster
• Cluster: servidores interconectados que actuan como uno
solo
• Oracle RAC: varias instancias accediendo a una misma
base de datos
– Una instancia por servidor
– Solución basada en Shared storage
– Caché compartido entre servidores (global o fusion)
– Conexión de red privada entre servidores hasta 11.2.
• Flex clusters en 12c permite nodos sin conectividad privada (leaf)
– IP Virtual (evita timeouts TCP)
• BD, Listener y aplicaciones
– Mismo SO en todos los servidores
5. 5
Conceptos - DR / HA
• Recuperación de desastres (DR) es la capacidad de
continuar operaciones usando contingencia
• Alta disponibilidad (HA) es la capacidad de recuperar
disponibilidad en un nivel de tiempo preestablecido
• HA necesita recursos: hardware y software
redundante, presupuesto, y muchas horas/hombre
para analizar, diseñar, implementar, testear, testear y
testear
• Disponibilidad de cinco nueves (99,999%) implica no
tener más de 5 minutos de caídas (sin operar) por
año. Este es un valor de HA
6. 6
HA con Oracle: más que RAC
• Single instance: Restart, ASM, Flashback, RMAN,...
• Database + Clusterware (pre 11.2)
– RAC One Node (cold cluster failover) 11.2
• RAC
• RAC en clusters extendidos
• DataGuard
– Single y multiple standby
• Clusterware + DataGuard
• RAC One Node + DataGuard
• RAC + DataGuard
• Goldengate
http://docs.oracle.com/cd/E11882_01/server.112/e17157/architectures.htm
7. 7
Oracle RAC
Historia
– Primera versión: en Oracle 9i (2001)
– Antes : OPS (desde Oracle v7)
Opción en Enterprise Edition (con costo)
– Sin límite de CPUs
Gratis en Standard Edition:
– Máximo de 4 CPU/sockets en cluster
– ASM y Oracle Clusterware obligatorios
Soporta servidores virtualizados
– Templates disponibles para OVM (DB 11.2/12.1)
– http://www.oracle.com/technetwork/database/virtualizationmatrix-172995.html
8. 8
Arquitectura - Oracle RAC
Red pública
Usuarios
SAN Network
Red privada
(Interconnect)
Instancias de la
base de datos
en cluster
Discos
Shared cache
9. 9
RAC - Fortalezas
• Alta disponibilidad (HA): a fallas de nodos e instancias
• Escalabilidad: se pueden agregar nodos a demanda para soportar
mayor carga mantiendo performance (scale-out)
• Gestión de carga automático mediante servicios
• Tecnología madura, desde 2001 con 9i
• Stack completo de componentes del mismo proveedor: SO (OEL),
Filesystem (ACFS), gestión de volúmenes (ASM),
memebresía/cluster (Clusterware)
• ¿HA y escalabilidad automática? No. Depende de:
– Hardware (equipos + lan + interconnect + energía + ...)
– OS – gestión de recursos y concurrencia
– DBMS – arquitectura
– Aplicación – cuellos de botella
10. 10
RAC - Debilidades
• Complejidad – gestión, patching, upgrades, migraciones
• Costo
• Se deben hacer cambios (menores) en aplicativos para
aprovechar funcionalidades (TAF / FAN)
– Application Continuity en 12c mejora esto
• NO ES solución para recuperación de desastres
• NO ES solución mágica para aplicativos con problemas de
performance
12. 12
Escalabilidad RAC
Por diseño del RAC, si una aplicación escala en
SMP, escala en RAC sin cambiar el código
http://docs.oracle.com/cd/E16655_01/rac.121/e17887/design.htm#CACDEEDB
Esto quiere decir :
– los problemas existentes en single-instance son
amplificados en RAC
– la capacidad de procesamiento del sistema completo
es mayor, aunque no sea más performante una
operación individual
– permite más usuarios con la misma performance. No
mejora performance con los mismos usuarios
13. 13
Conceptos de paralelismo en RAC
• Scaleup: mejora en performance cuando
aumentan recursos (y carga)
S = Volumen paralelo / Volumen serial
• Speedup: mejora en tiempos de ejecución
agregando servidores
S = Tiempo secuencial / Tiempo paralelo
• No se logra speedup con carga OLTP
14. 14
Ley de Amdhal S =
http://en.wikipedia.org/wiki/File:AmdahlsLaw.svg
16. 16
Arquitectura - Componentes
Software en cada Nodo (varios ORACLE_HOME):
– Instancia
– Clusterware y ASM = Grid Infrastructure
• Antes de 11.2 en homes separados
Además :
– conexión de alta velocidad entre nodos en una red
separada/privada (solo para nodos hub en 12c)
– Storage compartido (soporta: NFS, iSCSI, DAS, SAN, NAS)
• Caché global (o fusion/coherence) es la funcionalidad clave
17. 17
Oracle RAC - archivos
• Compartidos entre instancias (globales)
– Datos, controlfile, init
• Únicos por instancia (en storage)
– undo, redo, temp
• No compartidos (locales a cada nodo)
– Logs, traces, audit ($ORACLE_BASE/admin en 10.2,
DIAGNOSTIC_BASE desde 11)
18. 18
Storage compartido
• Obligatorio para datafiles
• Soporta:
– Cluster file system
• OCFS2 de Oracle, gratis y open source (GPL)
• ACFS publica acceso a volúmenes ASM
– Automatic Storage Management (ASM) -
recomendado
• Distribuye datos entre discos (balanceo)
• Redundancia opcional (mirroring)
– Raw volumes (para fibra o iSCSI) hasta 11.2
19. 19
Oracle RAC - ASM
• Fin del diseño manual de dispositivos buscando
performance (cilindros externos separados de los
internos, esquemas de raid)
• Funcionalidades:
– Cluster file system (ACFS) / gestión de volúmenes
– Striping
– Balanceo
– Mirroring
– Operaciones online
23. 23
Clusterware Stack
La arquitectura de procesos y el inicio cambió entre versiones:
10g) tres daemons (lanzados mediante inittab)
– CSSD, CRSD (root) y EVMD
11.2) dos stacks (lanzados por OHASD mediante inittab)
– Oracle High Availability Service Daemon (OHASD)
• Gestiona procesos low level
– Cluster Ready Services Daemon (CRSD)
• Gestiona recursos high level (database)
24. 24
Oracle RAC - Clusterware
Funcionalidades
• Capa segura de comuncación entre nodos
• Gestión de recursos globales
– IP, DB, listener, servicios, nodeapps
– Failover automático de recursos
• Fencing de nodos para garantizar consistencia
(eviction) quitando nodos con vista incompleta del
cluster (evita split-brain)
– Implementa variante de STONITH (shoot the other node in
the head): reinico lo hace el mismo nodo aislado
– Necesita número impar de voting disks para decidir
25. 25
Oracle RAC - Clusterware
Componentes:
– Voting disk: estado actual de membresía de nodos (ocssd)
• Mecanismo de heartbeat secundario (además de la red)
• Gestionado con el comando crsctl
– Registry (OCR): metadata de recursos del cluster
• Configuración para el proceso CRSD
• Definido en /etc/oracle/ocr.loc, gestionado con ocrconfig
• Respaldo automático cada cuatro horas en un nodo
– $GI_HOME/cdata/<cluster>
– Oracle Local Registry (OLR) – desde 11.2 : metadata para nodo local
• Gestionado con OHASD, no compartido con otros nodos
27. 27
Node Eviction
• Soporte de Intelligent Platform Management Interface (IPMI)
para reinicio remoto de nodos (desde 11.2)
– Necesita hardware adicional
• Antes de 11.2.0.2, fencing = reinicio de nodo
• Desde 11.2.0.2, se intenta reiniciar el cluster, en este orden
– Mata procesos que realizan I/O (dbwr, logwr)
– Detiene el cluster
– OHASD reinicia el cluster
– Si alguno de los pasos anteriores falla, el node se reinicia
29. 29
Tiempos de acceso
Mutex lock/unlock 25 ns
Main memory reference 100 ns
Send 2K bytes over 1 Gbps network 20,000 ns
Read 1 MB sequentially from memory 250,000 ns
Round trip within same datacenter 500,000 ns
Disk seek 10,000,000 ns
Read 1 MB sequentially from disk 20,000,000 ns
• Jeff Dean – Google - 'Numbers Everyone Should Know'
30. 30
Overhead del caché global
Desglose del tiempo total para obtener un
bloque del caché:
CPU : buscar bloque en cache local
CPU : identificar el master
CPU : pedir el bloque a la red
RED : transferir el bloque
RED : latencia
CPU : recibir el bloque
CPU : crear imagen consistente
31. 31
Oracle RAC – caché global
• Tener presente que no sólo la saturación del
interconect afecta la performane del cache global,
también lo hace la ocupación de CPU
Corolario: uso excesivo de CPU en un nodo puede
afectar la performance del resto
• Operaciones de reconfiguración, por uso excesivo
(afinidad) o por fallas (instancia o nodo), generan
contención (proceso GRD)
32. 32
Oracle RAC – más detalles
• Uso de servicios y resource manager
• Balanceo de carga (cliente y servidor)
• Impacto de cambios en servicios
– Transparent Application Failover (TAF)
– Fast Application Notification (FAN)
• Cambios en 11g y 12c (ver más adelante)
• Tareas administrativas (respaldos, tuning,...)
• Troubleshooting
34. 34
Server connection load balancing
PMON
CRM1
instancia
PMON
SCAN
Listener1
CRM2
instancia
SCAN
Listener2
Local
Listener
Local
Listener
Nodo2
Nodo1
CRM
2
1
1
3
4
5
6
User
Process
DNS
Client
Connect
user:@scan:1521/crm
35. 35
Cambios en 11g
• ASM y CW en un solo home (Grid Infrastructure)
• patchset son instalaciones completas (11.2.0.2)
• Server pools
• Scan listener
• Nueva arquitectura de procesos
–nuevos procesos (GPnP, GNS, ...)
–Fencing sin restart de nodos
–OCR y Voting disk en ASM (11.2)
–OLR
–Clusterware para single instance (Restart)
• Quality of service management (QoS)- analiza carga y cambia asignación de
servicios a consumer groups (resource manager)
• Nuevos sabores: RAC One node
36. 36
Cambios en 12c
• cloudFS
• cambio de licencia en Clusterware (gratis con cualquier licencia Oracle)
• CW: flex cluster y application cluster
– hub nodes y leaf nodes (sin acceso directo al storage, lo hacen a traves
de hubs)
• flex ASM
• ACFS: soporta archivos de la base RAC, Oracle home's y backupsets
• Funcionalidad RAC aplication continuity (AC): repite en otra instancia
transacciones en ejecución cuando hay fallas en instancia o sesión. Usa
Transaction Guard, nuevo en 12c.
• SCAN listener: soporta IPv6, multiple subnets en el cluster y restringir
servicios que se registran.
• QoS no requiere licencia extra
37. 37
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos
2 – Desafíos al usar RAC
3 – Performance
38. 38
2 - Desafíos
Infraestructura
– Muchos componentes nuevos (elección, diseño
de arquitectura, capacity planning)
Gente
– Preparación inicial y constante
– Dimensionar adecuadamente los grupos
– Desarrollo y Soporte
Gestión
– Incluye áreas antes bien separadas
(sysadmin /dba)
39. 39
¿Recomendaciones?
Muchas
– Diseño de la arquitectura (capacidad, HA/DR, instalación)
– Caminos para migración inicial
– Diseño de aplicativo
– Gestión de carga
– Tuning
– Gestión de cambios (parches de Oracle y aplicativos)
– Validaciones periódicas de procedimientos de HA/DR
Fuentes
– Soporte Oracle (ex Metalink) – único oficial
– Oracleracsig : grupo de usuarios interesados en RAC (Special
Interest Group)
– Comunidad – Rac Attack, blogs
40. 40
¿Recomendaciones?
• Oracle Validated Configurations
http://www.oracle.com/technetwork/server-storage/linux/validated-configurations-085828.html
• Notas para instalación y soporte :
– RAC and Oracle Clusterware Best Practices and Starter Kit
(Platform Independent) (Doc ID 810394.1)
– Master Note for Real Application Clusters (RAC) Oracle
Clusterware and Oracle Grid Infrastructure [Article ID 1096952.1]
– Top 5 Database and/or Instance Performance Issues in RAC
Environment (Doc ID 1373500.1)
– Top 5 RAC Instance Crash Issues (Doc ID 1375405.1)
– Top 3 RAC Database/Instance Hang Issues (Doc ID 1389520.1)
– ...
41. 41
2 - Desafíos
Adoptar metodología que permita dar garantías en:
– tiempos de respuesta
– alta disponibilidad
Contar con grupo interdisciplinario enfocado en ambos
temas, que conozca toda la solución : aplicativo y
plataforma
MAA: Se estima esfuerzo de 20 personas por año
http://www.oracle.com/us/technologies/026963.pdf, pág. 12
42. 42
¿Migrar a RAC?
Implica :
– Objetivos claros : ¿HA, escalabilidad, performance?
– Buena preparación de los técnicos involucrados
(desarrollo y administración)
– Cronograma realista
– Mucho testing (inicial y evolutivo)
Existen muchas guías y recomendaciones, pero
pocas referencias de fracasos y sus motivos.
43. 43
Instalaciones conocidas
• Oracle : 30+ clientes con 6 nodos
• Amazon (16 nodos en 2010)
• Mercadolibre (10 nodos en 2010)
• Uruguay: 2 / 3 nodos
• Casos de estudio
http://www.oracle.com/technetwork/database/features/ha-casestudies-098033.html
44. 44
Herramientas
Administración
CLI : crs_ctl, srvctl, asmcmd, ..
Grid control
Tuning
Automatic Workload Repository (AWR) / statspack
ADDM
Grid control
Cluster Health Monitor (CHM) - integrado en 11.2.0.2
Support Tools Bundle - nota 1594347.1
45. 45
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos
2 – Desafíos al usar RAC
3 – Performance
46. 46
3 – performance
• Tuning : Mismo enfoque que single-instance
– Monitorear
– Identificar las esperas/consumidores mayores
– Mejorar y comenzar de nuevo
• Oracle Enterprise Manager Grid control sirve, pero en
algunos casos se necesita más información :
– Trace 10053 (CBO)
– dbms_xplan.display_cursor
– ASH
• Nuevos wait-events
47. 47
Tuning – Wait events
• Pedir un bloque del cache global puede esperar por
respuesta de otra instancia: Cluster Wait Class
– Evento genérico mientras se espera:
• gc [current|cr] block request
– Después del pedido:
• gc [current|cr] block [2|3]-way
• gc [current|cr] block busy
• gc [current|cr] grant 2-way
• gc current grant busy
• gc [current|cr] [block|grant] congested
• gc [current|cr] [failure|retry]
• gc buffer busy
http://docs.oracle.com/cd/E11882_01/rac.112/e16795/monitor.htm#CFAHDADB
48. 48
• Ejemplo de contención en select .. for update
Row-lock contention
49. 49
Ejemplos de problemas específicos de RAC
• uso excesivo de cpu afecta respuesta de procesos como LMS (lock manager), lo
que puede generar eviction si no responde a tiempo los mensajes de heartbeat.
• procesos batch sin buen particionamiento de datos pueden generar contención
(locks clásicos o waits del cluster).
• uso de claves primarias autoincrementales de forma global (secuencias, fechas)
genera contención al insertar (eventos 'enq : TX – index contention', 'gc buffer
busy ..' y otros).
• sentencias como DROP y TRUNCATE generan checkpoint de la tabla e índices,
obligando a sincronización del caché y locks globales.
• commits muy frecuentes recargan el proceso LGWR, lo que agrega esperas al
proceso LMS que a veces lo necesita para mantener consistencia.
• sentencias DDL invalidan SQL parseados sobre objetos, que se sincroniza en el
caché global.
Problemas conocidos
50. 50
Soluciones
✔ reescribir select for update usando condiciones más reestrictivas
✔ aumentar valor de cache de SEQUENCES
✔ particionar tablas e índices (afinidad en caché global es por segmento)
✔ modificar PCTFREE para tablas chicas con muchos accesos
✔ minimizar uso de sentencias DDL en horarios de mucha concurrencia
✔ usar índices reversos en casos de PK incrementales siempre que no
se necesite range scan frecuentes.
✔ Particionar índices por HASH cuando se necesiten range scan
✔ Evitar autocommit en aplicaciones y usar commit por transacción, no
por sentencia
Consejos
51. 51
Consejos clásicos, pero que ahora impactan más :
● reducir hard parsing (punto de serialización global)
● controlar la combinación de histogramas con bind-peeking en 10g
● reducir generación de redo (p.ej : evitando update *)
● minimizar generación de undo (p.ej : borrar índices no usados)
● comprimir datos. Ej:
● usar D o E en lugar de DISABLED o ENABLED
● permitir valores nulls en columnas (NULL/S en lugar de N/S)
● evitar full table scan no necesarios (optimizado en 11.2)
Consejos
53. 53
Referencias
• Document ID 810394.1 RAC Assurance Support Team: RAC and Oracle
Clusterware Starter Kit and Best Practices (Generic)
• Document ID 220970.1 RAC: Frequently Asked Questions
• Document ID 1187723.1 Master Note for Automatic Storage
Management (ASM)
• Document ID 1053147.1 11gR2 Clusterware and Grid Home - What You
Need to Know
• Document ID 790189.1 Oracle Clusterware and Application Failover
Management
• Document ID 422893.1 11g Understanding Automatic Diagnostic
Repository
• Document ID 787420.1 Cluster Interconnect in Oracle 10g and 11g
• Oracle RAC SIG: http://www.oracleracsig.org
• Oracle RAC 12c
http://www.oracle.com/technetwork/database/options/clustering/rac-wp-12c-1896129.pdf
54. 54
Referencias
• RAC Attack
http://en.wikibooks.org/wiki/RAC_Attack_-_Oracle_Cluster_Database_at_Home/RAC_Attack_12c
• SCAN Listeners
http://www.oracle.com/technetwork/products/clustering/overview/scan-129069.pdf
• QoS
http://www.oracle.com/technetwork/products/clustering/overview/qosmanageent-
508184.html
• Application continuity (12c)
http://www.oracle.com/technetwork/products/clustering/ac-overview-1967264.html
• Supported Virtualization and Partitioning Technologies for Oracle
Database and RAC Product Releases
http://www.oracle.com/technetwork/database/virtualizationmatrix-172995.html
• How to Deploy a Four-Node Oracle RAC 12c Cluster in Minutes - Using
Oracle VM Templates
http://www.oracle.com/technetwork/systems/hands-on-labs/deploy-rac-ovm-cluster-2101019.html
• Oracle Database Upgrade blog
https://blogs.oracle.com/UPGRADE/