Voting disk (componentes del grid)

Vamos a dedicar una serie de entradas a explicar los distintos componentes del Grid infraestructurae de Oracle a partir de la version 11gR2

El voting disk es usado por el demonio de sincronización de servicios (ocssd Oracle cluster sincronization services daemon) para comprobar el estado de los nodos del disco.
Cada uno de los nodos envía en intervalos predeterminados un herbeat por la red para indicar a el resto que está vivo. Si el resto determina que uno de los nodos está muerto entonces le hace un “fence” para evitar corrupción de datos o un split brain.
Cada nodo debe de enviar un hearbeat por red por segundo y escribir un herbeart por voting disk por segundo. Si un nodo no hiciera ambas cosas, el resto de nodos comenzarían un proceso de reconfiguración que, sirve para comprobar qué nodos están vivos que básicamente es que cada nodo indica cuales encuentra como vivos y cuáles no .
A los nodos que no contestan se les envía un “poison packet via network and disk” y se les saca del cluster.

En las versiones anteriores el voting file debía de ser un sistema compartido de red (NFS,OCFS.. ), pero en la versión 11gR2 ya puede ser un disco de ASM (Es aconsejable ir pasándolos a ASM ya que podrían ser de-soportados los otros tipos de voting)

Si usas OCFS para el voting file, se aconseja el uso de 3 o 5 copias del voting file, aunque el máximo es de 15. En caso de uso del ASM no puedes determinarlo ya que es transparente y dependen del tipo de redundancia del ASM (external,normal,hit). En el caso de tener redundancia interna de ASM (normal/high),oracle chequea que tengas el número de discos mencionados anteriormente, conlo que deberás de tener un mínimo de 3 failure groups en redundancia normal y 5 en high. Si no los tuvieras, recibirás un error indicándote lo :

ORA-15273: Could not create the required number of voting files
ORA-15274 ...

En la versión 11gR2, el voting file, registro local y el perfil de Grid Plug and Play (GPnP) tienen toda la información necesaria del cluster por lo que no dependen del OCR, sin embargo el OCR es necesario para administrar los recursos del cluster

El voting disk se ubica en un disco de ASM individual, esto hace que el Cluster Synchronization Services daemon (CSSD) acceda directamente al contenido de los voting disk, lo que le permite arrancarse antes que los propios discos de ASM

En la versión 11gR2 de Oracle el backup del voting disk se lleva a cabo automáticamente con el backup el OCR.

El comando con el que administraremos el voting disk es el crscrtl, la sintaxsis de las acciones mas comunes es:


[grid@rac1 oracle]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   731fe6f479734f1fbf75ed0d30b3e76b (/dev/asmdisk_sdb1) [OCRQUORUM]
Located 1 voting disk(s).

También prodríamos añadir un votedisk

[grid@rac1 oracle]$ crsctl add css votedisk /shared/vfile1 

Reemplazar un votedisk

[grid@rac1 oracle]$ crsctl replace votedisk /shared/vfile1
  /shared2/vfile2 

O eliminar un votedisk

[grid@rac1 oracle]$ crsctl delete votedisk  /shared2/vfile2 

Como siempre, mas información en la documentación de Oracle en:
http://docs.oracle.com/cd/E11882_01/rac.112/e16794/crsref.htm#CWADD91143

Alta de un host Windows 32/64 en OEm12c

En la entrada anterior vimos como descargar los catálogos de agentes en el nuevo OEM12c, nuestro siguiente paso será el dar de alta un host para después poder dar de alta los elementos que lo contengan.
Algo que pude sorprender respecto de las anteriores versiones del oem es que, en esta version 12.1.0.3.0 del Enterprise Manager, los agentes no son programas cliente que te descargas e instalas en el servidor, son programas que se despliegan desde el OEM12c por ssh

En vista de esto,lo primero que se nos viene a la cabeza es ¿que hacemos con los windows?

Lo primero que tendremos que hacer es instalar un servidor de ssh para windows, en el mercado hay varios de ellos, sin embargo,y a pesar de que es de los que personalmente menos me gustan, yo solamente recomiendo la instalación de uno de ellos, el cygwin .
¿Por que de esta recomendación?
Por que es el que aconseja Oracle en su manual de instalación, y, ya que vamos a instalar un elemento extraño en un entorno windows, al menos, usemos el que está documentado y sobre el que vamos a tener soporte.

El proceso de descarga e instalacion de cygwin está perfectamente documentado en los pasos previos a la instalacion del oem12c para windows Install cygwin. Seguiremos ese enlace y crearemos un usuario con permisos de administración ( por ejemplo usuario oem)

