Administración, tips, trucos y utilidades para bases de datos IBM DB2

Administración, tips, trucos y utilidades para bases de datos IBM DB2
Dataprix 14 Noviembre, 2019 - 08:02

Recopilación de publicaciones de utilidades, consejos, ejemplos y trucos sobre la base de datos IBM DB2

Consultar el Ratio Hit Cache en IBM DB2

Consultar el Ratio Hit Cache en IBM DB2 Oscar_paredes 28 Noviembre, 2019 - 08:05

El ratio hit cache es uno de los indicadores más usados para tareas de tuning. Mide el porcentaje de aciertos en la búsqueda de datos en memoria, en concreto en la/las buffer pool.

Para obtener el ratio hit cache por cada buffer pool configurado se debe ejecutar esta query:

SELECT SUBSTR(DB_NAME,1,8) AS DB_NAME, SUBSTR(BP_NAME,1,14) AS BP_NAME,

     TOTAL_HIT_RATIO_PERCENT, DATA_HIT_RATIO_PERCENT,

     INDEX_HIT_RATIO_PERCENT

FROM SYSIBMADM.BP_HITRATIO ORDER BY DBPARTITIONNUM

Esta query muestra el ratio por cada buffer cache, separando entre el ratio que se obtiene con bloques de datos y bloques de índices.

El valor al que debe tender este ratio debe ser por encima del 90%, lo más cercano a un 100%.

 

Cómo buscar las tablas con más accesos en DB2

Cómo buscar las tablas con más accesos en DB2 Oscar_paredes 28 Enero, 2020 - 19:33

Es relativamente simple, y poco conocido, con la utilidad db2top.

Accediendo a la opción “T” (tablas) y ordenando la lista (pulsar “z”) e indicar que lo realice por la columna 1.

En primera posición aparecerá la tabla más accedida. Si existe mucha diferencia entre las primeras y el resto durante un periodo de tiempo apreciable de uso normal de la base de datos, esas tablas serían candidatas a intentar mejorar su acceso a ellas o intentar que sus tiempos de acceso sean óptimos para mejorar el rendimiento global.

 

Cómo conocer el puerto de conexión de DB2

Cómo conocer el puerto de conexión de DB2 Oscar_paredes 2 Enero, 2019 - 17:39

Aunque seguro que hay otros métodos, en este pequeño artículo, una manera sencilla de conocer el puerto por el que da servicio el servidor DB2.

Obtenemos el nombre del servicio TCP/IP:

> db2 get dbm cfg | grep SVCENAME

Capturamos el resultado:

TCP/IP Service name (SVCENAME) = db2TRP

Lo buscamos en /etc/services:

> cat /etc/services | grep sapdb2QRP

db2TRP 5912/tcp # DB2 Communication Port

 

El puerto de escucha es el 5912.

Cómo saber cuándo fue el último reinicio de DB2

Cómo saber cuándo fue el último reinicio de DB2 Oscar_paredes 18 Enero, 2020 - 19:25

Este mini post indica como saber cuándo fue la última vez que se reinició un servidor DB2 en un entorno UNIX/LINUX.

> db2 get snapshot for dbm | grep Start

Start Database Manager timestamp = 04/02/2011 13:45:20.516473

Sencillo, no? Espero que te sea útil

 

DB2 Top 10 SQL por Tiempo de Ejecución

DB2 Top 10 SQL por Tiempo de Ejecución Oscar_paredes 15 Septiembre, 2019 - 09:50

Si quieres obtener el Top Ten de sentencias SELECT con mayor tiempo de ejecución en tu base de datos DB2:

db2 "SELECT AVERAGE_EXECUTION_TIME_S as TIME_SECONDS, 

        NUM_EXECUTIONS as EXECUTIONS,

        STMT_TEXT as TEXT

        FROM SYSIBMADM.TOP_DYNAMIC_SQL

        WHERE upper(STMT_TEXT) like 'SELECT%'

       ORDER BY AVERAGE_EXECUTION_TIME_S DESC

        FETCH FIRST 10 ROWS ONLY"

DB2 Top 10 SQL por número de ejecuciones

DB2 Top 10 SQL por número de ejecuciones Oscar_paredes 23 Septiembre, 2019 - 10:00

SQL para obtener el top ten de SQL con más ejecuciones de mi base de datos DB2:

