UKOUG 2016 Irlanda

En 18/03/2016, en Eventos, Misc, por raulibaper

Este es el ukoug2016irelandsegundo año que asisto al evento de OUG 2016 en Irlanda (Dublín). Este año hemos tenido charlas durante dos días consecutivos, lo que está muy bien. Sin embargo, una buena parte de las charlas eran de nivel bastante introducción o alto nivel. Aun así, es probablemente el mejor evento Oracle que hay en este país. Os hago un resumen de los seminarios que pude asistir.

Agenda Oficial -> Link

Oracle Application Express for the CIO, Business User, DBA & Developer. Really.

Oracle sigue insistiendo sobre las posibilidades de APEX (versión actual 5.0). Es cierto que es un framework bastante potente y al estar integrado totalmente en Oracle, el acceso a los datos es trivial. Durante la presentación, el orador hizo uso las notificaciones de Apple Push a través de Apex para recibir mensajes personalizados al realizar ciertas acciones en la aplicación Web. Merece la pena destacar que este producto es gratis siempre y cuando tengas licencia de Oracle y está totalmente soportado. No sólo está dirigido a DBAs, sino también a Developers y usuarios de Negocio (ej. para Reporting). Convertir una hoja de cálculo Excel en una aplicación es cuestión de unos cuantos clicks. Importaríamos un fichero XLS, y automáticamente todos los datos estarían disponibles a través de la BD con todos los beneficios que ellos tiene (seguridad, disponibilidad, respaldado por copias de seguridad, …)

Oracle Apex 5.1 New Features (Blog)

Oracle Apex 5.1 no está disponible todavía en el mercado pero trae importantes mejores. Yo utilizao actualmente la versión 4.2 para automatizar una serie de despliegues en producción a modo de Self Service, y sólo con ver las posibilidades del tema Universal en la versión 5.0 ya impresiona. La versión 5.1 es mucho mas “responsive” (adaptable a los cambios), compatible con varias plataformas (móvil, web, …) y puede ser editada en tiempo real con la opción de “Live Template”. Además incluye un componente nuevo de edición multi-fila para poder editar un celdas individuales en vez de filas. Muy necesario.

Strace, Perf & GDB – Three Friends for the DBA

Kamil Stawariarski, tipo divertido, comenzó la presentación presentación con una pregunta complicada. Existe alguna relación entre el tamaño de ASM AU (Allocation Unit) y el parámetro db_file_multiblock_read_count? La respuesta corta es NO pero el profundiza con la herramienta strace y encuentra algo muy interesante. Aparentemente la BD utiliza al principio Synch IO (cuando no debería al estar usando ASM), pero después de unos cuantos SELECT, la BD cambia a modo ASYNCH. Parece ser que la base de datos es capaz de aprender y acaba utilizando Asynch IO sin necesidad de reiniciar o modificar ningún parámetro.

Para finalizar la presentación, nos mostró un ejemplo del uso de GBD para confirmar cuántas veces se ejecuta una función PLSQL dentro de una query. Demostrando que debemos tener cuidado con este tipo de funciones dentro del predicado ya que es posible que se se ejecute con cada fila bajando el rendimiento total de la consulta. Para solucionar el problema, utilizó la clausula PRAGMA UDF. De esta forma, la función es embebida dentro de la ejecución de la query acortando el tiempo total una barbaridad.

Write Less (Code) with More (Oracle 12c New Features) (Presentación)

Oren Nakadimon (from db-oriented.com) nos enseñó una serie de casos de uso donde podemos usar las nuevas funciones de Oracle 12c. Podéis echar un vistazo a la presentación para yo destacaría los siguientes ejemplo:

  • SQL Loader Express Mode. Ahora no necesitamos el fichero de control CTL. Oracle reconoce el patrón del fichero basado en la estructura de la taba destino. Si esto nos falla, siempre podemos recurrir al fichero CTL.
  • Columnas de tipo IDENTITY columns para tener un valor incremental de forma automática. Reemplaza el método tradicional de tener que utilizar un trigger.
  • Paginación (FETCH FIRST n ROWS). Esta posibilidad que lleva eones disponible en MySQL por fin está disponible en Oracle 12c.

ASH Masters (Presentación)

Los chicos de Delphix han creado un repositorio Github con varios scripts relaciones con ASH (Active Session History). Como es posible que sepáis, cada segunda se realiza una captura de toda la información de V$SESSION en un buffer circular en memoria. Esta estructura se puede consultar a través de V$ACTIVE_SESSION_HISTORY. Es una gran herramienta para diagnosticar un problema en el pasado (ej. quién estaba bloqueando a tal usuario, cuánto tiempo ha estado corriendo, qué SQL_ID estaba ejecutando, etc…).

Recordad que 1 de cada 10 registros en el ASH se bajan a disco al repositorio AWR (accesible a través de DBA_HIST_ACTIVE_SESS_HISTORY). La retención de esta información es por defecto 8 días, pero podéis (y deberías) incrementarlo por lo menos a 32. La razón de tal número (32) es para que podáis retroceder en el tiempo al menos un mes (31+1).

The Heart of Oracle – How the Core Architecture Works (Presentación)

