martes, 13 de noviembre de 2012

RAC : Opcion para verificar la "salud" de la Base de Datos en version 11.2.0.3

El otro día estaba haciendo una instalación de los binarios del Clusterware 11.2.0.3 y me tope que ahora con la herramienta cluvfy en 11.2.0.3 viene con una opción de verificar la "salud" de la Base de Datos.Para que esta opcion funcione tienes que instalar el usuario cvusys asi como el rol cvusapp , existe un script para poder hacer esto y se encuentra en el directorio CLUVFY_HOME/cv/admin.

Como el usuario oracle corre el script $CLUVFY_HOME/cv/admin/cvusys.sql para crear el usuario, el rol y los grants necesarios para que funcione. Este usuario tendra el tablespace por defacto que tiene la Base de Datos, si no quieres que tenga ese tablespace modifica este script para que lo cree en el tablespace que deseas..

oracle@servidor1.localdomain [TESTDB1] /home/oracle
oracle $ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),501(vboxsf),54322(dba)

TESTDB1> @cvusys.sql

User dropped.


Role dropped.

Enter password for user cvusys 
'Creating user cvusys...'

User created.


Grant succeeded.


Role created.


Grant succeeded.

.
.
.

Una vez que hayas inicializado el ambiente para el usuario de la Base de Datos cvusys verifica que como el usuario de OS grid tengas la variable de ambiente $ORACLE_HOME con el GRID_HOME correcto.

grid@servidor1.localdomain /home/grid
oracle $ id
uid=54324(grid) gid=54321(oinstall) groups=54321(oinstall),501(vboxsf),54322(dba),54323(asmadmin),54325(asmoper)

grid@servidor1.localdomain /home/grid
oracle $ echo $ORACLE_HOME
/mount/oracle/11.2.0.3/grid

Una de las cosas que note fue que si no tienes el GRID_HOME correcto o le pasas el nombre de tu Base Datos en mayúsculas cuando el nombre de la Base de Datos es en minúsculas, te puede arrojar el error PRVG-11005, esto aunque cuando veas el log en $CLUVFY_HOME/cv/log el comando srvctl config database se esta ejecutando correctamente.

grid@servidor1.localdomain /home/grid
oracle $ cluvfy comp healthcheck -collect database -db TESTDB -deviations -save -savedir /home/grid/audit

ERROR:
PRVG-11005 : Database  "TESTDB" is not defined in this cluster


grid@servidor1.localdomain /home/grid/cv/log
root $ more cvutrace.log.0
.
.
.
[17455@servidor1.localdomain] [Worker 0] [ 2012-11-04 22:41:33.595 EST ] [VerificationCommand.execute:232]  Formatted exectask output is:
 <CV_CMD>/mount/oracle/11.2.0.3v1/rdbms/bin/srvctl config database -d TESTDB -a </CV_CMD><CV_VAL>Database unique name: TESTDB
Database name: TESTDB
Oracle home: /mount/oracle/11.2.0.3v1/rdbms
Oracle user: oracle
Spfile: +DATA/TESTDB/PARAMETERFILE/spfileTESTDB.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: TESTDB
Database instances: TESTDB1,TESTDB2
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Database is enabled
Database is administrator managed
</CV_VAL><CV_VRES>0</CV_VRES>Exectask: runexe was successful</CV_LOG><CV_ERES>0</CV_ERES>
.
.
.

Cuando usas esta utilería , puedes correrla contra todas las Base de Datos en el cluster si no usas la opción de , lo único que si te digo es que tienes que crear el usuario cvusys en cada una de las Base de Datos del cluster. De la misma manera puedes verificar cuales son las mejores practicas recomendadas por Oracle y como tu Base de datos se desvian de estas con las opciones [-bestpractice|-mandatory] [-deviations].

En este caso , corri la utileria con el nombre de la Base de datos en minúsculas con la opción de mejores practicas (-bestpractice) y termino correctamente.

grid@servidor1.localdomain /home/grid/cv/log
root $ cluvfy comp healthcheck -collect database -db testdb -bestpractice -deviations -save -savedir /home/grid/audit/

Verifying Database "testdb"

Please specify password for user "cvusys" :

Verifying Database Best Practice for "testdb"

Verifying JVM configuration for database ...not met
Verifying Java Role Count ...not met
Verifying Duplicate SYS or SYSTEM Schema Objects ...not met
Verifying Users Granted CONNECT Role ...not met
Verifying DB Log Mode ...not met



******************************************************************************************
        Summary of environment
******************************************************************************************

Date (mm/dd/yyyy)    :  11/05/2012
Time (hh:mm:ss)      :  22:37:28
Cluster name         :  cluster-test
Clusterware version  :  11.2.0.3.0
Grid home            :  /mount/oracle/11.2.0.3/grid
Grid User            :  grid
Operating system     :  Linux2.6.18-238.el5
Database1            :  Database name     -  testdb
                        Database version  -  11.2.0.3
                        Database home     -
                        /mount/oracle/11.2.0.3v1/rdbms

******************************************************************************************
Database recommendation checks for "testdb"
******************************************************************************************
.
.
.