db2 "SELECT NUM_EXECUTIONS as EXECUTIONS,

        AVERAGE_EXECUTION_TIME_S as TIME_SECONDS,

        STMT_TEXT as TEXT  

        FROM SYSIBMADM.TOP_DYNAMIC_SQL  

        WHERE upper(STMT_TEXT) like 'SELECT%'  

        ORDER BY NUM_EXECUTIONS DESC

        FETCH FIRST 10 ROWS ONLY"

 

DB2 Write Suspend

DB2 Write Suspend Oscar_paredes 10 Enero, 2019 - 17:44

Cuando se realiza un snapshot desde una cabina de almacenamiento, en el caso de exista un servidor DB2 (o cualquier Base de Datos), no hay certeza de que el snapshot contenga una copia consistente de la base de datos.

Para poder lanzar un snapshot y asegurar la copia consistente, en DB2 existe la posibilidad de poner la base de datos en “write suspend”, esto es, se anula el acceso a disco en modo de escritura, y se trabaja en el buffer pool de memoria. Las consultas si accederán a disco, pero las escrituras se realizaran exclusivamente en memoria.

> db2 set write suspend for database

Una vez lanzado este comando, se puede realizar un snapshot sin problemas y con garantías de consistencia.

Para volver a dejar la base de datos sin “write suspend”:

> db2 set write resume for database

Aunque entraría dentro de otra discusión, para poder recuperar el snapshot se debiera usar la instrucción db2inidb:

> db2inidb database as snapshot

 

DB2 con BLU Acceleration para SAP

DB2 con BLU Acceleration para SAP Oscar_paredes 13 Septiembre, 2019 - 08:39

Cada vez conozco más entornos SAP corriendo con DB2.

Este es un video muy interesante respecto a las capacidades de DB2 con BLU Acceleration aplicadas a SAP, así como las notas SAP a considerar.

Sorprendente la comparativa con SAP HANA, y como con menor complejidad e inversión dicen obtener mayor rendimiento.

 

Adjunto también presentación de la Tech Talk Use DB2 with BLU Acceleration for SAP, de la que destaco las sorprendentes conclusiones de esta comparación de BD2 BLU Acceleration con SAP HANA:

Por último, adjunto también el completísimo Redbook de IBM Architecting and Deploying DB2 with BLU Acceleration.

 

Definición de columnas autoincrementales “identity” en DB2

Definición de columnas autoincrementales “identity” en DB2 Oscar_paredes 25 Septiembre, 2019 - 10:05

En DB2 es posible crear columnas autoincrementales, es decir, cuyo valor en caso de no definirse en una inserción se vaya incrementando a partir de unos valores definidos. Este tipo de columnas también se pueden definir en SQL Server, y en Oracle se realiza a través de secuencias.

La mejor manera de explicarlo es con un ejemplo: a continuación se muestra la creación de una tabla con una columna autoincremental que es primary key.

Creación de la tabla ESTUDIANTES con la columna ID definida como autoincremental:

CREATE TABLE ESTUDIANTES ( 
     ID_ESTUDIANTE SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 500, INCREMENT BY 1), 
     NOMBRE VARCHAR(36), 
     APELLIDOS VARCHAR(80), 
     PRIMARY KEY(ID_ESTUDIANTE) )

Inserción de diversos registros sin especificar el campo:

db2 => insert into estudiantes (nombre, apellidos) values ('PEPE','SANCHEZ')

DB20000I The SQL command completed successfully.

db2 => insert into estudiantes (nombre, apellidos) values (‘JOHN’,’SMITH’)

DB20000I The SQL command completed successfully.

 

Seleccionamos los datos para ver los valores asignados al campo ID:

db2 => select * from estudiantes

ID_ESTUDIANTE NOMBRE APELLIDOS

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

500 PEPE SANCHEZ

501 JOHN SMITH

2 record(s) selected.

Como se puede observar se han asignado valores consecutivos a partir de 500.

 

Detección de índices, tablas y packages no usados en DB2

Detección de índices, tablas y packages no usados en DB2 Oscar_paredes 5 Febrero, 2020 - 19:45

A partir de la versión 9.7 de DB2, se puede conocer que índices no están siendo usados en una Base de Datos. La consulta es igualmente trasladable a tablas y packages.