Una vez lo tenemos instalado, lo primero que debemos de hacer es probarlo, para ello abriremos una conexión ssh con el servidor windows, comprobando que podemos logarnos en el sistema con ese usuario oem que hemos creado previamente. Hasta que este paso no este claro y en funcionamiento no podemos seguir con el despliegue del agente.

Lo primero que haremos es buscar el alta manual

1

Tras eso llegamos a la ventana del directorio de instalación, a pesar de que la instalación se va a llevar a cabo mediante ssh y que el cygwin es capaz de ver las rutas de disco con path unix, la definición de directorios en esta pestaña debe de ser en modo windows, es decir c:\ d:\

ScreenHunter_116 Jul. 30 09.53

Una vez hemos decidido el lugar, tendremos que dar los datos de la conexión ssh, para esta conexión aconsejo el crear un usuario windows (por ejemplo OEM ) dentro del grupo DBA y hacer la equivalencia en el cygwin con ese usuario
ScreenHunter_116 Jul. 30 09.49

Tras esta pantalla llegamos a una ventana de trámite de confirmación de datos de despliegue de agente en la que le daremos a desplegar agente. Una vez le decimos que despliegue el agente, oem12c llevará a cabo una serie de comprobaciones en el host destino, estas comprobaciones son bastante completas
ScreenHunter_132 Jul. 30 10.42

Una vez tengas el OK en todas las comprobaciones, la instalación es inmediata.

Como veis, la instalación de un agente de windows es prácticamente siguiente-> siguiente, la mayor dificultad es el asumir que esta se lleva a cabo mediante ssh y no mediante protocolos de Microsoft.

Añadir agentes en OEM12c

Una vez tenemos instalado el OEM12c el siguiente paso lógico es el de añadir nuestros sistemas para su gestión.

El primer paso que tenemos que dar, es el de añadir nuestros hosts, bien sea por autodescubrimiento o bien de manera manual. El problema con el que nos encontramos es que, el OEM12c no tiene instalados los agentes para los distintos hosts de las arquitecturas, por lo que tenemos que hacerlo nosotros manualmente
ScreenHunter_114 Jul. 26 09.57

La actualización en modo on-line no funciona, con lo que, debemos de ir a la actualización «off-line»
En la actualización off-line, el sistema nos aconseja el bajarnos el catálogo de agentes que podemos utilizar y «cargarlos» al OEM . El problema es que, tampoco funciona , devolviendonos el siguiente error:

«The uploaded catalog file does not contain the following files: «components.xml, aru_targets.xml, patch_recommendations.xml, certifications.xml, aru_releases.xml, aru_component_releases.xml, aru_languages.xml, aru_product_groups.xml, aru_platforms.xml, aru_product_releases.xml, aru_products.xml»»

¿Que podemos hacer?
La solución será el instalar el catálogo de agentes desde linea de comandos. Los pasos detallados de lo que debemos de hacer es:

1- Vamos a la pestaña «Configurar-> extensibilidad-> Actualizacion automatica , alli tendremos que cambiar el modo «online» por «oflline»

Una vez hecho eso, OEM12c nos indicará en un desplegable donde podemos descargar el último catálogo de agentes,en mi caso fué https://updates.oracle.com/Orion/Download/download_patch/p9348486_112000_Generic.zip

Lo que tendremos que hacer es abrir una consola de sistema operativo para descargar los agentes y añadirlos al catalogo de OEM, para esto haremos
ya en modo consola y desde nuestro usuario de OEM12c hacemos:

cd /u01/app/oracle/libreria_instalacion/
wget https://updates.oracle.com/Orion/Download/download_patch/p9348486_112000_Generic.zip
cd  $OEM_HOME
$OEM_HOME/bin/emcli login -username=SYSMAN
** Introducimaos contraseña de OEM 
./emcli import_update_catalog -file=/u01/app/oracle/libreria_instalacion/p9348486_112000_Generic.zip  -omslocal

COmo podéis ver, hay un directorio «libreria_instalacion» del que no hemos hablado antes, este directorio lo hemos creado previamente en el servidor y lo hemos dado de alta en las opciones
Configurar->Provisionamiento y aplicacion de parches -> Biblioteca de software

ScreenHunter_115 Jul. 29 12.52

Con esto ya tenemos nuestros agentes en el catálogo, ahora ya podemos descargarlos e instalarlos.
Esta parte ya funciona bien desde la actualizacion «online», con lo que volveremos a
ScreenHunter_115 Jul. 26 10.05

