Upload
nelson-calero
View
1.791
Download
8
Embed Size (px)
DESCRIPTION
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.
Citation preview
1
RAC sin sorpresas – v2.0RAC sin sorpresas – v2.0Ing. Nelson Calero, [email protected]
@ncalerouy
12 Marzo 2014
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
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos2 – Desafíos al usar RAC3 – Performance
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
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
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
• Goldengatehttp://docs.oracle.com/cd/E11882_01/server.112/e17157/architectures.htm
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
Arquitectura - Oracle RAC
Red pública
Usuarios
SAN Network
Red privada (Interconnect)
Instancias de la base de datos en cluster
Discos
Shared cache
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
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
11
Escalabildad RAC/SMP
Diagrama tomado de la documentación oficial
Procesamiento paralelo : symmetric multiprocessor (SMP)
12
Escalabilidad RAC
Por diseño del RAC, si una aplicación escala en SMP, escala en RAC sin cambiar el códigohttp://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
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
Ley de Amdhal S =
http://en.wikipedia.org/wiki/File:AmdahlsLaw.svg
15
Arquitectura RAC
Diagrama tomado de la documentación oficial
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
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
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
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
20
“Oracle Database 11gR2 High Availability”, Oracle Press
21
Oracle RAC - procesos
QUIZ :
¿Cuantos procesos background tiene Oracle?
(Instancia + RAC + opciones)
22
Oracle 11.2 92 procesos background (Instancia + RAC + opciones) http://docs.oracle.com/cd/E11882_01/server.112/e40402/bgprocesses.htm
Oracle 12.1 108 procesos background http://docs.oracle.com/cd/E16655_01/server.121/e17615/bgprocesses.htm
Oracle RAC - procesos
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
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
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
26
Clusterware heartbeats
RED Pública
CSS
Nodo2
CSS
Nodo1
CSS
Nodo3
InterconnectRED Privada
RED SANDiskTimeoutdef. 200 seg.
Voting Disk
CSS_MISSCOUNT def. 30 seg.
RED Pública
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
28
Oracle RAC – caché global
GRD Master
GRD Master
LMSx
LMON
Cache
LCK0
DIAG
Nodo2
Instancia 2
Global Resource Directory (GRD)
Global CacheServices (GCS)
Global EnqueueServices (GES)
LMSx
LMON
Cache
LCK0
DIAG
Nodo1
Instancia 1
Cache Fusion
Interconnect
RecursosGlobales
RAC Cluster
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
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
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
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
33
SCAN Listeners
InstanciaCRM1
SCANListener1
InstanciaCRM2
SCANListener2
LocalListener
LocalListener
1
2 3
4
Client
Connect user:@scan:1521/crm
InstanciaCRM3
LocalListener
InstanciaCRM4
LocalListener
InstanciaCRM5
LocalListener
SCANListener3
scan=SCAN VIP1SCAN VIP2SCAN VIP3
listener_rac4
CRM
34
Server connection load balancing
PMON
CRM1instancia
PMON
SCANListener1
CRM2instancia
SCANListener2
LocalListener
LocalListener
Nodo2
Nodo1
CRM
2
1
1
34
5
6
UserProcess
DNS
Client
Connect user:@scan:1521/crm
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
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
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos2 – Desafíos al usar RAC3 – Performance
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
¿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
¿Recomendaciones?
• Oracle Validated Configurationshttp://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
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ñohttp://www.oracle.com/us/technologies/026963.pdf, pág. 12
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
Instalaciones conocidas
• Oracle : 30+ clientes con 6 nodos
• Amazon (16 nodos en 2010)
• Mercadolibre (10 nodos en 2010)
• Uruguay: 2 / 3 nodos
• Casos de estudiohttp://www.oracle.com/technetwork/database/features/ha-casestudies-098033.html
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
Oracle RAC sin sorpresas (v2.0)
Agenda
1 – Conceptos2 – Desafíos al usar RAC3 – Performance
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
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
• Ejemplo de contención en select .. for update
Row-lock contention
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
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
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
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
Referencias• RAC Attack
http://en.wikibooks.org/wiki/RAC_Attack_-_Oracle_Cluster_Database_at_Home/RAC_Attack_12c
• SCAN Listenershttp://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 Releaseshttp://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 bloghttps://blogs.oracle.com/UPGRADE/