domingo, 2 de octubre de 2016

Ejemplo con DBRM - Database Resource Manager


    La distribución de los recursos no es nueva dentro de una base de datos Oracle, donde existe la posibilidad de distribuir recursos de CPU por medio de DataBase Resource Manager.
En Exadata tenemos también IORM que hablare en otro post

Acá un ejemplo de como implementar DBRM
Se crea un Grupo Consumidor. Se crean las Directivas. Una con utilización del 10%, otra 50%, otra 10% y para otros 10% de utilización de recursos

****************************************
IMPLEMENTANDO RESOURCE MANAGER
****************************************
Limpiar los cambios de las areas pendientes:
exec dbms_resource_manager.clear_pending_area();
Las areas pendientes son creadas:
exec dbms_resource_manager.create_pending_area();
Se crean los Consumer Group
exec dbms_resource_manager.create_consumer_group( 'USUARIO_SQL_GROUP', 'Sessions Usuarios SQL');
exec dbms_resource_manager.create_consumer_group( 'USUARIO_PROCESO_GROUP', 'Sessions Usuarios Proceso');
exec dbms_resource_manager.create_consumer_group( 'USUARIO_SANDB_GROUP', 'Sessions Usuarios Sandb');

Asignar usuarios aun Consumer Group
exec DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING (DBMS_RESOURCE_MANAGER.ORACLE_USER, 'SCOTT', 'USUARIO_SQL_GROUP');
exec DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING (DBMS_RESOURCE_MANAGER.ORACLE_USER, 'HR', 'USUARIO_PROCESO_GROUP');
 
Crear un nuevo resource plan, usando los siguientes PL/SQL.
exec dbms_resource_manager.create_plan( 'DB_ODS_PLAN','Plan for database ODS');
Se crean las Directivas. Una con utilizacion del 10%, otra 50%, otra 10% y para otros 10% de utilización de rescursos
exec dbms_resource_manager.create_plan_directive( 'DB_ODS_PLAN', 'USUARIO_SQL_GROUP', 'Percentage of CPU for APP_1: Usuarios', mgmt_p1 => 10, max_utilization_limit => 40);
exec dbms_resource_manager.create_plan_directive( 'DB_ODS_PLAN', 'USUARIO_PROCESO_GROUP', 'Percentage of CPU for APP_2: Procesos', mgmt_p1 => 50, max_utilization_limit => 100);
exec dbms_resource_manager.create_plan_directive( 'DB_ODS_PLAN', 'USUARIO_SANDB_GROUP', 'Percentage of CPU for APP_3: Sandb', mgmt_p1 => 30, max_utilization_limit => 50);
exec dbms_resource_manager.create_plan_directive( 'DB_ODS_PLAN', 'OTHER_GROUPS', 'Percentage of CPU for OTROS', mgmt_p1 => 10, max_utilization_limit => 100);

Se Valida el Plan y luego se Crea
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

Finalmente Se asigna el Plan a la Base de Datos:
alter system set resource_manager_plan = 'DB_ODS_PLAN' sid='*';

También puedes limitar la cantidad de CPU asignados a la instancia.
Se denomina Instance Caging en 11gR2

alter system set cpu_count=16  sid='*';

****************************************
CONSULTANDO RESOURCE MANAGER
****************************************
Ver todos los resource plans existentes:
SELECT plan, comments, status FROM dba_rsrc_plans;

Revisar los actuales active plans:
SELECT name, is_top_plan FROM v$rsrc_plan;

Consumer groups asignados a usuarios o roles:
SELECT * FROM dba_rsrc_consumer_group_privs;

Actuales consumer groups para sesiones:
set linesize 1000
SELECT sid, serial#, username, resource_consumer_group FROM v$session;

*********************************************************************
Script para generar Carga y probar la utilización de recursos   *****
*********************************************************************
Generar Carga:

DECLARE
    sqrtval NUMBER := 0;