Y seleccionaremos «online».
Una vez activado la instalacion online, se conectará a el repositorio de oracle y tendremos disponibles todos los agentes, lo siguiente será seleccionarlos para la descarga y posteriormente para la instalacion
ScreenHunter_113 Jul. 26 09.40
ScreenHunter_116 Jul. 26 10.50

Instalando Oracle 12c en linux

A primeros de este mes Oracle anuncio el lanzamiento de la versión 12c de Oracle.En el post de hoy vamos a ver como se hace la instalación para Oracle Linux 6.4
La mayor ventaja de el uso de Oracle Linux va a ser que como veremos la instalación será practicamente limpia.

Los prerrequisitos van a ser los mismos que en versiones anteriores de Oracle, instalaremos un Oracle Linux, y crearemos un usuario oracle y un grupo oinstall

La primera imagen que vemos es una pantalla con los colores corporativos y un aspecto mas renovado.

1

Tras esta pantalla, nos viene la tipica imagen en la que nos solicita nuestro usuario de soporte. Nosotros le diremos que no queremos actualizaciones de Oracle.
2

También omitiremos la opcion de registrarla automáticamente con metalink.

3

Tras estas primeras pantallas, llegamos a la opción de crear base de datos, instalar o actualizar, nosotros vamos a probar la instalación en un servidor limpio.En otra entrada probaremos como funciona la actualización, aunque, siempre soy mas partidario de instalar en otro entorno y actualizar despues la base de datos

4

En la siguiente pantalla nos encontramos una opcion nueva y , para mi bastante sorprendente, «escritorio o servidor» .
Sinceramente no se que puede ser una «instalacion de escritorio» de oracle, con lo que, directamente iremos a servidor
5

La siguiente pantalla es bastante mas interesante, además de las opciones clásicas de base de datos «alone» o «Rac», nos aparece la nueva entrada de «Rac OneNode»
En esta entrada haremos una instalación «alone», dejando la de RAC ONE NODE para otra entrada.
Como aperitivo, os diré que el producto Rac One Node es la respuesta de Oracle a la necesidad de una alta disponibilidad «activo/pasivo».
6

Seleccionamos instalación avalada
7

En ingles
8

y Enterprise ( como decía mi abuela, «ande o no ande la burra grande»)
9

En la siguiente pantalla al fin empezamos a elegir opciones de la base de datos.
Al tratarse de una primera instalación de base de datos de pruebas en un entorno virtual vamos a ir a lo fácil y elegiremos una instalación en filesystem.

instalacion oracle 12c paso 9

Indicamos donde queremos el orainventory y el grupo de instalacion (oinstall)
instalacion oracle 12c paso  10
Y el tipo de base de datos (en nuestro caso es indiferente)
instalacion oracle 12c paso 11

En el paso 13 además del SID nos encontramos con una opción interesante, la creación de un contenedor de bases de datos, nosotros vamos a dejarlo como nos pide por defecto

instalacion oracle 12c paso 13
Asignamos la memoria y el juego de caracteres
instalacion oracle 12c paso 13

Y la ubicación de los datafiles (en nuestro caso lo haremos sencillo indicándole que queremos un directorio en el filesystem)
instalacion oracle 12c paso 14

Nosotros no vamos a registrarla en ningun cloud control, ni activaremos la FRA (lo haremos después )

instalacion oracle 12c paso 15
instalacion oracle 12c paso 16

La siguiente pantalla es la de las contraseñas, dado que es un entorno de pruebas, vamos ha hacer la poco recomendable opción de poner en todas la misma
instalacion oracle 12c paso 17 instalacion oracle 12c paso 17[/caption]instalacion oracle 12c paso 18

Al fin llegamos al punto 20, el punto de las comprobaciones, aquí veremos si tenemos todos los parámetros del kernel y paquetes.
instalacion oracle 12c paso 20

Tras esto llegamos a la ventana de resumen, esta version 12c tiene dos mejoras considerables

  • Opcion de editar directamente los puntos que te puedan parecer incorrectos
  • Opcion de generar un fichero de respuesta con las opciones que has creado de la base de datos

instalacion oracle 12c paso 20

Con toda esta información oracle se pondrá a instalar hasta la habitual pantalla en la que nos pide que ejecutemos como root 2 scripts en el filesystem
21

22

tras esto ya solamente queda que cree nuestra base de datos y ya tendremos nuestra version de Oracle 12c funcionando

Problemas con SYSAUX, ocupación de AWRs