Ahora lo que tienes que hacer es ir al directorio donde guardaste el reporte y ver las desviaciones de las mejores practicas recomendadas por Oracle. Aquí es donde yo te diria que verifiques y tengas cuidado con las recomendaciones que te arroja, ya que una de las recomendaciones era que estaba corriendo en modo ARCHIVE_LOG vs la recomendación NOARCHIVELOG, espero que puedas ver en donde no estoy de acuerdo con este reporte, pero si no estas verificando la salud de tus Base de Datos después de una instalación nueva, esta es una gran manera de empezar y te ayudara en un futuro a ver que es lo que puedo hacer para mejorar mi ambiente.

__________________________________________________________________________________________

Verification Check        :  Duplicate SYS or SYSTEM Schema Objects                       
Verification Description  :  Checks for duplicate SYS or SYSTEM schema objects            
Verification Result       :  NOT MET                                                      
Verification Summary      :  Check for Duplicate SYS or SYSTEM Schema Objects failed      
Additional Details        :  If any duplicate objects were found in the SYS and SYSTEM    
                             schemas, refer to articles in the references section. Read   
                             the exceptions carefully before taking action.               
References (URLs/Notes)   :  https://support.oracle.com/CSP/main/article?cmd=show&type=N  
                             OT&id=1030426.6                                              

Node                Status    Expected Value                Actual Value                  
------------------------------------------------------------------------------------------

testdb              FAILED    sys_duplicate_obj = 0         sys_duplicate_obj = 4         

__________________________________________________________________________________________

Verification Check        :  INVALID objects in the application related schemas           
Verification Description  :  Checks for the presence of INVALID objects in the            
                             application related schemas (non SYS and SYSTEM)             
Verification Result       :  NOT MET                                                      
Verification Summary      :  Check for INVALID objects in the application related         
                             schemas failed                                               
Additional Details        :  Investigate invalid objects in the application related       
                             schemas (non SYS and SYSTEM).                                

Node                Status    Expected Value                Actual Value                  
------------------------------------------------------------------------------------------

testdb              FAILED    app_invalid_obj = 0           app_invalid_obj = 5           

lunes, 5 de noviembre de 2012

RAC : Secuencia de Arranque del Clusterware de Oracle 11gR2

Para cualquiera que haya trabajado con la versión 11gR2 del Clusterware de Oracle se ha topado con el diagrama de arranque de esta tecnología, y la verdad desde mi punto de vista es realmente difícil de ver y entender, y no es "KISS" , Keep It Simple Stupid por sus siglas en ingles.

Luego hay un segundo diagrama, que ese esta mucho mejor, pero de igual manera, la calidad de este segundo diagrama es de muy mala calidad , y para mi muy mala vista ,no me ayuda en nada.

Si quiero mencionar que no estoy poniendo nada nuevo en este post que no puedas encontrar en el documento de MOS 1053147.1, simplemente lo estoy poniendo en un formato que sea mas legible y fácil de entender.

Dale click a la imagen para verla en su tamaño real:


Las descripciones de abajo son una traducción del mismo documento de MOS

Unix INIT manda a llamar a init.ohasd (con respwan) , que a su vez manda a llamar los procesos OHASD (Oracle High Availability Services Deamon, por sus siglas en ingles) . Este demonio genera 4 procesos:

Nivel 1 .- OHASD genera :

    cssdagent          - Agente responsable de generar  CSSD.
    orarootagent     - Agente responsable de administrar todos los recursos ohasd del usuario root.
    oraagent           - Agente responsable de administrar todos los recursos ohasd del usuario oracle o grid 
                              (Dependiendo bajo que usuario hayas instalado los binarios del clusterware).
    cssdmonitor      - Monitorea el CSSD y la "salud" del nodo (así como el agente cssdagent).

Nivel 2 .- El agente orarootagent de OHASD genera:

    CSDD (ora.cssd)        - Servicios de Sincronizacion del Cluster (Cluster Synchronization Services)
    CRSD(ora.crsd)         - Demonio primario responsable de administrar los recursos del cluster.
    CTSSD(ora.ctssd)      - Demonio de Sincronizacion de Servicios del Tiempo del Cluster
    Diskmon(ora.diskmon)
    ACFS (ASM Cluster File System) Drivers

Nivel 3 .-  CRSD genera

    orarootagent     - Agente responsable de administrar todos los recursos crsd del usuario root.
    oraagent           - Agente responsable de managing todos los recursos crsd del usuario oracle o grid.


Nivel 4 .- CRSD orarootagent genera:

    Network resource      - Para monitorear la Red Publica
    SCAN VIP(s)           - Single Client Access Name Virtual IPs
    Node VIPs               - IP Virtual del Nodo,Uno por Nodo
    ACFS Registery       - Para montar el Sistema de Archivos Cluster ASM (ASM Cluster File System
    GNS VIP (opcional) - VIP para GNS

  Nivel 4 .- CRSD oraagent spawns:

    ASM Resource   - Recurso de Instancia(s) de ASM
    Diskgroup           - Usado para administrar/monitorear grupos de discos de ASM .
    DB Resource      - Usado para administrar/monitorear las BD's y las instancias
    SCAN Listener   - Listener para SCAN, escuchando la IP Virtual del  SCAN
    Listener               - Listener del Nodo, escuchando la VIP del Nodo.
    Services              - Usado para administrar y monitorear servicios
    ONS                   - Servicio de Notificación de Oracle (Oracle Notification Service)
    eONS                 - Servicio de Notificación de Oracle Mejorado (Enhanced Oracle Notification Service)
    GSD                   - Para compatibilidad hacia atrás con 9i
    GNS (opcional)   - Servicio de Nombres de Gird (Grid Naming Service) - Realiza resolución de nombres