DB2 proporciona así una herramienta útil para tunear los índices y detectar problemas en su uso.

La novedad que incluye la versión 9.7 es la inclusión de un nuevo campo LASTUSED en las tablas SYSCAT.INDEXES, SYSCAT.TABLES y SYSCAT.PACKAGES.

Este campo indica la fecha de último uso del índice, tabla o packages.

Por ejemplo, para consultar los índices no usados desde el 1/1/2019 se podría utilizar esta simple query:

SELECT INDSCHEMA, INDNAME, TABNAME
FROM SYSCAT.INDEXES
WHERE LASTUSED = '01/01/2019';

Espero que os sea de utilidad para eliminar índices absurdos.

Estado de los tablespaces en DB2

Estado de los tablespaces en DB2 Oscar_paredes 23 Diciembre, 2019 - 16:48

En este artículo podrás consultar los estados más habituales de los tablespaces en DB2.

Estos estados pueden ser consultados de distintas formas, aunque la más habitual desde la linea de comandos en la siguiente.

db2 > list tablespaces show detail

Tablespace ID = 32

Name = JRP#DDICI2

Type = Database managed space

Contents = All permanent data. Large table space.

State = 0x0000

Detailed explanation:

Normal

Total pages = 76552

Useable pages = 76544

Used pages = 74854

Free pages = 1690

High water mark (pages) = 74854

Page size (bytes) = 16384

Extent size (pages) = 2

Prefetch size (pages) = 8

Number of containers = 4

 

Estados existentes tablespaces DB2:

               0x0                         Normal

               0x1                         Inmovilizado: SHARE

               0x2                         Inmovilizado: UPDATE

               0x4                         Inmovilizado: EXCLUSIVE

               0x8                         Carga pendiente

               0x10                      Supresión pendiente

               0x20                      Copia de seguridad pendiente

               0x40                      Recuperación en curso

               0x80                      Recuperación (en avance) pendiente

               0x100                    Restauración pendiente

               0x100                    Recuperación (recovery) pendiente (no se utiliza)

               0x200                    Inhabilitación pendiente

               0x400                    Reorganización en curso

               0x800                    Copia de seguridad en curso

               0x1000                  El almacenamiento debe estar definido

               0x2000                  Restauración en curso

               0x4000                  Fuera de línea y no accesible

               0x8000                  Eliminación pendiente

               0x2000000         Puede que el almacenamiento esté definido

               0x4000000         Definición de almacenamiento en estado ‘final’

               0x8000000         Defin. de almacen. cambiada antes de recup. en avan.

               0x10000000       Reequilibrador DMS activo

               0x20000000       Supresión de espacio de tablas en curso

               0x40000000       Creación de espacio de tablas en curso

               0x8                         Para uso de servicio solamente

 

Formato de fechas según modo horario en DB2

Formato de fechas según modo horario en DB2 Oscar_paredes 9 Octubre, 2019 - 08:07

Para dar un formato especifico a la fecha obtenida a través de DB2 mediante “current date” se puede usar el siguiente método.

Obtención de la fecha con formato de hora europeo

select CHAR(current date, EUR) from sysibm.sysdummy1

1

----------

22.03.2012

1 record(s) selected.

Obtención de la fecha con formato de hora americana

db2 => select char(current date, USA) from sysibm.sysdummy1

1
----------
03/22/2012

1 record(s) selected.

 

Otros formatos que pueden usarse:

USA — Usa el IBM standard para el formato de fechas y tiempos de USA.

EUR — Usa el IBM standard para Europa.

DEF — Usa el formato de fechas y tiempos asociadas al código de territorio.

ISO — Usa el formato de fechas y tiempos del International Standards Organization.

JIS — Usa el formato de fechas y tiempos del Japanese Industrial Standard.

LOC — Usa el formato de fechas y tiempos local asociada al código de territorio de la base de datos.

 

Graba y haz replay con DB2TOP

Graba y haz replay con DB2TOP Oscar_paredes 17 Septiembre, 2019 - 09:54

DB2TOP es una herramienta muy útil en la administración de BBDDs que habitualmente se usa de manera online, pero también se puede usar para grabar la información y que pueda ser analizada cuando los teléfonos dejen de sonar y el problema haya pasado. En este artículo verás como capturar toda la información de db2top y como poder volver a verla en tiempo real de nuevo.

