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)
- In Memory – Introduction (The Next Big Thing) by Maria Colgan
- In Memory – Configuration, Population & Querying by Maria Colugan
- In Memory & How It Fits Into The Rest Of The Oracle Database Including RAC Partitioning, Indexes etc. By Maria Colgan
- In Memory & The Optimizer by Maria Colgan
- Pluggable Databases: What They Will Break & Why You Should Use Them Anyway! By Tim Hall (oracle-base.com)
- 12c PDBs, Snapshots & Change Management
- A Cure For Virtual Insanity: A Vendor-Neutral Introduction To Virtualization Without The Hype by Tim Hall (oracle-base.com)
- Maintaining Data System For The Single Electricity Market
- Ten Tiny Things to Try Today: Hidden APEX 5 Gems Revealed
- What Are They Thinking? With Oracle Application Express & Oracle Data Mining
- How To Avoid Boring Work – Automation For DBAs
Saludos!
Hola 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.
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;
Hola! 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 | |
Lo Nuevo en 12c (Recuperación y Respaldo) | Español | Francisco Muñoz | |
The Headaches of Oracle Licensing | Inglés | iQuate | |
Todos Hablan de DR | Español | Francisco Muñoz | |
Histograms in 12c | Inglés | Jonathan Lewis |
Hace 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.
- 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.
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 Database 12c ya está entre nosotros. Después de una larga espera y muchos rumores sobre posibles fechas de estreno, todo el mundo puede descargar el software y hacer pruebas en sus entornos. Actualmente está disponible para Linux x86-64, Solaris SPARC y Solaris x86-64.
Ayer estuve echando un vistazo sobre las novedades, y hay ciertas cosas que me llamaron la atención. Aunque habrá que leer con más calma las «New Features» para sacar el máximo provecho a la nueva versión. Entre las novedades más destacadas, según mi opinión:
- Oracle Multitenant: La posibilidad de consolidar varias BBDD (pluggable databases) en una sola. La característica más esperada de esta versión. Veremos como se comporta cuando empecemos a consolidar.
- Oracle Flex ASM: Vamos a poder tener una instancia ASM en otro servidor distinto al de BD. Esto parece la típica funcionalidad super inestable hasta que salga la versión 12cR2.
- Procesos Multi-Threaded: Hace tiempo vi una demo en la que se demostraba un nuevo modelo multi-threaded de procesos en 12c para Unix, y se veía una mejora de rendimiento bastante considerable.
- PGA_AGGREGATE_LIMIT: Bien!!! ya podemos limitar la PGA. Por fin diremos adiós a los evictions en RAC por paginación brutal (que no son pocos!)
- PROCESSOR_GROUP_NAME: Este parámetro nos permitirá asignar un subconjunto de CPUs a la BD. Junto con Oracle Multitenant para consolidar.
Esto es lo que he visto en una pasada rápida, pero os recomiendo echar un vistazo a la página de «New Features» de la documentación oficial. Y si queréis descargar el software, lo podéis hacer desde aquí.
A partir de del 13 de Mayo se van a producir una serie de cambios en el examen OCM 11g. En concreto:
- El examen se realiza completamente en 32 bits (Sistema Operativo + Oracle)
- Se utiliza Oracle Enterprise Manager 11g Grid Control (11.1.0.1.0) – Yuju! 🙂
- La versión específica de Oracle es 11.2.0.3.0
- Desaparece la parte de Streams.
El hecho de cambiar Grid Control 10g a 11g es lo mejor que nos podía pasar a las personas que estamos preparando el examen. Y trabajar todo en 32bits también facilita ciertas cosas, como problemas con las librerías y ciertos bugs.
Aprovecho para anunciar que voy a sacar tiempo para volver a dar nuevos seminarios, así que estad atentos. Van a ser de temas y conceptos fundamentales como Arquitectura de BBDD, Instalación, comandos de SSOO; para continuar con el espíritu de la página y ayudar a la gente que está empezado.
Me he visto obligado a cambiar de proveedor del Hosting donde tengo alojado el Blog. Después de quejarme varias veces a HostMonster, la última respuesta que me dieron fue que optimizara la Base de Datos, entre otras cosas. Esa fue la chispa que activó el proceso pesado contratar otro Hosting, volcar la BD, instalar un WordPress «nuevecito», importar y revisar. Ya está hecho, así que una cosa menos.
Sigo preparando el OCM. Ahora estoy con Grid Control «a saco». Que por cierto, da muchísimos problemas la instalación. He mandado una consulta a la gente de Oracle Certification para ver si es posible saber qué versiones base y parches se utilizan en el examen.
La combinación más «estable» que he conseguido instalar es Grid Control 10.2.0.3 para luego parchear a 10.2.0.5. Para el agente, he tenido que descargar la versión 10.2.0.5 y luego instalar el parche 9404807. Y además, hay que modificar «a mano» el fichero targets.xml para que el agente empiece a subir XML al OMS. Ya colgaré el ejercicio cuando proceda.
Me he fijado que muchos objetivos hablan de Enterprise Manager «a secas». Por lo que entiendo que si haces el ejercicio con OEM DB Console también deben ser válidos. Esperaré la respuesta de Oracle para ver cómo proceder con este tema. Mientras tanto, avanzo con mi querido Grid Control que tanta guerra me ha dado.
Ahh!! He subido otros 15 tutoriales/ejercicios/objetivos 🙂
[16] Determine and set sizing parameters for database structures
[17] Create and manage temporary, permanent, and undo tablespaces
[18] Stripe data files across multiple physical devices and locations
[19] Configure the database environment to support optimal data access performance
[20] Create and manage database configuration files
[21] Create and manage bigfile tablespaces
[22] Create and Manage a tablespace that uses NFS mounted file system file
[23] Create and manage multiple network configuration files
[24] Create and configure a listener
[25] Configure the database instance to support shared server connections
[26] Set up network tracing
[27] Manage Oracle network processes
[28] Configure the network environment to allow connections to multiple databases
[29] Use configurationless connections
[30] Use Grid Infrastructure to manage oracle databases and other resources
He aprovechado el tiempo esta semana para avanzar en mi camino a la certificación OCM 11g. Podéis ver mi progreso en la página http://www.dbajunior.com/ocm o pulsando en la única pestaña del menú superior. Cada práctica u objetivo finalizado está numerado para hacer un seguimiento más sencillo.
Actualmente están disponibles los siguientes tutoriales. Para poder realizarlos en vuestra casa, necesitáis al menos 8GB de RAM. Una gran parte de los futuros ejercicios se podrán hacer con esos 8GB, pero para poder hacerlos todos, os harán falta 16GB.
[01] Descarga Software Oracle 11.2 y Oracle Linux 5.4 (Pendiente de modificación tras cambios en el examen)
[02] Crear máquina virtual OCM
[03] Instalación Oracle Linux 5.4 en Máquina OCM
[04] Instalación Software Oracle 11.2.0.1 en Máquina OCM
[05] Create the database (Single Instance)
[06] Install Oracle Grid Infrastructure
[07] Create ASM Disk Groups
[08] Install the Oracle Database 11gR2 software
[09] Configure ASM for the shared disks and create a clustered database
[10] Configure archiving
[11] Configure Services using both Manual and Policy Managed Methods
[12] Create and manage as ASM instance
[13] Implement ASM failure groups
[14] Creating ACFS File System
[15] Start,Stop, Configure and Administer Oracle Grid Infrastructure
[16] Determine and set sizing parameters for database structures
[17] Create and manage temporary, permanent, and undo tablespaces
[18] Stripe data files across multiple physical devices and locations
[19] Configure the database environment to support optimal data access performance
[20] Create and manage database configuration files
[21] Create and manage bigfile tablespaces
[22] Create and Manage a tablespace that uses NFS mounted file system file
[23] Create and manage multiple network configuration files
[24] Create and configure a listener
[25] Configure the database instance to support shared server connections
[26] Set up network tracing
[27] Manage Oracle network processes
[28] Configure the network environment to allow connections to multiple databases
[29] Use configurationless connections
[30] Use Grid Infrastructure to manage oracle databases and other resources
Ya he preparado otros 5 temas sobre Grid y RAC. Esta semana los iré colgando. Si se os ocurren ideas de ejercicios adicionales que se pueden realizar en cada tema, no dudéis en enviármelos. Espero que éstos os sirvan de ayuda.
Actualización 12-Nov: Añadidos los tutoriales 07 al 11.
Actualización 10-Dic: Añadidos los tutoriales 12 al 15.
Actualización 17-Ene: Añadidos los tutoriales 16 al 30.
Acabo de llegar de vacaciones (ayer) y ya me he puesto a planificar mi preparación. Hay ciertas personas que ya cuentan con la certificación de OCM y dan ciertas recomendaciones o pautas a la hora de prepararlo. Cada uno presenta ciertos trucos, como el de comprar un teclado en Alemán para no tener problemas durante el examen (Laurent Schneider) o cómo priorizar las tareas a ejecutar durante el examen (Oleksandr Denysenko).
Aquí pongo la lista de enlaces de las recomendaciones más interesantes que he visto. Si encontráis alguno más no dudéis en enviármelo.
- How Eter Pani became Oracle Certified Master (Eter Pani) <– Muy Recomendable!!!
- I have passed OCM 10g Exam. How to prepare ? (Oleksandr Denysenko)
- How to become an Oracle Certified Master (My OCM journey) (Kamran Agayev)
- Passing the 11g Oracle Certified Master (OCM) Exam – some thoughts (Gavin Soorma)
- How to prepare to Oracle Database 11g Certified Master Exam (Yury Velikanov)
- OCM 11g Upgrade (Laurent Schneider)