Martin Wildlake (ORA600) es una persona con mucho conocimiento en Oracle. Su presentación acerca de la arquitectura de Oracle fue interesante para refrescar conceptos. No introdujo nada nuevo que no exista en la documentación oficial, pero no está mal de vez en cuando recorrer las estructuras de la memoria SGA, como funciona un db_file_sequential_read y cositas así.

Oracle Database Consolidation: It’s Not All About Oracle Database 12c! (Link)

Tim Hall (oracle-base.com), gran personalidad, ofreció una introducción de alto nivel acerca de la consolidación en Oracle. Como se aprecia en el título, no todo es acerca de Multitenant en Oracle 12c ya que hay muchos métodos y muy antiguos. Si tuviera que resumir la presentación en unas pocas palabras, diría que “consolida, pero con cabeza y planificación”. También nos recomienda que utilicemos la consolidación más apropiada para nuestra empresa, no caigamos en los argumentos de los vendedores y promesas de los “bloggers”.

Ejemplo de consolidación:

  • Visualization (VMWare)
  • Containers (Solaris)
  • Multitenant (Oracle 12c)
  • Esquemas (enfoque clásico)
  • Oracle Cloud.  Oracle no da acceso a la cuenta de SYS. En vez de eso, proporcionan un API para hacer las tareas administrativas que podamos necesitar.

Most Common Database Misconfigurations

El veterano DBA, Joze Senegacnik (DbProf), hizo un recorrido de casos reales acerca de fallos de configuración con resultados desastrosos. Varios ejemplos:

  • Un sistema con un número altísimo de conexiones por segundo. Este suele ser un ejemplo de una mala configuración en la parte de la aplicación/middleware. Oracle no instrumenta el proceso de autenticación pero consume una gran cantidad de CPU. Más de una conexión por segundos en general es malo y debe evitarse.
  • Otra vez, vemos el ejemplo de PRAGMA UDF y como nos puede ayudar con las funciones definidas por el usuario.
  • Un alto grado de paralelismo puede matar el sistema. Como buena práctica, el grado máximo de paralelismo no debería superar el doble del número de cores disponibles en el sistema (o disponibles en la BD).
  • Una consulta en paralelo que pasa a un INSERT en modo “serial” genera un cuello de botella (evento “PX gref latch”).
  • DML fila a fila cuando puedes utilizar algún mecanismo Bulk. Como Tom Kyte dice “row by row, slow by slow”, que traducido al Español sería “fila a fila, paso lento a paso lento”.

Oracle Hacking session (Presentación 1 – Presentación 2)

Kamil Stawariarski, en su segunda presentación, nos demostró como hacer una escalada de privilegios desde un aparente inofensivo GRANT (CREATE ANY INDEX) hasta convertirse en DBA. Wow! Así de fácil. En la segunda demo, hace uso de las tablas EXTERNAL para ejecutar un script bash localmente el servidor de la base de datos.

Real-Time Big Data Delivery with GoldenGate

Seminario acerca de las posibilidades de replicación de Oracle GoldenGate dentro de Big Data ofrecido por John Mullis. La versión 12.2 es capaz de mover data hasta Hive, Hbase, HDFS, Flume y Kafka. El truco que emplea para DML es añadir un registro con una columna extra para especificar si la acción es INSERT (I), UPDATE (U) o DELETE (D). Para poder tener una vista consolidada de los datos, necesitamos crear una vista Hive que nos permita ver los datos de forma consistente.

Just Don’t Do It

Jonathan Lewis, Top Guru de Oracle, nos mostró varios casos o arquetipos de problemas que se ha encontrado. No apto para todos los públicos 🙂 Os resumo varios de ellos.

  1. No siempre un FULL TABLE SCAN (FTS) es una mala práctica. El nos da un ejemplo de un caso en el que el culpable no era el tipo de acceso, ya que era necesario recorrer toda la tabla, sino que un valor pequeño del atributo arraysize provocaba que el cliente tuviera que recuperar datos en muchas iteraciones.
  2. Vigilad los updates no necesarios. Por ejemplo “UPDATE TABLE SET n=0” visitará todos los registros de la tabla aunque el valor de una fila ya sea cero. Podemos cambiar esto añadiendo una clausula WHERE -> “UPDATE TABLE SET n=0 WHERE NVL(state,0) != 0” donde previamente tendremos un índice funcional sobre dicho campo.
  3. Respecto al mito “Nunca hagas en PLSQL lo que puedes hacer en SQL”, es incorrecto. En general es cierto, pero alguna veces PLSQL proporciona comprensión al código y facilita su mantenimiento. Tendríamos que corregir dicha frase a algo como “El grueso de la ejecución debería ejecutar en SQL para beneficiarse del motor de Oracle, pero nos podemos apoyar el PLSQL para simplificar el código y facilitar su lectura”.
  4. Tened cuidado de la query “Brontosaurio”. Haciendo referiencia a esta especie de dinosaurio, hay ciertas sentencias SQL que tienen pocos valores de entradas, producen pocos resultados, pero necesitan una gran cantidad de recursos. Es importante entender el trabajo que se realiza dentro de estas sentencias si queremos optimizarlas.
  5. Respecto a la frase “Nunca hagáis en PLSQL lo que podáis hacer SQL”, no es del todo cierta. El explica que en general es cierto, pero en algunas ocasiones PLSQL proporciona comprensión al código, y si la mayor parte del procesamiento se hace con SQL no tiene nada de malo usar PLSQL.

