Newsletter - Agosto 2011 Manejo de resultados en memoria para ambiente de base de datos de toma de decisiones: SQL Query Result Cache Contenido Por: Ing. Luis Alonzo alonzo@datum.com.gt Página: 1 SQL Query Result Cache 3 Nuevas Características SQL DEVELOPER 3.0 11 Oracle Statspack 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Editores Generales Teléfono: (502)2364-5300 Fax: (502)2364-5311 Pagina 1/10 Email. info@datum.com.gt Daniel Cacía Luis Cordón Gerber Bautista Debbie Moran Esta nueva característica disponible en Oracle Database 11g, orientada para un ambiente de datawarehouse, pero que puede utilizarse para cualquier ambiente de base de datos, permite reutilizar el resultado de una consulta, siempre que este resultado no ha sido invalidado por otras transacciones. Francisco Barrundia Autores Contribuyentes Luis Alonzo Juan Luis Rodríguez Emilio Méndez Esta nueva característica, no debe confundirse con reutilizar los bloques en memoria del cache de datos (db_cache_size). Existe una nueva área de memoria definida por el parámetro result_cache_max_size, para mantener los registros que devuelve una consulta y que son candidatos a ser reutilizados por otra sesión, sin necesidad de volver a ejecutar la consulta. Provee mayor escalabilidad al reducir el uso de memoria. No todas las consultas son candidatas a colocar su resultado en esta área de memora. Se recomienda para el tipo de consultas que deben procesar y/o extraer una gran cantidad de registros, pero que devuelven una fracción muy pequeña de estos; por ejemplo consultas con funciones de agrupación. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 1 También, no todas las consultas pueden colocar su resultado en esta área de memoria, ya que hay restricciones respecto al tipo de consulta: no se colocará el resultado al SQL Query Result Cache cuando la consulta involucres valores de una secuencia (currval, nextval), funciones como current_date, sysdate, entre otras, y si para obtener el resultado se realizo lectura a bloques o segmentos de undo. El uso de esta característica puede hacerse de forma manual, a través de hints en las consultas que queremos se coloque su resultado en esta área de memoria: select /*RESULT_CACHE*/ … select /*NO_RESULT_CACHE*/ … O bien de forma obligatoria para todas las consultas que se ejecuten, utilizando el parámetro de base de datos result_cache_mode con valor a FORCE. Si es una base de datos con aplicaciones OLTP y OLAP mezclados, por ejemplo transaccional en el día, procesamientos de batch en la noche, y reportes especializados periódicamente, se recomienda un manejo manual. Si es una base de datos únicamente datawarehouse, es recomendado utilizar el modo obligatorio. Una forma adicional de manejar los resultados en el SQL Query result cache introducida en 11gR2 es, a nivel de una propiedad en la tabla, la cual puede ser modificada dinámicamente: create table <table_name> RESULT_CACHE (MODE DEFAULT); alter table <table_name> RESULT_CACHE (MODE FORCE); En el modo DEFAULT a nivel de la tabla, la colocación de los resultados en el SQL Query result cache dependerá del parámetro de base de datos result_cache_mode; el modo FORCE a nivel de la tabla tomara precedencia del valor del parámetro result_cache_mode. El espacio asignado por defecto al SQL Query Result Cache es 25% de lo asignado a la instancia de base de datos (memory_target), y puede tener como máximo 75% de lo asignado al shared pool. Para las consultas que almacenan sus datos en el SQL Query Result Cache y hacen uso de tablas externas a través de dblinks para obtener su resultado, la instancia de base de datos no puede llevar control de la invalidación del resultado en las bases de datos externas. En este caso es necesario definir un parámetro (result_cache_remote_expiration) que indica el tiempo máximo de expiración de un resultado, cuando se ha utilizado consultas a objetos externos. Es necesario tomar en cuenta que esta área de memoria aun no es afinada automáticamente; cuando alcanza su valor máximo no continuará creciendo. A través del paquete dbms_result_cache es posible consultar su uso, estado actual, invalidar resultados asociados a un objeto en particular, o limpiar todo su contenido. Ejemplos de su uso: select dbms_result_cache.status from dual; exec dbms_result_cache.memory_report; exec dbms_result_cache.flush; Una característica relacionada permite definir del lado del cliente un área de resultados similar al SQL Query result cache del lado del servidor: OCI Client Query Cache. Esta característica es configurable a través de parámetros de base de datos o de parámetros en el archivo sqlnet.ora del lado del cliente. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 1 Y para concluir, también es posible colocar el resultado de funciones en el result cache, siempre que la función tenga definida la directiva RESULT_CACHE en su área de declaración: Create or replace function myfunction (id number) return number RESULT_CACHE is … Begin … End; Para las funciones, su resultado será colocado en el result cache si el tipo de dato retornado no es de los tipos LOB, Ref cursor, colección de objetos o registros, entre otras restricciones. En resumen esta nueva característica optimiza el uso de memoria, del lado del servidor y del lado del cliente, permitiendo una mayor manejabilidad y escalabilidad para el servidor de base de datos Oracle y sus aplicaciones. Consultas o comentarios, lalonzo@datum.com.gt Tip técnico del día: Como puedo ver el tamaño de un índice, en mi base de datos? Podemos ver el tamaño de cualquier objeto en la base de datos, ya sea índice o tabla con el siguiente query: SELECT sum(bytes)/1048576 Megs, segment_name FROM user_extents WHERE segment_name = '&nombre del indice' GROUP BY segment_name / Esta sentencia nos da los megabytes locales asignados al índice que nos interesa Por Lic. Francisco Barrundia fbarrundia@datum.com.gt 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 2 Nuevas características de SQL Developer 3.0 Por: Ing. Juan Luis Rodríguez jrodrigez@datum.com.gt Oracle SQL Developer es una herramienta gráfica gratuita para desarrollo de bases de datos. Con SQL Developer se puede visualizar objetos, ejecutar y depurar scripts e instrucciones SQL. También se puede ejecutar reportes predefinidos así como crear y guardar reportes definidos por el usuario. SQL Developer mejora la productividad y simplifica las tareas de desarrollo de la base de datos. Oracle SQL Developer 3.0 (disponible para descarga desde el 29 de Marzo del 2011) ofrece un nuevo Query Builder, Scheduler Builder y un navegador para DBAs, actualizaciones para herramientas de migración y extensiones extra; Data Modeler, Oracle Data Miner y Oracle Spatial, Oracle SQL Developer 3.0 viene integrado con nuevas características para ayudar en las tareas diarias. A continuación brinda una breve descripción de las nuevas características de SQL Developer 3.0: Data Mining Interfaz gráfica para Oracle Data Miner 11g Release 2. SQL Developer 3.0, simplifica y automatiza el proceso de data mining ayudando a los usuarios a realizar minería de sus datos, definir , guardar y compartir metodologías analíticas avanzadas para visualizar datos, realizar transformaciones de datos para data mining, construir, evaluar y aplicar clasificaciones, clustering, detección anormal, minería de textos, etc. Los desarrolladores pueden usar SQL y APIs de Java para construir aplicaciones y automatizar el descubrimiento del conocimiento. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 3 Data Modeler SQL Developer Data Modeler 3.0 está ahora totalmente integrado a SQL Developer brindando acceso de lectura y escritura para el diseño desarrollo de modelos. DBMS Scheduler DBMS Scheduler, permite crear una definición a través un editor gráfico para: Programs: Tareas básicas las cuales pueden ser procedimientos externos, PL/SQL o procedimientos almacenados en la base de datos. Schedules: Indica cuándo y cuántas veces se ejecuta un job. Jobs: Objetos que son calendarizados los cuales pueden ser programs o Chains. Job Classes: Grupos de jobs para priorización y alojamiento de recursos. Chains: Crea un flujo de de pasos encadenados por reglas de encadenamiento para crear jobs más complejos. Credentials: Asignación de usuario y contraseña a ser usados por los jobs para autenticarse con un sistema operativo o base de datos Oracle. Database Destinations: Especifica la base de datos Oracle en la cual el job (de base de datos) remoto se ejecutará. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 4 DBA Functionality Database Configuration: Permite revisar y tunear la configuración de la base de datos y dispone de un editor de parámetros de inicialización. Resource Manager: Crea y prioriza consumer groups y administra resource plans. Security: Definición de parámetros de auditoría, profiles, roles y usuarios. Storage: Define y administra archive logs, control files, data files, redo logs, rollback segments y tablespaces. Exporting and Importing Import Data: o Interfaz de usuario parametrizable basada en parámetros de preferencia. o La vista previa de los datos refleja cambios como si se hubiesen hecho en la definición del archivo. o Soporte para delimitadores, paréntesis, fin de línea y codificación de archivos. o El nuevo método “Staging External Table” provee la generación de una tabla externa a ser usada como una tabla de paso para la carga de datos. Los datos se insertan en la tabla seleccionándolos de la tabla externa de paso. Export data: o Interfaz del usuario parametrizable basada en parámetros de preferencias. o Soporte para delimitadores, paréntesis, fin de línea y codificación de archivos. o Soporte para archivos PDF basado en parámetros de preferencias. o Búsqueda avanzada de objetos con capacidad de incluir esquema y tipo de objeto. o Capacidad para descargar datos de vistas y vistas materializadas. Opciones para enviar la salida a un archivo, separar archivos: para cada objeto, para cada tipo de objeto, y archivos en directorios separados por tipo de objeto. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 5 Files and Version Control Archivo Basado en Debugging. Conjunto de puntos de interrupción en PL/SQL (.pls, .pkb, etc.) y ejecutar o depurar estos archivos. Menus Conexiones o Recompilar esquema en una conexión a la base de datos. o Desconectar todas las conexiones de base de datos. Tablas o Generar Tabla API en el nodo de Tablas. Migrations Soporte para línea de comandos: Todas las mejores funciones de migración pueden ahora ejecutarse en la línea de comandos. Soporte para captura de servidor. Habilidad para capturar todas las bases de datos SQL Server y Sybase. Proyecto de Apoyo para Migraciones. Nuevo navegador de proyectos. Todas las tareas de migración se basan ahora en un asistente para administrar el proceso. Escaneo de Aplicaciones y Migración para Sybase DBLIB y aplicaciones CTLIB. Solamente soportado para aplicaciones dblib y ctlib y reporteo en áreas para las cuales deben ser cambiadas para trabajar con Oracle. Estimación del Proyecto de Migración. Habilidad La estimación del proyecto genera una hoja de cálculo que puede ser usada por los Gerentes de Proyectos para personalizar la planeación de recursos y ajustarlos a su organización. Reportes de Migración. Generación de reportes para análisis de objetos fuente, objetos convertidos y problemas con migraciones. Identificación de mejoras y asignación de nombres. Definición de nombres para los objetos destino antes de que la migración inicie. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 6 PDF Diseños Parametrizables. Tablas personalizadas, diseño de columnas y celdas con fuentes, estilos, sombreado de filas, bordes, alineación, rellenos, espaciado y envoltura de texto. Las opciones incluyen encabezados de columnas y pie de página. Soporte para Grandes Objetos Binarios. Imágenes, video, texto, documentos, hojas de cálculo y otros objetos incluidos en el documento PDF o unidos como archivos separados. Compresión de Documentos. Diferentes niveles de compresión de documentos. Meta data. Meta datos como título, nombre, tema y palabras clave. Generación de PDF. Generación de PDF para objetos de la base de datos como Navegador de Conexiones, Navegador de Reportes, Navegador para el DBA, Descarga a través de la base de datos o del Data Grid. Seguridad. Documentos PDF protegidos por contraseña, contraseña de permiso para configuración de la seguridad y diferentes niveles de encriptación. Soporte de Versiones. PL/SQL Support Parser. Analizador para completar código que fue modificado con plantillas adicionales automáticamente derivado de la sintaxis PL/SQL y SQL. Debugging. Depuración de bloques anónimos. Ref Cursor. Ejecutar y depurar procedimientos con cursores referenciales. Despliegue de datos del cursor referencial. Query Builder Visor para Query Builder. Visual SQL Query Builder con una característica para copiar y pegar desde el navegador de conexiones o desde el navegador de esquemas hacia el visor de Query Builder. SQL Worksheet y el visor Query Builder están totalmente integrados. Cambio del modo texto a gráfico en cualquier momento. Creación automática de Joins. Determinación automática y vista de joins entre tablas relacionadas agregadas al Query Builder. Se puede copiar y pegar columnas para crearlas manualmente. Múltiples tipos de Join. Propiedades del Join en términos claros para el usuario (“Show all <Employees>”) para remover la confusión de sintaxis con LEFT OUTER, RIGHT FULL, etc. Agrupación, Predicados y Ordenamiento. Visibilidad de columnas, alias, agrupación, ordenamiento y predicados de selección se muestran de manera sencilla para facilitar el uso de la tabla de diseño. Tablas derivadas, Sub-Queries y Uniones se muestran como sub-tabs en el Query Builder y pueden ser editadas de la misma forma que el query principal. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 7 Schema Browser Facilidad e navegación entre tipos de objeto y esquemas para una conexión específica. Apoyo rápido del lado del cliente basándose en el nombre o para reducir la lista de objetos que se muestran. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 8 SQL Plus Commands Vista para todos los comandos SQL Plus. Spatial Administración de Datos Espaciales. Identificación de vistas y vistas materializadas que contienen columnas de tipo spatial. Definición y validación de metada e índices espaciales. Interacción con objetos sobre una nueva vista “map”. Integración con todos los objetos en el map view. Validación espacial de instancias de datos. TimesTen Administración de usuarios de la base de datos. Crear y borrar usuarios, dar y revocar privilegios, cambiar contraseñas de usuario. Reportes pre-definidos sobre objetos de la base de datos, como usuarios, PL/SQL, tablas usuarios y privilegios. Soporte para sinónimos y logs de vistas materializadas. Ver y actualizar columnas de datos usando editores de celdas parametrizables. Reunir estadísticas de todas las tablas que pertenecen al usuario conectado. Agregar o cambiar índices de llave primaria a índices de tipo hash. Soporte para navegador de esquema para filtrar y estrechar la lista de los objetos desplegados. Crear grupos de cache a partir de sinónimos de Oracle. Compilar todos los paquetes PL/SQL, procedimientos y funciones inválidos. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 9 Tunning SQL Tuning Advisor. Analiza grandes volúmenes de instrucciones SQL y ofrece recomendaciones de tuneo. Diff Tool for Explain Plans. Compara los resultados de Explain Plan o Autotrace para cualquier instrucción SQL. Management Pack Licensing Preferences. Opción de preferencias para realizar un seguimiento de las características de la base de datos Oracle a ser licenciadas. Testing Soporte avanzado para tipos de datos. Soporte para multiusuario. Múltiples reinicios. Suites anidadas. Implementación de pruebas de renombramiento. Pruebas de sincronización y de objetivos. Pruebas de Export. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 10 Oracle Statspack Por: Ing. Emilio Méndez emendez@datum.com.gt Para realizar un tunning efectivo, es necesario contar con una base de referencia, la cual pueda ser comparada en un futuro, cuando el sistema presente fallas o no funcione de la manera habitual. Sin dicho punto de referencia, es muy complicado identificar, si el problema que se está presentando es debido a que: ¿Si la cantidad de transacciones en el sistema es mayor? ¿Si la transacción tiene un nuevo perfil? ¿Si el número de usuarios ha aumentado? Todas estas preguntas se pueden contestar realizando un reporte con la herramienta Oracle Statspack. ¿Para qué sirve Oracle Statspack? Statspack es un conjunto de scripts SQL y PL/SQL, que permite la colección, automatización, almacenamiento y visualización de datos de rendimiento, proporcionado por Oracle a partir de la versión Oracle 8i en adelante. Al momento de ejecutar el script de instalación, un usuario (PERFSTAT) es creado automáticamente, el cual es propietario de todos los objetos creados por el Statspack. El usuario PERFSTAT cuenta con privilegios limitados para realizar consultas a la vista v$views, requerida para el tunning de rendimiento. Regularmente, cuando se habla de Oracle Statspack, también se menciona mucho, el concepto de "Snapshot", el cual no es más que la recolección de datos del rendimiento en un punto en el tiempo, en otras palabras es como si tomáramos una fotografía del rendimiento del sistema. Cada uno de estos snapshots, es identificado con un "snapshot_id" el cual es la llave única que lo identifica, en el punto de tiempo que es tomado; cada cierto tiempo es tomado un snapshot y un nuevo "snapshot_id" es creado, con el mismo. El snapshot_id, junto con el identificador de la base de datos y el número de instancia, constituyen la llave única para un snapshot y utilizando esta combinación única, la herramienta Statspack puede almacenar varios conjuntos de estadísticas de las instancias de un clúster de base de datos, en las tablas que maneja el Statspack. Esto quiere decir que se pueden crear varios análisis, reportes y comparaciones independientes por cada una de las instancias contenidas en el clúster. Cada vez que se toman snapshots, es posible ejecutar un reporte de rendimiento, el cual solicitará por medio de la consola, dos identificadores de snapshots, para que el reporte sea procesado y comparado. El reporte calcula la actividad, el rendimiento y la carga entre los dos snapshots tomados, cabe aclarar que la herramienta Statspack puede comparar dos snapshots de distintos puntos de tiempos, sin la necesidad de que los dos snapshots sean uno continuo del otro. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 11 Instalación de Oracle Statspack Consideraciones Previas Antes de instalar Oracle Statspack, se deben de tomar ciertas consideraciones, como por ejemplo, el espacio que ocupa la herramienta, varía considerablemente, debido a la configuración que se realice con el Statspack, ya que hay que tomar en cuenta: la frecuencia en que se estarán tomando los snapshots, el tamaño de la base de datos, así como el tipo de arquitectura, si se tiene RAC, y la cantidad de datos recolectados. Para instalar Statspack, el requerimiento mínimo de espacio es de 100MB aproximadamente. Si el tablespace en el cual va a ser instalado el Statspack, es un tablespace del sistema como por ejemplo SYSAUX, no es necesario realizar ninguna consideración con respecto al espacio, de lo contrario sí es necesario estar monitoreando los tablespaces, como la creación de objetos, así como ajustar las cláusulas de almacenamiento. Instalación A continuación se muestran los pasos necesarios para instalar el Statspack: Linux: SQL> connect / as sysdba SQL> @$ORACLE_HOME/rdbms/admin/spcreate Windows: SQL> connect / as sysdba SQL> @%ORACLE_HOME%\rdbms\admin\spcreate Ejecutando Snapshots Automáticamente A continuación se muestran los pasos necesarios para configurar el Statspack, para que recolecte estadísticas de manera automática (por defecto cada hora): Linux: SQL> connect perfstat/perfstat_password SQL> @$ORACLE_HOME/rdbms/admin/spauto.sql Windows: SQL> connect perfstat/perfstat_password SQL> @%ORACLE_HOME%\rdbms\admin\spauto.sql Utilizando Oracle Staspack Tomando Snapshots 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 12 La forma más fácil de tomar snapshots es, primero autenticarse a SQL*Plus como el usuario PERFSTAT y ejecutar el procedimiento statspack.snap. SQL> connect perfstat/perfstat_password SQL> execute statspack.snap El snapshot guardará los valores actuales para las estadísticas de rendimiento en las tablas creadas por el Statspack, y el snapshot creado puede ser usado como línea base para compararlo con otro snapshot tomado en otro punto de tiempo después. Creando Reportes Para crear reportes, se ejecutan las siguientes líneas en la consola de SQL*Plus. Linux: SQL> connect perfstat/perfstat_password SQL> @$ORACLE_HOME/rdbms/admin/spreport Windows: SQL> connect perfstat/perfstat_password SQL> @%ORACLE_HOME%\rdbms\admin\spreport Conclusiones Statspack puede ser utilizado en forma paralela con Enterprise Manager, ya que Statspack permite capturar datos del rendimiento de la instancia de Oracle y reportar dichos datos en un formato textual, mientras que el Enterprise Manager lo hace de una forma gráfica. En Oracle 9i, el Oracle Enterprise Manager utilizaba los datos obtenidos por el Statspack y los mostraba gráficamente. A partir de 10g, el Enterprise Manager utiliza el AWR (Automatic Workload Repository) para recolectar información. El AWR es una parte integrada del servidor de Oracle, el objetivo del mismo, es que automáticamente cada cierto tiempo realiza la recolección de datos y junto con el ADDM (Automated Database Diagnostic Monitor) componente también del servidor, utiliza estos datos para realizar diagnósticos del rendimiento. Al comparar los reportes gráficos, así como la instalación y configuración manual del Statspack, se pueden observar varias desventajas en la utilización de Statspack. Pero, como recomendación final, si se cuentan con los recursos necesarios, se podría recolectar información de los dos métodos. 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 13 5a. Ave. 5-55 Zona14, Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300 Fax: (502)2364-5311 Email. info@datum.com.gt Página 14