Hoy vamos a lidiar con un problema muy común en las bases de datos de Oracle que es el tamaño del tablespace SYSAUX.
El tablespace SYSAUX es uno de los tablespaces especiales de la base de datos con el que no podemos jugar alegremente, la principal característica que tiene de cara a la administración de base de datos es que ,el espacio que le demos se ha perdido, es decir, no va ha haber forma de hacerlo mas pequeño (al menos en mi caso siempre ha habido un «pero» que lo imposibilita).

Como decía al principio es junto con el SYSTEM un tablespace muy especial, y los motivos de su tamaño pueden ser varios,hoy vamos a centrarnos en como vaciar un poco el tamaño debido el AWR.

Lo que, lo primero que tendremos que hacer es ver cual es el componente que esta llenándonos el tablespace.
Para ello tenemos la consulta

set linesize 100;
column OCCUPANT_NAME format a20;
column OCCUPANT_DESC format a60;
column Mb format 999.99
SELECT occupant_name,space_usage_kbytes/1024 Mb,occupant_desc
  FROM V$SYSAUX_OCCUPANTS
  order by space_usage_kbytes  desc;

OCCUPANT_NAME             MB OCCUPANT_DESC
-------------------- ------- ------------------------------------------------------------
SM/AWR                780.06 Server Manageability - Automatic Workload Repository
SM/OPTSTAT            333.00 Server Manageability - Optimizer Statistics History
LOGMNR                 91.63 LogMiner
XDB                    85.50 XDB
SM/ADVISOR             65.56 Server Manageability - Advisor Framework
WM                      6.38 Workspace Manager
SM/OTHER                6.25 Server Manageability - Other Components
SMON_SCN_TIME           5.31 Transaction Layer - SCN to TIME mapping
EXPRESSION_FILTER       3.88 Expression Filter System
JOB_SCHEDULER           2.81 Unified Job Scheduler
EM_MONITORING_USER      2.75 Enterprise Manager Monitoring User
SQL_MANAGEMENT_BASE     1.69 SQL Management Base Schema
PL/SCOPE                1.56 PL/SQL Identifier Collection
XSOQHIST                1.38 OLAP API History Tables
AO                      1.38 Analytical Workspace Object Table
LOGSTDBY                1.38 Logical Standby
STREAMS                 1.00 Oracle Streams
AUTO_TASK                .31 Automated Maintenance Tasks
ORDIM/ORDDATA            .00 Oracle Multimedia ORDDATA Components
ORDIM/ORDPLUGINS         .00 Oracle Multimedia ORDPLUGINS Components
ORDIM/SI_INFORMTN_SC     .00 Oracle Multimedia SI_INFORMTN_SCHEMA Components
HEMA
EM                       .00 Enterprise Manager Repository
TEXT                     .00 Oracle Text
ULTRASEARCH              .00 Oracle Ultra Search
ORDIM                    .00 Oracle Multimedia ORDSYS Components
SDO                      .00 Oracle Spatial
STATSPACK                .00 Statspack Repository
TSM                      .00 Oracle Transparent Session Migration User
XSAMD                    .00 OLAP Catalog
AUDIT_TABLES             .00 DB audit tables
ULTRASEARCH_DEMO_USE     .00 Oracle Ultra Search Demo User

Como podemos ver, son muchas las cosas que se guardan en SYSAUX, pero, en nuestro caso, está bastante claro que, la mayoría de la ocupación es debida a los AWR.

Nuestro siguientes pasos van a ser:

  • Determinar que es lo que nos ocupa el espacio
  • Mirar si la causa esta en la retención
  • Mirar si la causa está en los AWR guardados
  • Mirar si la causa está en las lineas «huerfanas» de las Active Session History

Nuestro objetivo va a ser liberar espacio dentro de SYSAUX , no disminuir el tamaño de este tablespace ya que, como decía al principio esto es prácticamente una misión imposible.

Determinar que es lo que ocupa espacio

El siguiente paso será el buscar la información del AWR, para ello el propio Oracle tiene una utilidad que podemos llamar desde sqlplus

 SQL> @$ORACLE_HOME/rdbms/admin/awrinfo.sql

Este sql nos genera un informe con unos apartados muy interesantes que nos servirán para encontrar de donde liberar espacio.

Mirar si la causa esta en la retención

************************************                                                                         
(2) Size estimates for AWR snapshots                                                                          
*************************************                                                                                                                                                                                    
| Estimates based on 60 mins snapshot INTERVAL:                                                               
|    AWR size/day                           31.0 MB (1,324 K/snap * 24 snaps/day)                             
|    AWR size/wk                           217.2 MB (size_per_day * 7) per instance                                                                                                                                     
| Estimates based on 24 snaps in past 24 hours:                                                               
|    AWR size/day                           31.0 MB (1,324 K/snap and 24 snaps in past 24 hours)              
|    AWR size/wk                           217.2 MB (size_per_day * 7) per instance                           
|