SQLcl – Making SQL*Plus the Tool You Need for Development (Blog)

SQLcl está destinada a reemplazar SQL*Plus. Todavía no está certificada para producción (early stage) pero será 100% compatible SQL*Plus. Viene con un montón de buenas razones para usarla:

  • Salida en formato JSON
  • Nuevo comando Create Table As Select (CTAS emp emp2)
  • Auto-completado para Table/Column (SIIIIIIII)
  • Teclas Cursor Keys. Muchos DBAs usan rlwrap para tener esta funcionalidad.
  • Comando DDL para sacar la definición de forma rápida para la mayoría de objetos.

Como podéis ver, parece que SQLcl es el SQL*Plus si lo desarrollaran a día de hoy. Ojo! No lo uséis en producción hasta que salga la versión final.

The Cost Based Optimizer – Any questions

Jonathan Lewis, Joze and Martin Widlake hicieron una ronda de preguntas abiertas a cualquier que quisiera preguntar acerca del optimizar CBO (basado de costes). Sólo pude quedarme a estas dos preguntas ya que casi pierdo del bus de vuelta a Cork 😉

  1. Qué significa el COSTE (COST) en un plan de ejecución? De modo sencillo, es la suma del tiempo/trabajo por linea dentro de un plan de ejecución. Es importante destacar que se trata “por cada linea” ya que algunas partes del plan puede ejecutarse muchas más veces de las esperadas y el coste real de ejecución puede ser muy diferente.
  2. Por qué el plan de ejecución cambia repentinamente y una consulta se vuelve “lenta”? Y quién no ha tenido este problema. Hay muchas posibles razones: un cambio en el histograma de una tabla puede dar lugar a varios planes de ejecución. También, para particiones basadas en rango, las estadísticas puede que no sean representativas para particiones recientes y el optimizador puede fallar al intentar dar con el plan óptimo. También puede haber problemas “por debajo” como network, almacenamiento, … Hay un número elevado de razones, por esto y otras razones las compañías todavia necesitan DBAs… por ahora.

Otras presentaciones

Etiquetas:  

ORAMEX Tech Day 2015

En 06/11/2015, en Eventos, por raulibaper

ORAMEX LogoComo hay muchos lectores de este blog que viven en América (México, Colombia, Perú, Argentina, …), por si no habéis recibido esta información, el grupo de usuarios de México ha organizado un evento el 20 de Noviembre en Guadalajara. Una oportunidad perfecta para aquellos que viven en México, y porque no, para los que viven en países vecinos, así pueden disfrutar de la maravillosa cultura (y gastronomía) mexicana – Desafortunadamente, yo no puedo asistir pero parece muy interesante.

Adjunto el link y un resumen del evento.

—————————————————————————————–

Continuando con nuestra labor de difusión técnica de la tecnología ORACLE. ORAMEX.org, el grupo independiente de usuarios ORACLE  de México, anuncia el desarrollo del evento ORAMEX Tech Day 2015 en Guadalajara.

Este evento está orientados a impulsar las habilidades técnicas de nuestros miembros, fomentar el networking y promover el intercambio de experiencias entre los participantes

Luego de más de 3 años realizando eventos exclusivamente en Ciudad de México, ORAMEX se traslada a Guadalajara para, de esta manera,  promover el conocimiento de tecnologías ORACLE en todo el territorio Mexicano.

En esta oportunidad las tecnologías a exponer serán: RAC, Tunning, DBaaS, Integración, MySql , Microservices, UX y ADF.

Además de nuestros expositores locales, contaremos con el apoyo de Alex Zaballa , Oracle ACE Director de Brasil.

Los eventos ORAMEX son gratuitos.

—————————————————————————————–

Etiquetas:  

OCM 12c Upgrade Exam

En 07/10/2015, en Certificación, OCM, por raulibaper

Oracle Database 12cPor fin! Para aquellos que tenemos el OCM 11g ya podemos empezar a preparar el temario del Upgrade para Oracle Certified Master 12c. Me ha sorprendido ver que se repiten muchos de los objetivos del examen de OCM 11g. Practicamente son los mismos MÁS la parte de Multitenancy (pluggable databases) y poquito más.

En mi sección de la 12c, hice una estimación de los objetivos que podría haber en el examen. Basicamente junté todas las novedades más interesantes de la última versión organizado por secciones. Parece ser que el examen es mucho más sencillo.

Adjunto aquí el temario del Upgrade:

General Database and Network Administration, and Backup Strategy

  • Create and manage pluggable databases (NUEVO)
  • Create and manage users, roles, and privileges
  • Configure the network environment to allow connections to multiple databases
  • Protect the database from loss of data due to any kind of failure
  • Create and manage database configuration files

Data and Performance Management

  • Modify materialized views
  • Create a plugged-in tablespace by using the transportable tablespace feature (NUEVO)
  • Create partitioned tables
  • Configure the database to retrieve all previous versions of the table rows
  • Configure the Resource Manager
  • Tune SQL statements
  • Perform real application testing (NUEVO)
  • Create SQL Plan baselines

Data Guard

  • Create a physical standby database
  • Make the standby database available for testing
  • Restore the standby database to its normal function
  • Configure fast start failover