BEGIN
    FOR idx1 IN 1..1000000
        LOOP
            FOR idx2 IN 1..1000000
                LOOP
                    SELECT (SQRT(idx2/idx1)) INTO sqrtval FROM DUAL;
                END LOOP;
        END LOOP;
END;
/

martes, 26 de abril de 2016

Oracle SuperCluster

Imagen: http://www.slideshare.net/OracleHardware/creating-a-maximum-availability-architecture-with-sparc-super-cluster


Oracle SuperCluster es un completo sistema de ingeniería utilizado para consolidación de bases de datos y aplicaciones Oracle. Entrega un rendimiento extremo, disponibilidad y eficiencia.

En su descripción general Oracle indica:
·         Ofrece un rendimiento extremo y 10 veces mejor precio/rendimiento que una solución basada en IBM Power7 + comparable.
·         Basada en el servidor de bases de datos más rápido del mundo, el almacenamiento de bases de datos más rápido del mundo, y el procesador más rápido del mundo.
·         Asegura la mayor disponibilidad, sin fallas, y cero tiempo de inactividad por mantenimiento.
·         Brinda la mayor eficiencia: hasta 10 veces mayor compresión de bases de datos, 3 veces menos gastos administrativos y 5 veces más rápida implementación que los sistemas hechos por usted mismo.
·         Consolida los OLTP y las bases de datos de almacenes de datos más grandes y críticos para la misión en el mismo sistema, por lo que es ideal para las aplicaciones más grandes de toda la empresa.
·         Integra los mejores servidores, almacenamiento, redes y software de Oracle.

Citado de: http://www.oracle.com/lad/engineered-systems/supercluster/supercluster-t5-8/overview/index.html

Todo lo indicado es muy bueno de un producto. Sin embargo, puedo indicar que he tenido la oportunidad de implementar un SuperCluster Full, formateando sus celdas de disco Exadata e instalando en el dominio de base de datos versiones de BD 11g y 12c, tanto en RAC como Standalone las cuales se comportan muy bien sobre Solaris (Un T5-8 Ejecuta Oracle Solaris 10 y 11, y admite Oracle Solaris 8 y 9).
Como toda instalación tiene sus mañas y más que nada porque hay distintos Bug que te afectan, donde hay que aplicar sus respectivos parches al GI y al OH. Ahora, hay que googlear harto y otro tanto en las páginas de  Support, pero todos los errores tienen solución.
A diferencia de un Exadata (que es ideal solo para BD Oracle) acá tenemos un sistema de ingeniería completo e integrado donde no solo podemos correr Zonas con base de datos, sino también tenemos dominios para ejecutar Zonas con Aplicaciones (Ej Weblogic, Bus OSB, etc). Sobre el almacenamiento para las bases de datos tenemos disponible las Celdas Exadata y para aplicaciones un Oracle ZFS Storage, todo conectado por redes InfiniBand donde se obtienen excelentes resultados.


jueves, 21 de enero de 2016

ORACLE EXADATA

      Oracle Exadata  es un servidor de Ingeniería de Sistema altamente optimizado para el uso con Oracle Database. Exadata proporciona un rendimiento de procesamiento de I/O y SQL extremo para Oracle Database al aprovechar una arquitectura masivamente paralela para activar una red de almacenamiento compartida para las implementaciones de Oracle Database 11g y 12c. Exadata es una combinación de software y hardware que se utiliza para almacenar y acceder a Oracle Database. Proporciona servicios de almacenamiento que tienen en cuenta bases de datos, como la capacidad de descargar el procesamiento de base de datos desde el servidor de base de datos al almacenamiento, y lo hace con transparencia para el procesamiento SQL y sus aplicaciones de base de datos. Exadata proporciona grandes mejoras de rendimiento, con escalabilidad de I/O ilimitada, es fácil de usar y administrar, y proporciona disponibilidad y confiabilidad para misión críticas.