Aqui podemos ver el tamaño estimado que ocupa nuestra información de los AWR, en función del periodo de retencion que tengamos de los AWR tendremos la ocupación en la base de datos.
Cuando sabemos cuanto ocupa cada AWR y cuanto hacemos al día, tenemos que saber cuantos dias guardamos para ver si la ocupación es correcta, para ello haremos :

SQL> SELECT retention FROM dba_hist_wr_control;

RETENTION
---------------------------------------------------------------------------
+00007 00:00:00.0

En mi caso por ejemplo, la retencion es de 7 días.

Mirar si la causa está en los AWR guardados

Otro de los problemas que podemos tener es que el número de AWR que mantenemos guardados por razones históricas en la instancia, en el informe que acabamos de obtener también aparece un apartado con las últimas 50 snapshots de la base de datos, el eliminar imágenes antiguas también nos ayudará a liberar espacio.

  • Mirar si la causa está en las lineas «huerfanas» de las Active Session History
  • Algunas veces el Active Session History (ASH) guarda filas que no pertenecen a ningún AWR,esto hace que el ASH ocupe gran parte del espacio dedicado al AWR, la forma de saber si esto nos está sucediendo es mirar nuestro informe en el apartado

    
    **********************************
    (3a) Space usage by AWR components (per database)
    **********************************
    
    COMPONENT        MB  % AWR  KB_PER_SNAP MB_PER_DAY MB_PER_WEEK TABLE% : INDEX%                                
    --------- --------- ------ ------------ ---------- ----------- ----------------                               
    FIXED         131.5   50.6          670       15.7       109.9    52% : 48%                                   
    EVENTS         37.9   14.6          193        4.5        31.7    43% : 57%                                   
    SQLPLAN        25.0    9.6          127        3.0        20.9    72% : 28%                                   
    ASH            18.3    7.0           93        2.2        15.3    89% : 11%                                   
    SQL            11.0    4.2           56        1.3         9.2    60% : 40%                                   
    SPACE          10.3    4.0           53        1.2         8.6    61% : 39%                                   
    SQLTEXT         5.2    2.0           26        0.6         4.3    96% : 4%                                    
    SQLBIND         0.8    0.3            4        0.1         0.6    50% : 50%                                   
    RAC             0.6    0.2            3        0.1         0.5    50% : 50%                                   
    

    Si la línea de ASH ocupa mas de un 1% probablemente sea la causa de nuestra ocupación.
    Mediante la siguiente consulta podemos saber si es nuestro caso.

    SELECT COUNT(*) huerfanas
    FROM wrh$_active_session_history a
    WHERE NOT EXISTS
      (SELECT *
      FROM wrm$_snapshot
      WHERE snap_id       = a.snap_id
      AND dbid            = a.dbid
      AND instance_number = a.instance_number
      );
    
    
     HUERFANAS
    ----------
           116
    
    

    Si aparece alguna línea podemos borrarlas con

    delete  
    FROM wrh$_active_session_history a
    WHERE NOT EXISTS
      (SELECT *
      FROM wrm$_snapshot
      WHERE snap_id       = a.snap_id
      AND dbid            = a.dbid
      AND instance_number = a.instance_number
      );
    

    Con estas tres acciones, si elproblema de laocupación del SYSAUX es debido a el AWR tendremos que haberpodido liberar el espacio suficiente para que la base de datos pueda seguir trabajando sin problemas de espacio.

    Aún así, el tema de la ocupación del SYSAUX es un tema bastante complejo, con lo que, como siempre, el mejor sitio para buscar soluciones es soporte de Oracle, aquí tenéis un pequeño listado de algunas de las notas que puede que os aplique y cuyo contenido tenéis en la página de soporte

    • AWR Data Uses Significant Space in the SYSAUX Tablespace [ID 287679.1]
    • Suggestions if your SYSAUX Tablespace grows rapidly or too large [Document 1292724.1]
    • General Guidelines for SYSAUX Space Issues [Document 552880.1]
    • SYSAUX Grows Because Optimizer Stats History is Not Purged [Document 1055547.1]
    • Space issue in Sysaux tablespace due to Unexpected AWR size [Document 1218413.1]
    • Space Management In Sysaux Tablespace with AWR in Use [Document 287679.1]
    • SYSAUX Tablespace Grows Heavily Due To AWR [Document 852028.1]

    O alguna entrada muy interesante en algunos blogs como es

    Why is my SYSAUX Tablespace so Big? Statistics_level=ALL