Grid Infrastructure and Real Application Clusters

  • Install Oracle Grid Infrastructure
  • Create ASM disk groups
  • Create and manage an ASM instance
  • Create ACFS
  • Start, stop, configure, and administer Oracle Grid Infrastructure
  • Install the Oracle Database 12c software
  • Create RAC databases
  • Configure services

 

 

 

Cursos Online de MongoDB

En 29/05/2015, en Curso, por raulibaper

Logo MondoDBMongoDB es cada vez más y más popular. Este gestor de bases de datos NoSQL se encuentra ya en el puesto nº 4 del DB Engines Ranking de BBDD (casi nada), desbancando recientemente a PostgreSQL. Está todavia muy lejos de la elite (Oracle/MySQL/SQL Server), pero es el lider indiscutible en el terreno NoSQL.

Después de esta introducción, comentaros que esta misma semana han comenzado una serie de cursos gratuitos proporcionados por la misma MongoDB accesibles a través de este enlace. Si tenéis tiempo libre, os recomiendo que hagáis alguno, especialmente el de Developers o DBAs. Están distribuidos por capítulos, con ejercicios semanales, y con unos videos muy instructivos (pero en Inglés, sorry). Os pego los enlaces de los dos que me han parecido más interesantes.

Es fácil ver a DBAs de Oracle administrando también MongoDB, así que si os queréis apuntar, hacedlo ya mismo, porque los cursos tienen una programación estricta que hay que respetar.

Saludos!

Etiquetas:  

Webinario ¿Qué hay de nuevo en PaaS / iPaaS?

En 10/05/2015, en Curso, por raulibaper

Me gustaría informaros que LAOUC y ORAMEX estarán realizando un webinar el día 20 de Mayo con Arturo Viveros.

Titulo y Presentador

Oracle Cloud Solutions: ¿Qué hay de nuevo en PaaS / iPaaS?

Descripción

Descubra las nuevas capacidades que Oracle ofrece en la nube, bajo el modelo de Plataforma como Servicio (PaaS). Acompáñenos a este webinar patrocinado por ORAMEX / LAOUC, donde se presentarán mejores prácticas, soluciones innovadoras en la nube, escenarios de integración e incorporación de tecnologías nuevas para la industria.

Fecha y Hora

Wed, May 20, 2015 5:00 PM – 6:00 PM CEST

Registrate

Oracle Cloud Solutions: ¿Qué hay de nuevo en PaaS / iPaaS?

Saludos!

Etiquetas:  

Resumen UKOUG Ireland 2015

En 23/03/2015, en Curso, In-memory, por raulibaper

UKOUG 2015 Banner

Como ya anuncié la semana pasada, el día 19 se produjo el evento de OUG Ireland 2015 y me gustaría hacer un pequeño o no tan pequeño 😉 resumen del evento.

Durante la presentación de apertura, el director regional de Oracle (Jon Paul) nos explicó que mas de 3/4 partes de la compañías están dispuestas a aumentar sus servicios digitales, lo que significa un aumento de oportunidades y proyectos en el mercado. Oracle está ofreciendo más y más “appliances” cada año y parece que esta tendencia no va a frenar. Estos sistemas ofrecen varias ventajas, entre ellas máxima compatibilidad, estándar de plataformas, actualizaciones, … Jon nos anima a que “perturbemos”(literalmente disrupt) el mercado. Nos puso de ejemplo como Uber está transformando completamente el mercado de transportes de personas (en algunas ciudades ya están ofreciendo mensajería).

Otra información interesante que nos aportó es que APEX es una de las herramientas más activas y con más inversión en Oracle estos momentos. Si no lo conocéis, comentaros que es una herramienta de desarrollo Web bastante versátil (nosotros la usamos como inventario de BBDD y recientemente hemos desarrollado una utilidad de automatización de ejecución de tickets muy útil). En breve podremos descargar la versión 5.0 con un interfaz de usuario completamente renovado y adaptado a los tiempos que corren. Podéis probar la v5.0 Early Adopter 3 aquí.

En el evento se podían asistir a diferentes presentaciones (libre elección). En la primera presentación que asistí (ofrecida por Darren Moore), nos contaron como el SEMO (Single Electricity Market Operator) ha implementado una solución de 24×7 con Oracle RAC, Dataguard, OEM 12c y Golden Gate. Especial interés el concepto de “Production Support Database” en el cual mantienen una copia exacta de producción replicada con GG en tiempo real para ofrecer un entorno de corrección rápida de errores/data fixes. Podéis ver la presentación aquí.

Se ha hablado mucho de Oracle 12c, Multitenant, Pluggable databases, … En una de las presentaciones nos enseñaron como hacer clones/snapshots de pluggable databases (PDBs) en segundos con ZFS. Estos “snapshots” utilizan un mecanismo COW (Copy on Write) por el cual, sólo se escriben en disco aquellos bloques que se modifican (si habéis hecho snapshots con VMware, es la misma tecnología). Es perfecto para entornos de desarrollo/pruebas/QA pero no para producción, ya que esta operación requiere que el PDB se encuentre en modo READ ONLY. Esperemos que en 12.2 nos permite hacerlo en “caliente”.