¿Cómo capturar la info de DB2TOP? Con la opción “-C”. Pulsar “N” para la creación de un fichero con los datos. La opción “-m” sirve para indicar el número de minutos a recolectar, si tienes problemas de espacio.

defidb2:db2dfi 4> db2top -C -m 10

[18:20:30] Starting DB2 snapshot data collector, collection every 2 second(s), max duration unlimited, max file growth/hour 100.0M, hit to cancel...

[18:20:31] Writing to 'db2snap-DFI-AIX64.bin', should I create a named pipe instead of a file [N/y]?

En vez de por línea de comandos, puedes capturar la info desde dentro de la consola de db2top pulsando la opción “C”.

¿Cómo reproducir los datos capturados? Con la opción “-f” para indicar el fichero de datos recogidos en el paso anterior.

> db2top -f db2snap-DFI-AIX64.bin

Al reproducir los datos, puedes observar que la consola mostrada simula estar en la hora y fecha que se capturaron los datos, pudiendo navegar por todas las opciones de db2top como si estuviera en directo.

 

Existe adicionalmente la opción de saltar “n” segundos de reproducción indicando +n segundos como se indica a continuación:

> db2top -f db2snap-DFI-AIX64.bin +50

Historial de versiones de DB2

Historial de versiones de DB2 Oscar_paredes 25 Noviembre, 2019 - 08:22

Este artículo muestra cómo obtener con una query el historial de versiones de DB2 y sus parcheos.

Es decir, no sólo muestra la versión actual, sino desde cuando está instalada/actualizada, incluyendo todas la versiones/parches anteriores.

select versionnumber, version_timestamp

from sysibm.sysversions

El resultado de la query nos muestra el historial de versiones/parches de la instalación:

VERSIONNUMBER VERSION_TIMESTAMP
------------- --------------------------
9050000 2009-09-18-13.06.42.998615
9050300 2010-03-21-21.58.42.326805
9070300 2011-03-07-09.21.03.802135

IBM Optim Database Administrator

IBM Optim Database Administrator Oscar_paredes 29 Diciembre, 2019 - 17:13

IBM [InfoSphere] Optim Database Administrator (antes conocido como IBM Data Studio Administrator) proporciona un entorno de gestión del ciclo de cambios de un entorno de Bases de Datos para facilitar el trabajo entre desarrolladores, arquitectos y Administradores de Base de Datos.

La Gestión del Cambio en entornos de Bases de Datos complejos con participación de distintos equipos en generación constante de cambios, conlleva la necesidad de una herramienta para gestionarlos para poner orden, coherencia y seguridad en los cambios que se implementan y permitir mejorar la productividad.

IBM Optim database administrator

 

IBM Optim Database Administrator permite, entre otros:

  • Modelar, automatizar e implementar cambios complejos en schemas de Bases de Datos
  • Garantizar la seguridad de los datos, dependencias de objetos y aplicaciones
  • Mejorar la colaboración entre DBAs, Arquitectos y Desarrolladores
  • Reducir el riesgo de downtime determinando el impacto de los cambios antes de aplicarlos
  • En caso de problemas en los cambios aplicados, permite dar marcha atrás de manera rápida.
  • Mantiene un histórico de cambios introducidos en una Base de Datos

 

Es una herramienta con coste, se puede descargar una trial desde IBM para probarla con toda la funcionalidad durante 30 días.

Las opciones principales nos dan una idea de la potencia en distintos ámbitos que tiene la herramienta:

  • DISEÑO
    • View a Diagram of database objects
    • Reverse engineer a database to a model
  • DESARROLLO
    • Create and run SQL or XQuery statements
    • Create a stored procedurel
    • Debug stored procedure and UDFs
  • ADMINISTRACIÓN
    • Connect and browse a Database
    • Create and run a script
    • Create, alter o drop database objects
    •  Create change scripts for multiple objects Migrate using copy and paste
    • Migrate using the compare editor
    • Grant or revoke security privileges
       
  • TUNING
    • Visualize explain / access plans
  • MONITOR
    • View a health summary
    • View alerts list
    • View application connections
    • View table space storage usage

Recomendada para entornos complejos y/o con muchos equipos involucrados y con poder de decisión sobre los cambios a aplicar.

 

Limitaciones DB2 Community Edition en comparación con Oracle XE y SQL Server Express

Limitaciones DB2 Community Edition en comparación con Oracle XE y SQL Server Express Oscar_paredes 11 Noviembre, 2019 - 08:09

La versión gratuita de DB2 (DB2 Community Edition, que sustituye a DB2 Express-C) tiene mucho menos limitaciones que las existentes en Oracle y SQL Server: Oracle 18c Express Edition y SQL Server 2017 Express.

En este artículo se muestra está ventaja que se obtiene con IBM DB2 Community Edition en comparación con sus rivales.

Características

DB2 Community Edition

SQL Server 2017 Express

Oracle 18c Express Edition

CPUs Máximas

Hasta para 4 Núcleos

Hasta 4 cores

Hasta 2 threads

RAM Máxima

16 GB

1 GB

2 GB

Limitación Tamaño

100 GB

10 GB

12 GB

32/64 bits

32-64 bits

32 bits / 32-64 bits

32 bits / 32-64 bits

 

Como se puede observar DB2 Community Edition ofrece el menor número de limitaciones, y puede ser una buena opción para soluciones productivas sin gran necesidad de recursos.

Obtener en DB2 el servidor actual con SYSDUMMY1

Obtener en DB2 el servidor actual con SYSDUMMY1 Oscar_paredes 18 Noviembre, 2019 - 08:12

Mediante el uso de la tabla sysdummy1 se pueden consultar distintos datos de un servidor con DB2.

La siguiente query muestra como obtener el nombre del servidor DB2 al que se está conectado:

SELECT CURRENT SERVER

FROM SYSIBM.SYSDUMMY1

 

Opciones db2 command line – Eliminar autocommit

Opciones db2 command line – Eliminar autocommit Oscar_paredes 29 Septiembre, 2019 - 10:09

La utilidad db2 command line tiene una serie de opciones por defecto. En este artículo mostraremos como eliminar el autocommit de las sentencias DML que por defecto está activado. En el caso de querer hacer alguna prueba, por ejemplo, simulando bloqueos o uso de logs puede ser útil eliminar esta característica, que está por defecto, para evitar que una sesión sin commit haga que usemos un número de logs activos superior al necesario.

Las opciones activas del DB2 command line se pueden obtener con las siguientes instrucciones:

db2 => ? options

db2 [option ...] [db2-command | sql-statement |

[? [phrase | message | sqlstate | class-code]]]

option: -a, -c, -d, -e{c|s}, -finfile, -i, -lhistfile, -m, -n, -o,

-p, -q, -rreport, -s, -t, -td;, -v, -w, -x, -zoutputfile.

Option Description Default Setting

------ ---------------------------------------- ---------------

-a Display SQLCA OFF

-c Auto-commit ON

-d Retrieve and display XML declarations OFF

-e Display SQLCODE/SQLSTATE OFF

-f Read from input file OFF

......

-x Suppress printing of column headings OFF

-z Save all output to output file OFF

 

db2 => LIST COMMAND OPTIONS

Command Line Processor Option Settings


Backend process wait time (seconds) (DB2BQTIME) = 1

No. of retries to connect to backend (DB2BQTRY) = 60

Request queue wait time (seconds) (DB2RQTIME) = 5

Input queue wait time (seconds) (DB2IQTIME) = 5

Command options (DB2OPTIONS) =


Option Description Current Setting

------ ----------------------------------------        ---------------

-a Display SQLCA OFF

-c Auto-Commit ON

-d Retrieve and display XML declarations OFF

-e Display SQLCODE/SQLSTATE OFF

-f Read from input file OFF

........

-x Suppress printing of column headings OFF

-z Save all output to output file OFF

 

Mientras que la primera sólo muestra la información de la sintaxis y opciones existentes con sus valores por defecto (atención! no valores actuales), la segunda muestra los valores actuales en vigor.

Las opciones por defecto se pueden determinar con la variable de entorno DB2OPTIONS, indicando con un ‘+’ o con un ‘-‘ la activación o no de esta opción.

Los métodos para cambiar una opción existente son:

1. Desde la llamada al DB2 command line utilizando las opciones como argumento:

> db2 +c

 

2. Con el comando UPDATE COMMAND en cualquier momento. Por ejemplo, para eliminar la característica de AUTOCOMMIT seria:

db2 => UPDATE COMMAND OPTIONS USING c OFF

DB20000I The UPDATE COMMAND OPTIONS command completed successfully.

 

Otro método para detectar índices no usados en DB2

Otro método para detectar índices no usados en DB2 Oscar_paredes 24 Diciembre, 2019 - 19:20

En este artículo muestro un método para ver los índices no-usados de nuestra base de datos desde el último reinicio.

Ya traté este tema en el artículo Detección de índices, tablas y packages no usados en DB2 9.7, pero dicho artículo utiliza la columna LASTCOLUMN incluida en la versión 9.7. Si tienes otra versión, o incluso la 9.7, este artículo te permitirá conocer que índices no están siendo usados, con el desperdicio de recursos que conlleva.

La utilidad “DB2 Problem Determination” o db2pd para los conocidos, permite entre muchísimas otras cosas, la obtención de la información que buscamos mediante las siguientes opciones:

> db2pd -db TRP -tcbstats index

La información retornada se estructura en 4 apartados:

TCB Table Information:

Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm

ObjClass DataSize LfSize LobSize XMLSize

0x0700000050A88BD8 32 2640 n/a 32 2640 CRMPAROLTP SAPTRP Perm 1 0 0 0

0x0700000052138358 32 9127 n/a 32 9127 T5ES4 SAPTRP Perm 1 0 0 0

TCB Table Stats:

....

....


TCB Index Information:

....

....


TCB Index Stats:

Address TableName IID PartID EmpPgDel RootSplits BndrySplts PseuEmptPg

EmPgMkdUsd Scans IxOnlyScns KeyUpdates InclUpdats NonBndSp

ts PgAllocs Merges PseuDels DelClean IntNodSpl

0x070000005F7F58D0 CRMPAROLTP 1 n/a 0 0 0 0 0 1 0 0 0 0

0 0 0 0 0

0x0700000052138DD0 T5ES4 1 n/a 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0

0x07000000401A9B50 A746 1 n/a 0 0 0 0 0 273 0 0 0 0

0 0 0 0 0

0

La que nos interesa en este artículo, es el último apartado “TCB Index Stats”, y en concreto la columna “Scans”, que nos indica el número de usos de dicho indice.

No hace falta decir, que si la columna Scans está a 0, el índice es candidato a ser eliminado o a estudiar el porqué de su falta de uso.
 

Snapshots para tuning DB2

Snapshots para tuning DB2 Oscar_paredes 13 Noviembre, 2019 - 07:51

Para realizar un estudio de tuning es util la la creación de snapshots para capturar información de distintas estructuras/componentes de la instancia de base de datos.

En este articulo mostramos como se pueden utilizan para realizar un análisis de tuning.

Lo primero de todo, es tener activos los monitor switches que van recolectando datos de las distintas estructuras.

El estado de los monitores se pueden consultar de este modo:

db2pqr 2> db2 -v get monitor switches

Monitor Recording Switches


Switch list for db partition number 0


Buffer Pool Activity (BUFFERPOOL) = ON 01/19/2012 18:10:56.183312

Lock Information (LOCK) = ON 01/19/2012 18:10:56.183312

Sorting Information (SORT) = ON 01/19/2012 18:10:56.183312

SQL Statement Information (STATEMENT) = ON 01/19/2012 18:10:56.183312

Table Activity Information (TABLE) = ON 01/19/2012 18:10:56.183312

Take Timestamp Information (TIMESTAMP) = ON 01/19/2012 18:10:56.183312

Unit of Work Information (UOW) = ON 01/19/2012 18:10:56.183312

 

En caso de que esten desactivados, se pueden activar mediante la sentencia “update monitor switches”, o a través de “update dbm config”:db2 -v update monitor switches using bufferpool on

db2 -v update monitor switches using lock on

db2 -v update monitor switches using sort on

db2 -v update monitor switches using statement on

db2 -v update monitor switches using table on

db2 -v update monitor switches using timestamp on

db2 -v update monitor switches using UOW on

Una manera de realizar un estudio de tuning podría consistir en:

1. Verificar estado monitores

2. Reset de todas las métricas

3. Lanzamiento de los procesos/querys que se quieran estudiar, o simplemente el trabajo normal de la base de datos

4. Lanzamiento de los snapshots apropiados

Reset de todas las métricas:

db2 -v reset monitor all

Lanzamiento de los distintos tipos de snapshots: (habitualmente para problemas de rendimiento con los de dbm/db/bufferpool es suficiente)

Locks    
db2 get snapshot for locks on pqr

Database Manager         
db2 get snapshot for dbm

Database            
db2 get snapshot for database on pqr

Tablespace         
db2 get snapshot for tablespaces on pqr

Bufferpool         
db2 get snapshot for bufferpools on pqr

Applicationes    
db2 get snapshot for applications on pqr

Dynamic SQL     
db2 get snapshot for dynamic sql on pqr

Tablas   
db2 get snapshot for tables on pqr

 

TOP 10 registros en DB2

TOP 10 registros en DB2 Oscar_paredes 18 Diciembre, 2019 - 16:27

En este artículo veremos como obtener los N primeros resgistros de una Query en DB2.

Lo que en Oracle se puede hacer con ROWNUM y en SQL Server con TOP.

 

La forma de realizarlo es la siguiente:

select *

from MI_TABLA

fetch first 10 rows only

 

 

Tiempos medios de acceso lectura/escritura a disco a nivel de DB2

Tiempos medios de acceso lectura/escritura a disco a nivel de DB2 Oscar_paredes 2 Diciembre, 2019 - 08:15

A través de DB2 se pueden obtener los tiempos medios en ms de acceso a disco que está teniendo DB2. Estos tiempos son determinantes para la detección de un problema de IO en los discos que tienen los datos de DB2.

Habitualmente se tiene en consideración que un valor cercano a 2-3ms es bueno, más allá de 10ms puede estar indicando problemas.

Promedio milisegundos/escritura (avg ms/write):

select trunc(decimal(sum(pool_write_time))/decimal(

(sum(pool_data_writes)+sum(pool_index_writes))),3)

from sysibmadm.snaptbsp

 

Promedio milisegundos/lectura (avg ms/read)

select trunc(decimal(sum(pool_read_time))/decimal(

(sum(pool_data_p_reads)+sum(pool_index_p_reads))),3)

from sysibmadm.snaptbsp

Para obtener valores, debes tener activados los monitores a nivel de IBM DB2. Los puedes consultar mediante la intrucción “get monitor switches”.

Traducción de terminología Oracle vs DB2

Traducción de terminología Oracle vs DB2 Oscar_paredes 14 Enero, 2020 - 18:52

Con la versión 9.7 de DB2 LUW, IBM hace un guiño a todos los DBA’s de Oracle, mucho más

numerosos en el mercado que los de DB2.

 

Para ello, en la versión 9.7 ha introducido modos de compatibilidad de Oracle que permiten

realizar tareas en DB2 con la facilidad y conocimiento que todos los DBA’s de Oracle tienen. Sin

embargo, es importante conocer la traslación de terminología entre Oracle y DB2 si tienes la

intención de meterte en el mundo DB2.

 

En este primer artículo, relaciono una serie de elementos para que esa introducción sea

sencilla y se pueda leer documentación de DB2 fácilmente. Entre ellos, terminología general,

versiones, utilidades y vistas.

Terminología Oracle vs DB2 general

Terminología Oracle vs DB2 Catalogos

Terminología Oracle vs DB2 Versiones

 

Usar db2look para crear DDL de una tabla en concreto, o un esquema completo

Usar db2look para crear DDL de una tabla en concreto, o un esquema completo Oscar_paredes 20 Diciembre, 2019 - 16:37

La utilidad db2look permite extraer la definición de los objetos de base de datos. Además, permite algo realmente interesante: extraer las estadísticas de los objetos para exportarlas a otros entornos de prueba/integración y obtener los mismos planes de acceso a los objetos.

En este artículo veremos su utilidad más frecuente.

 

Extracción del DDL de los objetos de mi esquema:

db2look -d MI_BBDD -a -e -x -o FICHERO_SALIDA.txt

Extración del DDL de la tabla DEPT:

db2look -d MI_BBDD -t DEPT -a -e -x -o FICHERO_SALIDA.txt

 

Para incluir las estadísticas se debe usar la opción “-m”.