La siguiente presentación corrió a cargo de Tim Hall (famoso en la escena Oracle por www.oracle-base.com). El genial título del tema era “Pluggable Databases: Qué es lo que van a romper y aún así, razones por las que deberíamos usarlo“. Leedlo, merece la pena. Una de las principales razones por las que deberíamos usarlo es porque las bases de datos Non-CDB ya se consideran obsoletas (deprecated) en 12.1.0.2 (Wow!) Significa esto que debemos movernos ya a multitenant (CDB)? Ummmm no realmente. Maria Colgan calmó un poquito los nervios y nos dijo que obsoleto no significa “sin soporte” (dessuported). Significa que si abrimos un caso con Oracle y estos no pueden verificar el problema en una PDB, nos podrían obligar/responder que debemos migrar nuestra BD (non-CDB) a una PDB. Oracle es complicado que nos haga esta jugada. Nos puso como ejemplo el RBO “Rule-Based Optimizer”. El RBO lleva obsoleto desde 9i, si no recuerdo mal, y ahí esta en 11g/12c.

Tim Hall nos anima a empezar a utilizar PDBs ya mismo, porque supone importantes cambios en muchas areas para un DBA. El mismo ha reconocido que le ha costado adaptarse al cambio (ej. la primera vez que tratéis de crear un usuario en una CDB probablemente es falle, porque en el containter los usuarios deben empezar por “C##” a no ser que toquéis unos parámetros). Otro comentario interesante que hizo es que es una gran oportunidad para DBAs Junior para destacar frente a otros DBAs más senior, porque muchas de los procedimientos han cambiado. Yo añadiría a las palabras de Tim Hall, que es una oportunidad perfecta para certificarse en 12c.

La siguiente presentación, a cargo de Marcin Przepiorowski (creador de OraSASH), trataba sobre cómo la automatizacíon puede ayudar a los DBAs a evitar el trabajo aburrido. Es otra prueba de la importancia que está tomando esta actividad en las empresas. No sólo para ahorrar tiempo/dinero/(personas?) sino porque nos ayuda a mantener los estándares y evitar errores humanos. Su empresa (Delphix) utiliza Ansible para esta tarea. Es open-source, tiene una curva de aprendizaje rápida (más si sabes Python) y permite hacer operaciones complejas (Playbooks).

Tim Hall hizo dos presentaciones. La segunda trató la virtualización. Podría resumirlo en dos frases: primero, si vas a utilizar virtualización, asegurate de usar el hardware correcto (CPU/Memoria?…) y segundo, hazlo sólo en entornos soportados. Podéis leer el artículo aquí.

Comentaros por último que el día siguiente tuvimos un workshop muy completo de In-memory column. Maria Colgan, una de las personas que lideraba el optimizador de Oracle (casi nada) es ahora la responsable de “evangelizar” las bondades de esta novedad. Realmente parece prometedor. Durante todo el día, Maria nos estuvo contando las implicaciones que tiene In-memory en la arquitectura de Oracle (RAC/Partitioning/Dataguard/Encryption/Peformance/…). Junto con Multitenancy, es otra de las areas claves que todos tenemos que conocer.

Actualización 2015/03/30 (He añadido los links a las presentaciones)

Saludos!

 

Etiquetas:  

UKOUG Ireland 2015 (19 y 20 de Marzo)

En 04/03/2015, en Curso, In-memory, por raulibaper

UKOUG 2015 IrelandHola a tod@s! Los días 19 y 20 de Marzo se celebra en Dublín (Irlanda) el evento UKOUG 2015. Habrá muchas charlas y muy interesantes, impartidas por tremendos profesionales como Jonathan Lewis, miembros del OakTable y ACE Directors.

El segundo día está dedicado por completo a In-memory database, gran novedad de Oracle 12c. Maria Coulgan (In-memory database lead) de Oracle será quien imparta este workshop.

Este es un blog en castellano, y el evento, lógicamente será en Inglés, pero como estoy trabajando en Irlanda y voy a asistir los dos días he querido compartirlo con vosotros. Así que si tenéis pensado ir, avisadme.

Etiquetas:  

Capacity Planning – Forecasts

En 09/02/2015, en Productividad, por raulibaper

La gestión de la capacidad (Capacity Management) es la disciplina de ITIL que tiene como objetivo asegurar que se utilizan los recursos adecuados en cada momento y, además, permite predicir, planificar, implementar y optimizar los recursos en el futuro.

La planificación de la capacidad (Capacity Planning) es la actividad del Capacity Management relacionada con el análisis de la utilización de los recursos actuales, el pronóstico y los procesos necesarios para garantizar que estarán disponibles en el futuro.

El recurso más recurrente en el día a día de un DBA es el almacenamiento. Una de las tareas más comunes, por poner un ejemplo, es ampliar el tamaño de un tablespace, ya sea incrementando el tamaño de un datafile o añadiendo nuevos ficheros. Es tan habitual, que sólo esta actividad puede suponer horas y horas de trabajo cada mes.

Hoy os traigo un par de consultas SQL para obtener una la predicción de crecimiento de tablespaces y filesystems el futuro. Os puede ser muy útil para estimar cuando espacio vas a necesitar durante los próximos 12 meses, y así ampliar el tamaño de los tbs/fs que os haga falta con cierta anticipación. Os podéis ahorrar bastante tiempo (y algún que otro susto en forma de incidencia crítica).

Este es un informe generado con estas consultas. Deben ser ejecutadas en el repositorio de Enterprise Manager Grid Control, en concreto para la versión 11g, pero facilmente serán compatible con Cloud Control 12c. Si no tenéis Grid Control, podéis reusar el código con unos pequeños cambios para usar el repositorio AWR de cada BD (vistas DBA_HIST_*). Os lo dejo como ejercicio 😉

Comentarios sobre la información obtenida con estas queries:

  • Estas consultas utilizan el histórico almacenado en el repositorio de Grid Control (MGMT_METRIC_*) hasta un máximo de 60 días. Para BBDD recién creadas los valores estimados no serán fiables al 100%, lógicamente.
  • La estimación se realiza con las funciones de regresión lineal (REGR_SLOPE y REGR_INTERCEPT). Es la misma teoría que utiliza Excel con la función Forecast.
  • Sólo se muestran aquellos FS/TBS que vayan a superar el umbral de alerta (threshold) para dicho target durante los próximos 12 meses.
  • La última columna (REQ 12M) muestra cuanto espacio tenéis que añadir para evitar una alerta de llenado durante los próximos 12 meses. El cálculo es el siguiente, si añadimos el espacio indicado al tablespace, al cabo de 12 meses este tendrá un porcentaje de ocupación de (THRESHOLD – 10)%.

Espero vuestros comentarios. Este es un pequeño ejercicio de Capacity Planning, y sólo estamos hablando de almacenamiento. Hay mucho terreno para debatir.

TABLESPACE FORECAST

-- File: tbs_forecast.sql
-- Description: OEM Tablespace Forecast
-- Author: Raul Ibanez (raul @ dbajunior.com)
-- Gracias a Facundo por retocar la query para evitar los grupos

ITH rl AS (
 SELECT
 --G.COMPOSITE_TARGET_NAME,
 --CASE G.COMPOSITE_TARGET_NAME
 -- WHEN 'prod_group' THEN '80'
 -- WHEN 'nonprod_group' THEN '90'
 -- ELSE '90'
 --END 
 '85' THRESHOLD,
 T.TARGET_NAME,
 M.KEY_VALUE TABLESPACE,
 REGR_SLOPE(M.VALUE_AVERAGE, ((M.ROLLUP_TIMESTAMP - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)) SLOPE,
 REGR_INTERCEPT(M.VALUE_AVERAGE, ((M.ROLLUP_TIMESTAMP - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)) YINTERCEPT,
 M.METRIC_GUID,
 M.TARGET_GUID,
 C.VALUE CURRENT_PERC
 FROM
 MGMT_METRICS_1DAY M,
 MGMT_TARGETS T,
 --MGMT$GROUP_FLAT_MEMBERSHIPS G,
 MGMT_CURRENT_METRICS C
 WHERE
 -- Metric D34E49F7B030C38C5DBEB6C62D4CAFA8 => TBS SPACE USED (MB) / Collected every week
 M.METRIC_GUID = HEXTORAW('D34E49F7B030C38C5DBEB6C62D4CAFA8') AND
 -- Metric 3E6F70DB22758B7B9756EF342180E7BB => TBS SPACE USED (%)
 C.METRIC_GUID = HEXTORAW('3E6F70DB22758B7B9756EF342180E7BB') AND
 M.KEY_VALUE = C.KEY_VALUE AND
 M.ROLLUP_TIMESTAMP >= SYSDATE-60 AND
 M.TARGET_GUID = T.TARGET_GUID AND
 T.TARGET_GUID = C.TARGET_GUID AND
 --G.MEMBER_TARGET_GUID = M.TARGET_GUID AND
 --G.COMPOSITE_TARGET_NAME = 'prod_group' AND -- Filter OEM Group
 --T.TARGET_NAME NOT LIKE '%dr%' AND -- Filter Target Name
 --G.COMPOSITE_TARGET_TYPE = 'composite' AND
 M.KEY_VALUE NOT LIKE 'UNDOTBS%' AND -- Filter Tablespace Name
 M.KEY_VALUE NOT LIKE '%TEMP%'
 GROUP BY
 T.TARGET_NAME, M.KEY_VALUE, M.METRIC_GUID, M.TARGET_GUID, C.VALUE 
)
SELECT
 TARGET_NAME,
 TABLESPACE,
 THRESHOLD "THRESHOLD %",
 -- SLOPE,
 -- YINTERCEPT,
 ROUND(CURRENT_PERC,2) "CURR%",
 ROUND(((((((SYSDATE+31) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
 ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT1M%",
 ROUND(((((((SYSDATE+138) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
 ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT6M%",
 ROUND(((((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
 ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT12M%",
 ROUND((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "CURR(MB)",
 ROUND((((SYSDATE+31) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT1M(MB)",
 ROUND((((SYSDATE+138) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT6M(MB)",
 ROUND((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT12M(MB)",
 '+' || TO_CHAR(ROUND(((100*((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/(THRESHOLD-10))-
 (100*((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/CURRENT_PERC))/1024))||'GB' "REQ 12M"
FROM rl
WHERE
 SLOPE > 0 AND
 ROUND(((((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
 ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) > THRESHOLD
ORDER BY
 ROUND(((100*((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/(THRESHOLD-10))-
 (100*((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/CURRENT_PERC))/1024) DESC;

FILESYSTEM FORECAST

-- File: fs_forecast.sql
-- Description: OEM Filesystem Forecast
-- Author: Raul Ibanez (raul @ dbajunior.com)

WITH rl AS (
  SELECT
--     G.COMPOSITE_TARGET_NAME,
--	 CASE G.COMPOSITE_TARGET_NAME
--	    WHEN 'prod_group' THEN '80'
--      WHEN 'nonprod_group' THEN '90'
--		ELSE '90'
--	 END THRESHOLD,
     T.TARGET_NAME,
     M1.KEY_VALUE,
     REGR_SLOPE(M1.VALUE_AVERAGE - M2.VALUE_AVERAGE,
       ((M1.ROLLUP_TIMESTAMP - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)) SLOPE,
     REGR_INTERCEPT(M1.VALUE_AVERAGE - M2.VALUE_AVERAGE,
       ((M1.ROLLUP_TIMESTAMP - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)) YINTERCEPT,
	 M1.METRIC_GUID,
	 M1.TARGET_GUID,
	 (100-C.VALUE) CURRENT_PERC
  FROM
    MGMT_METRICS_1DAY M1,
    MGMT_METRICS_1DAY M2,
    MGMT_TARGETS T,
--    MGMT$GROUP_FLAT_MEMBERSHIPS G,
    MGMT_CURRENT_METRICS C
  WHERE
    -- Metric 162045AD9191652427CAC47D8BA40671 => Filesystem Size (MB) / Collected every week
    -- Metric E8838C71E687BF0A9E02FFACC0C9AC80 => Available (MB) / Collected every week
    M1.METRIC_GUID = HEXTORAW('162045AD9191652427CAC47D8BA40671') AND
    M2.METRIC_GUID = HEXTORAW('E8838C71E687BF0A9E02FFACC0C9AC80') AND
    -- Metric 6E65075DA52ACA744B4B8C3FCB018289 => Filesystem Space Available (%)
    C.METRIC_GUID = HEXTORAW('6E65075DA52ACA744B4B8C3FCB018289') AND
    M1.ROLLUP_TIMESTAMP = M2.ROLLUP_TIMESTAMP AND
    M1.KEY_VALUE = C.KEY_VALUE AND
    M2.KEY_VALUE = C.KEY_VALUE AND
    M1.ROLLUP_TIMESTAMP >= SYSDATE-60 AND
    M2.ROLLUP_TIMESTAMP >= SYSDATE-60 AND
    M1.TARGET_GUID = T.TARGET_GUID AND
    M2.TARGET_GUID = T.TARGET_GUID AND
    T.TARGET_GUID = C.TARGET_GUID AND
--    G.MEMBER_TARGET_GUID = M1.TARGET_GUID AND
--    G.MEMBER_TARGET_GUID = M2.TARGET_GUID AND
--    G.COMPOSITE_TARGET_NAME = 'prod_group' AND -- Filter any OEM Group
--    G.COMPOSITE_TARGET_TYPE = 'composite'
  GROUP BY
--    G.COMPOSITE_TARGET_NAME,
    T.TARGET_NAME, M1.KEY_VALUE, M1.METRIC_GUID, M1.TARGET_GUID, C.VALUE
)
SELECT
  TARGET_NAME,
  KEY_VALUE,
  THRESHOLD "THRESHOLD %",
  -- SLOPE,
  -- YINTERCEPT,
  ROUND(CURRENT_PERC,2) "CURR%",
  ROUND(((((((SYSDATE+31) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
   ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT1M%",
  ROUND(((((((SYSDATE+138) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
   ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT6M%",
  ROUND(((((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
   ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) "NEXT12M%",
  ROUND((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "CURR(MB)",
  ROUND((((SYSDATE+31) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT1M(MB)",
  ROUND((((SYSDATE+138) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT6M(MB)",
  ROUND((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT) "NEXT12M(MB)",
  '+' || TO_CHAR(ROUND(((100*((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/(THRESHOLD-10))-
  (100*((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/CURRENT_PERC))/1024))||'GB' "REQ 12M"
FROM rl
WHERE
  SLOPE > 0 AND
  ROUND(((((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)* CURRENT_PERC) /
   ((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)),2) > THRESHOLD
ORDER BY
  ROUND(((100*((((SYSDATE+365) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/(THRESHOLD-10))-
  (100*((((SYSDATE) - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400) * SLOPE + YINTERCEPT)/CURRENT_PERC))/1024) DESC;
Etiquetas:  

Webinarios Oracle 12c, Histogramas y Más

En 04/11/2013, en Curso, Oracle 12c, por raulibaper

MonitorHola! Esta semana está cargadita de webinars gratuitos. OracleMania y LAOUC tienen el gusto de ofrecernos, de manera gratuita, varios seminarios acerca de Oracle 12c y sus novedades. En concreto, serán impartidos por Francisco Muñoz y Jonathan Lewis (casi nada!). Así que os recomiendo que os apuntéis.

Además tenemos otro seminario acerca del licenciamento de Oracle por parte de iQuate con la colaboración de UKOUG. Veremos como estos chicos nos explican como podemos reducir los gastos en licencias de Oracle.

Os adjunto la lista de seminarios con el horario de España (Madrid).

CURSO IDIOMA PRESENTADOR FECHA
Troubleshooting con Jonathan Lewis Inglés Jonathan Lewis Lunes, 4 Noviembre 2013, 21:00:00 (Finalizado)
Lo Nuevo en 12c (Recuperación y Respaldo) Español Francisco Muñoz Martes, 5 Noviembre 2013, 20:00:00 (Finalizado)
The Headaches of Oracle Licensing Inglés iQuate Miércoles, 6 Noviembre 2013, 12:00:00 (Finalizado)
Todos Hablan de DR Español Francisco Muñoz Miércoles, 6 Noviembre 2013, 20:00:00 (Finalizado)
Histograms in 12c Inglés Jonathan Lewis Viernes, 8 Noviembre 2013, 21:00:00 (Finalizado)
Etiquetas:  

Preparación para el examen OCM 11g

En 22/10/2013, en Certificación, OCM, por raulibaper

Logo OCM 11gHace más de un mes que he recibido el certificado y dos que hice el examen en Eslovaquia (Bratislava). Ahora es un buen momento para escribir acerca de la preparación del examen de Oracle Certified Master 11g. Digo esto principalmente porque ahora tengo más perspectiva del esfuerzo que ha supuesto prepararme para ello.

Cuando estás estudiando y practicando para el examen, así como durante los dos días del examen, y la propia espera del resultado no haces otra cosa que pensar en el examen. De hecho, llegas a soñar que haces el examen. No sólo me ha sucedido a mí, conozco otra persona que se está preparando para ello, que también ha llegado soñar con los días de la prueba.

El propósito de esta entrada es relatar como ha sido mi preparación para el examen, así os puede servir de ayuda a aquellos que queréis presentaros. Lo primero de todo os recomiendo leer todos los consejos de otros OCM que ofrecen en sus blogs. El mejor post (al menos el más útil) es el primero de la lista que publiqué hace tiempo en esta entrada <- LEEDLO!

Antes de empezar el examen firmas un acuerdo de confidencialidad (NDA – Non Disclosure Agreement), por lo que nos os puedo hablar del contenido del mismo. Pero puedo explayarme abiertamente con trucos, consejos y materiales que he usado para poder aprobarlo.

  • Lo vuelvo a repetir, leed los consejos de otros OCMs para maximizar el rendimiento de vuestro estudio
  • Ante todo, es un examen. Y como tal, hay que prepararlo. La experiencia es imprescindible, pero no suficiente.
  • En mi caso he practicado cada uno de los ejemplos por separado. He guardado todas las notas de mis ejercicios en mi ordenador para poder repasarlo. Además, están publicadas todas en la página http://www.dbajunior.com/ocm/.
  • Como herramienta de seguimiento, he impreso la lista de objetivos del examen. Cada vez que terminaba un objetivo, lo marcaba con un tick (✓). De la misma forma, cuando finalizaba una sección la marcaba con un círculo. Este método te sirve para planificarte, organizarte y hacer anotaciones de futuros ejercicios que no encajan en ciertas areas. No os podéis imaginar el valor que tiene dicha hoja para mí. Aquí la tenéis.

Apuntes sobre OCM

  • El tiempo que te lleva preparar los objetivos del examen puede ser muy variable. Depende de la profundidad que hagas de cada uno, la experiencia que tengas, la facilidad de compresión, … En mi caso, si juntara todo el esfuerzo en jornadas de 8h, sumarían 4 meses de trabajo.
  • Una vez que he practicado todo los objetivos del examen, entrenaba a hacer todos los de una sección a la vez. Por ejemplo, realizar todos los ejercicios del area de “Server Configuration”. Anotas el tiempo, y avanzas a la siguiente sección.
  • En este punto te interesa tener plantillas de tus máquinas virtuales preparadas para desplegarlas con facilidad y no perder el tiempo con configuraciones.
  • A partir de aquí el objetivo es sencillo, reducir los tiempos. Trataba de finalizar cada sección en el menor tiempo posible, y por supuesto sin Internet ni mis notas. Sólo con la documentación oficial.
  • Finalmente, como el examen se hace en dos días, el objetivo es realizar todas las secciones en menos de dos jornadas.
  • En los últimos días, antes de presentarte, es bueno hacer variaciones sobre los ejercicios que tengas. Ej.: Puedes instalar Grid Control con OEM, Backup/Restore o DUPLICATE. Intenta probar todas las variaciones. Otro Ej.: Despliega el agente de múltiples maneras (OEM Fresh Install, agentDownload o Response File).

Como veis, mis recomendaciones no son especialmente llamativas, pero son efectivas. Algo que no he dicho, pero que os podéis imaginar, es que hace falta perseverancia. No os paréis. Si tenéis problemas, buscad la solución. Si no la encontráis, pedid ayuda. Si os da pereza, perseverad con más fuerza.

Del contenido del examen no os puedo hablar pero os puedo dar mi valoración personal de como he resuelto cada sección. Es una valoración totalmente subjetiva, en función de todos los ejercicios propuestos. El mecanismo de evaluación es desconocido, y tampoco recibies un resultado general, únicamente si apruebas o no. No os confiéis con esta tabla, ya que algunos ejercicios os pueden tumbar toda una sección, luego interpretad estos datos con cuidado.

OCM 11g Assesment

Un mes después del examen, recibes la felicitación por e-mail. Y casi dos semanas después recibes el certificado, una chaqueta (bastante deportiva) y una carta de enhorabuena.Oracle Certified Master 11g Title

Etiquetas: