Aproveche sus habilidades Oracle 11g para aprender DB2 9.7 para Linux, UNIX y Windows

Si usted es un(a) especialista en bases de datos interesado(a) en expandir sus habilidades en DB2® 9, hay una alta posibilidad de que en algún punto usted ya haya desarrollado habilidades de base de datos durante el uso de otros productos de bases de datos relacionales. Este artículo, actualizado recientemente para las últimas versiones de DB2 y Oracle, le muestra cómo utilizar sus conocimientos actuales de Oracle 11g para adquirir rápidamente habilidades en IBM® DB2 9.7 para Linux®, UNIX® y Windows®.

Allan W. Tham, Gestor de Contenido DB2 en Soporte Técnico Pre-Ventas, IBM Malaysia

Allan W. ThamAllan Tham trabaja como Gestor de Contenido DB2 en Soporte Técnico Pre-Ventas para Asociados de Negocios en IBM Malasia. Allan ayuda a los asociados de negocios a resolver una amplia gama de problemas técnicos. Allan posee una certificación de administración para Administración de Contenido DB2. Antes de unirse a IBM Allan trabajó en un entorno de usuario final, donde fue un DBA Oracle durante 3 años.



Raul Chong, Consultor de Bases de Datos, IBM Toronto Laboratory

Raul ChongRaul Chong es consultor de bases de datos del Laboratorio IBM de Toronto y trabaja principalmente con Asociados de Negocios IBM. Raul ha trabajado seis años en IBM, tres de ellos en Soporte Técnico DB2 9.1 y los otros tres como consultor especializado en desarrollo de aplicaciones para bases de datos y en migraciones desde otros RDBMSs hacia DB2 9.1.


Nivel de autor contribuyente en developerWorks

Alain Fisher, Soporte a la Administración de la Información, IBM

AlainAlain Fisher trabaja en el equipo GTS de Soporte a la Administración de la Información con base en IBM North Harbour. Él proporciona soporte técnico DB2 a los clientes basados en el Reino Unido y en Irlanda. Anteriormente él brindaba soporte en productos Microsoft para escritorio y servidor, y también para servidor VMware ESX desde el release 1.



Suita Gupta, Soporte a la Administración de la Información, IBM Malaysia

Suita GuptaSuita Gupta trabaja en el equipo GTS de Soporte a la Administración de la Información con base en IBM Farnborough, Reino Unido. Ella proporciona soporte técnico de DB2 a los clientes. En su antiguo rol Suita trabajó como Consultora Técnica en el Centro de Innovación de IBM de Kuala Lumpur, dando asistencia a ISVs con iniciativas de migración DB2. Suita puede contactarse en suitagup@uk.ibm.com.



07-06-2011

Introducción

E-kit IBM DB2 para Profesionales en Bases de Datos

Conozca cuán fácil es capacitarse y certificarse en DB2 para Linux, UNIX y Windows con el e-kit IBM DB2 para Profesionales en Bases de Datos. Regístrese ahora y amplíe su portafolio de habilidades, o extienda su soporte a vendedores DBMS para incluir DB2.

Un artículo anterior de developerWorks trataba sobre cómo aprovechar sus habilidades MS SQL Server 2000 para aprender DB2. ¿ Usted tiene más experiencia con Oracle que con SQL Server? Si es así, continúe leyendo. En este artículo le mostraremos cómo utilizar sus conocimientos actuales en Oracle 11g para dar rápidamente sus primeros pasos en DB2 9.7

El DB2 9.7 se ha entregado con nuevas capacidades para ayudar a administrar costos y para simplificar el desarrollo de aplicaciones. Ha habido mejoras en varias áreas como compresión, pureXML, facilidad de administración y desempeño. Este artículo se enfoca en comparar los conceptos fundamentales de DB2 y Oracle, mientras presenta los nuevos recursos disponibles en DB2 9.7

Nota: Durante el resto del artículo utilizaremos el término "Oracle" para referirnos a Oracle 11g, y "DB2" para referirnos a DB2 9.7 para Linux, UNIX y Windows.


Visión general de las estructuras de sistema

Para comenzar, necesitamos entender la arquitectura utilizada por Oracle y cómo se compara con DB2. La Figura 1 muestra la estructura de sistema de Oracle. Compárela con la Figura 2, la cual muestra la estructura de sistema de DB2. Vuelva a consultar estas figuras para mejor comprensión a medida que lee el artículo.

Figura 1. Estructura de sistema de Oracle en Linux, UNIX y Windows
Estructura de sistema de Oracle en Linux, UNIX y Windows
Figura 2. Estructura de sistema de DB2 en Linux, UNIX y Windows
Estructura de sistema de DB2 en Linux, UNIX y Windows

Instancias

El concepto de una instancia es similar tanto en Oracle como en DB2. En ambos casos una instancia es una combinación de procesos en segundo plano y memoria compartida. La principal diferencia entre los dos es que en Oracle sólo puede haber una base de datos por instancia, mientras que en DB2 múltiples bases de datos pueden compartir una instancia.

En Oracle, como hay una correspondencia de uno-a-uno entre base de datos e instancia, usted puede crear una instancia implícitamente al crear una base de datos con el comando CREATE DATABASE. De forma alternativa, para crear una instancia Oracle en su máquina usted puede utilizar el Database Configuration Assistant, o puede utilizar la opción NEW de la herramienta ORADIM, disponible en Oracle 9i. Usted también debe proporcionar cierta información incluyendo un System Identifier (SID) o un nombre de servicio, contraseña de instancia, máximo número de usuarios, modo de inicialización, y demás. Similarmente, para eliminar la instancia se puede utilizar la opción DELETE de la herramienta ORADIM. Usted necesitará ingresar el SID o el nombre del servicio. En una instalación nueva de Oracle no se crea instancia predeterminada a menos que usted cree una nueva base de datos durante el proceso de instalación.

En DB2, después de instalar el producto en la plataforma Windows, la instancia "DB2" se crea de forma predeterminada. En Linux y UNIX, el nombre de la instancia predeterminada es "db2inst1". Para crear otra instancia en la misma máquina, usted simplemente ejecuta el comando db2icrt <nombre de la instancia>.

La Figura 3 muestra una instancia llamada DB2_01 creada con el comando db2icrt desde la GUI del DB2 Control Center.

Figura 3. GUI del DB2 Control Center mostrando instancias DB2
GUI del DB2 Control Center mostrando instancias DB2

Para referenciar una instancia DB2 dada, desde una interfaz de línea de comandos, utilice la variable de entorno DB2INSTANCE. Esta variable le permite especificar la instancia activa actual a la cual aplicarán todos los comandos. Por ejemplo, si DB2INSTANCE se define como PROD y luego usted emite el comando create database MYDB1, usted creará una base de datos asociada con la instancia PROD. Si lo que deseaba era crear esta base de datos en la instancia DB2, entonces primero debía haber cambiado el valor de la variable DB2INSTANCE por DB2. Esto es similar al ORACLE_SID (System Identifier) que también se utiliza cuando los usuarios desean moverse de una instancia a otra.

Otra forma fácil para identificar la instancia con la que usted desea trabajar es utilizando la GUI del DB2 Control Center, como se muestra en la Figura 3. Para ver una entrada para la nueva instancia en esta herramienta, tal vez usted deba agregar la instancia a la GUI haciendo clic derecho en Instances y seleccionando Add. Para descargar una instancia en DB2, usted puede ejecutar el comando db2idrop <nombre de la instancia>.

Resumiendo, en Oracle se puede utilizar el Database Configuration Assistant para crear, modificar, iniciar, detener y eliminar la instancia, mientras que en DB2 se puede usar la GUI del Control Center para el mismo propósito. Además, una instancia Oracle sólo puede tener una relación de uno-a-uno con una base de datos, mientras que en DB2 este no es el caso. En una instancia DB2 pueden existir múltiples bases de datos y ser utilizadas concurrentemente.


Bases de datos

En Oracle, una base de datos puede ser creada manualmente usando el comando CREATE DATABASE o utilizando el Database Configuration Assistant. Crear la base de datos manualmente requiere que se siga una serie de pasos, incluyendo establecer las variables de OS, preparar el archivo de parámetros y crear un archivo de contraseña, antes de que se pueda ejecutar el comando CREATE DATABASE.

La información de metadatos es almacenada y administrada por el Diccionario de Datos, que está compuesto por tablas de base y las visualizaciones correspondientes. Las tablas de base se crean automáticamente durante la creación de las bases de datos y las visualizaciones se construyen al ejecutar los scripts catalog.sql y catproc.sql.

Así, la base de datos Oracle se ve como una colección de tres tipos de archivos:

  • Archivo de Datos: Contienen datos reales, la implementación física de la base de datos. (Similar a los Contenedores en DB2)
  • Archivo Redo: Este es equivalente a los Registros de Transacción en DB2.
  • Archivo de Control: Contiene información para mantener y verificar la integridad de la base de datos.

En DB2, una instancia puede contener varias bases de datos, como se muestra en la Figura 2. Cada base de datos es una unidad verdaderamente cerrada e independiente. Cada base de datos tiene su propio espacio de tabla de catálogo, espacio de tabla temporal y espacio de tabla de usuario, que son creados de forma predeterminada tras la creación exitosa de la base de datos. El DB2 contiene un archivo binario conocido como el directorio de base de datos del sistema que contiene entradas de todas las bases de datos a las que usted se puede conectar desde su máquina DB2. Este directorio se mantiene a nivel de instancia.

Cuando se crea una instancia, no se crean bases de datos de manera predeterminada. Usted necesita crear una base de datos de modo explícito utilizando el comando crear base de datos. También puede crear una base de datos usando el Control Center, como se muestra en las Figuras 4 y 5.

Figura 4. Creando una base de datos DB2 usando la GUI del Control Center
Creando una base de datos DB2 usando la GUI del Control Center
Figura 5. Creando una base de datos DB2 usando la GUI del Control (continuación)
Creando una base de datos DB2 usando la GUI del Control (continuación)

En la Figura 5 usted también puede ver lo que pasa cuando hace clic en Show Command. Todas las pantallas GUI del DB2 Control Center le permiten ver la línea o comando SQL que se está ejecutando actualmente en segundo plano. Estos comandos pueden guardarse en scripts para ejecución posteriormente, o pueden copiarse y ejecutarse desde la herramienta Command Line Processor (CLP) o desde la herramienta GUI del Command Center. Estas herramientas son equivalentes a SQL*Plus e iSQL *Plus de Oracle, respectivamente.

Una base de datos DB2 puede descargarse usando el comando 'DROP DATABASE' o desde la GUI del DB2 Control Center. En Oracle no existe un comando como este; las bases de datos se eliminan al eliminar todos los archivos de datos asociados.

Las bases de datos dentro de una instancia normalmente no interactúan entre sí. No obstante, si su aplicación necesita interactuar con más de una base de datos, este requerimiento puede soportarse al habilitar el soporte federation . Consulte la sección recursos donde encontrará un artículo sobre federación.


Contenedores, espacios de tabla, agrupaciones de almacenamiento intermedio y páginas

En Oracle, los datos se almacenan físicamente en archivos llamados Archivos de Datos. Esto es similar a los contenedores de DB2 en que se almacenan datos físicamente. Cada base de datos Oracle contiene un espacio de tabla llamado SYSTEM, creado automáticamente por Oracle cuando se crea la base de datos. Otros espacios de tabla para usuario, temporales y datos de índice necesitan ser creados después de que se ha creado la base de datos, y es necesario asignar un usuario a estos espacios de tabla antes de que se puedan usar.

En DB2, un espacio de tabla es el objeto lógico utilizado como capa entre tablas lógicas y contenedores físicos. Cuando usted crea un espacio de tabla, puede asociarlo con una agrupación de almacenamiento intermedio específica (caché de base de datos) y también a contenedores específicos. Esto le brinda flexibilidad para la administración del desempeño. Por ejemplo, si usted tiene una tabla "caliente", usted puede definirla en su propio espacio de tabla, asociada con su propia agrupación de almacenamiento intermedio. Esto ayuda a asegurar a que los datos de esta tabla constantemente se les realice caché en memoria.

En DB2 se crean automáticamente tres espacios de tabla predeterminados tras la creación de la base de datos, cuando se usan valores predeterminados para el comando CREATE DATABASE. La Tabla 1 describe los espacios de tabla DB2 predeterminados:

Tabla 1. Espacios de tabla DB2 creados predeterminadamente cuando se crea una base de datos con valores predeterminados
Nombre del espacio de tablaDescripción
SYSCATSPACEEspacio de tabla de catálogo que contiene los metadatos.
TEMPSPACE1Espacio de tabla temporal de sistema utilizado para realizar operaciones como uniones y ordenamientos. El nombre de este espacio de tabla se puede cambiar.
USERSPACE1Este espacio de tabla es opcional y puede utilizarse para almacenar tablas de usuario cuando no se señala un espacio de tabla explícitamente al momento de creación de la tabla.

Como las bases de datos en DB2 son unidades independientes, los espacios de tabla no se comparten entre las bases de datos. Como estos sólo se conocen dentro de una base de datos, dos bases de datos diferentes pueden tener espacios de tabla con el mismo nombre. Puede observar esto en la Figura 2 donde la base de datos MYDB1 tiene un espacio de tabla llamado MYTBLS y la base de datos MYDB2 tiene un espacio de tabla con el mismo nombre.

Los espacios de tabla en DB2 pueden clasificarse como SMS (espacios administrados por sistema, sigla en inglés) o DMS (espacios administrados por base de datos, sigla en inglés). Los espacios de tabla SMS son administrados por el sistema operativo y sólo pueden ser directorios. Estos crecen automáticamente según se necesite; por lo tanto, los SMS ofrecen buen desempeño con mínima administración. Los espacios de tabla DMS son administrados por DB2 y pueden ser archivos o dispositivos primarios. Este tipo de espacio de tabla permite un mejor desempeño, pero necesita algo de administración. Por ejemplo, usted necesita especificar de antemano la cantidad de espacio que desea asignar para el espacio de tabla, dado que el crecimiento no es automático.

Oracle no tiene el concepto de SMS para este modelo de almacenamiento, pero sus archivos de datos son similares a los espacios de tabla DB2 DMS. Esto es, usted puede aumentar el tamaño de una base de datos agregando un archivo de datos al espacio de tabla, aumentando el tamaño del archivo de datos, o agregando un nuevo espacio de tabla.

La Tabla 2 a continuación muestra cómo las bases de datos o espacios de tabla Oracle se correlacionan con las bases de datos o espacios de tabla DB2.

Tabla 2. Cómo se correlacionan las bases de datos Oracle con las bases de datos y espacios de tabla DB2
Base de datos o espacio de tabla OracleBase de datos o espacio de tabla DB2
SYSTEM es el espacio de tabla que contiene la información del catálogo (Diccionario de Datos).SYSCATSPACE (espacio de tabla de catálogo); como en Oracle, esta información sólo se mantiene a nivel de base de datos.
Diccionario de datos (contiene metadatos en forma de tablas y vistas) y reside en el espacio de tabla SYSTEM.Tablas de Catálogo del Sistema (identificadas por el esquema SYSIBM) y vistas de sistema (identificadas por el esquema SYSCAT O SYSSTAT) y reside en el espacio de tabla SYSCATSPACE
Base de datos SCOTTBase de datos SAMPLE
Espacio de tabla TEMPEspacio de tabla Temporal del Sistema (llamado de forma predeterminada tempspace1)
Espacio de tabla UNDON/A
Espacio de tabla USEREspacio de tabla del usuario. De forma predeterminada, USERSPACE1 se crea generalmente después de la creación de la base de datos

Como se señaló antes, el concepto de almacenamiento intermedio de datos de Oracle es equivalente a la agrupación de almacenamiento intermedio de DB2; sin embargo, DB2 permite que existan múltiples agrupaciones de almacenamiento intermedio. No hay un número predefinido de agrupaciones de almacenamiento intermedio que usted pueda crear, y estas pueden tener cualquier nombre.

El concepto de un bloque Oracle es más similar a la página DB2. Una página DB2 puede tener un tamaño de 4k, 8k, 16k o 32k. Una fila de tabla debe caber en una sola página; no puede abarcar otras páginas como en Oracle.


Nombres de objeto

Un nombre de objeto Oracle adopta la siguiente forma:

[Esquema_nombre.]objeto_nombre[@base-de-datos]

En DB2, los objetos también tienen una estructura en dos partes:

Esquema_nombre.objeto_nombre

Como en Oracle, el nombre de esquema DB2 se utiliza para agrupar los objetos lógicamente. No obstante, una diferencia importante es que en DB2 un nombre de esquema no necesariamente debe coincidir con el ID de usuario. Cualquier usuario con un privilegio llamado IMPLICIT_SCHEMA puede crear un objeto usando un esquema inexistente. Por ejemplo, suponga que "Pedro" tiene el privilegio IMPLICIT_SCHEMA y ejecuta este comando:

CREATE TABLE WORLD.TABLEA (lastname char(10))

En este caso, se crea la tabla WORLD.TABLEA, donde WORLD es el esquema nuevo creado. Si Pedro no hubiese indicado explícitamente el esquema, entonces se habría creado la tabla PEDRO.TABLEA, porque se utiliza el ID de conexión de forma predeterminada.

En DB2 usted siempre se conecta a una base de datos antes de emitir comandos específicos de bases de datos; por lo tanto, bajo esta arquitectura, los nombres de objeto no necesitan incluir el nombre de la base de datos.


Tablas, vistas e índices

Las tablas, vistas e índices son básicamente iguales en Oracle y DB2.

DB2 ofrece un recurso llamado Design Advisor que usted puede utilizar para recomendar índices para una consulta o carga de trabajo particular. Usted puede invocar el Design Advisor desde el DB2 Control Center o desde el DB2 CLP, utilizando el comando db2advis. En DB2, los índices están vinculados directamente con la definición de tabla. Por ejemplo, cuando esté utilizando los espacios de tabla DMS usted puede especificar en qué espacio de tabla pueden residir los índices, así:

CREATE TABLE mytable (col1 integer, col2 char(10)) in tbls1 index in tbls2

El ejemplo anterior muestra que los datos para la tabla se almacenarán en el espacio de tabla 'tbls1', mientras que las páginas de índice se almacenarán en el espacio de tabla 'tbls2'. Esto es en contraste con la sintaxis Oracle en donde el argumento CREATE INDEX proporciona una opción para especificar en qué espacio de tabla residirá el índice.

Además, una vez que un índice ha sido creado en DB2, usted no puede alterar ninguna cláusula de la definición de índice. Usted necesitaría descargar el índice y crearlo de nuevo para poder implementar cambios.

Como en Oracle, en DB2 las tablas, vistas e índices que estén en diferentes bases de datos, pueden tener los mismos nombres. Las tablas y visualizaciones dentro de la misma base de datos deben tener nombres diferentes, pero se permite la creación de un índice con el mismo nombre de una tabla o de una vista existente.


Procedimientos almacenados, desencadenantes y funciones definidas por usuario(UDFs, sigla en inglés)

Los procedimientos almacenados DB2 pueden escribirse en cualquier lenguaje soportado por los pre-compiladores DB2, incluyendo Java, C, C++, REXX, Fortran y COBOL. Sin embargo, el lenguaje recomendado para utilizar es el SQL Procedural Language (SQL PL), el cual es bastante similar al PL/SQL de Oracle. Los procedimientos SQL PL almacenados son fáciles de crear y tienen buen desempeño. El desarrollo de procedimientos almacenados DB2 también soporta SQLJ y Java utilizando controladores JDBC tipo 2 y 4. El tipo 3 está descontinuado.

El desarrollo de desencadenantes y funciones SQL/PL incorporadas, un subconjunto de SQL PL. La herramienta Data Studio puede usarse para crear, desarrollar, depurar e implementar fácilmente procedimientos almacenados DB2 y funciones definidas por usuario.


Archivos de configuración

Tradicionalmente Oracle almacena todos los parámetros de sesión y los relacionados con el sistema en un archivo de texto, que normalmente es referenciado como initSID.ora. No obstante y debido a la naturaleza no persistente de este archivo de texto, desde Oracle 9i Oracle introdujo el Server Parameter File (SPFILE), que es un archivo de parámetros binario almacenado en el servidor. Este persiste después de que se apaga la instancia y se vuelve a inicializar. Cuando el SPFILE no está disponible, el archivo initSID.ora todavía se utiliza. Antes de la introducción del SPFILE, cualquier comando ALTER SYSTEM y ALTER SESSION que afectaba los parámetros sólo podía persistir durante esa instancia o esa sesión. El DBA habría tenido que modificar manualmente el archivo de texto initSID.ora cada vez que se intentara un re-enlace de una base de datos o instancia. Las configuraciones de acceso de red normalmente se almacenan en listener.ora para escucha y en tnsnames.ora para acceso de cliente.

Con DB2, los parámetros de configuración se almacenan a nivel de instancia, conocido como el archivo de configuración de gestión de base de datos, y a nivel de base de datos, conocido como el archivo de configuración de base de datos. La mayoría de estos parámetros puede cambiarse dinámicamente, es decir, no hay necesidad de detener la instancia y reiniciarla, ni de forzar todas las conexiones de una base de datos para que los cambios a los valores de los parámetros tengan efecto. Los archivos en los que DB2 almacena su información de configuración no pueden editarse directamente.

Si usted desea cambiar manualmente un parámetro específico de gestión de la base de datos desde el CLP, use el comando UPDATE DBM CFG USING <nombre del parámetro> <nuevo valor>.

Si usted desea cambiar manualmente un parámetro específico de una base de datos desde el CLP, use el comando UPDATE DB CFG FOR <nombre de la base de datos> USING <nombre del parámetro> <nuevo valor>.

Estos comandos serían los equivalentes a ALTER SYSTEM y ALTER SESSION de Oracle. Alternativamente, usando el Control Center usted puede revisar y cambiar los valores de estos parámetros; si hace clic derecho sobre una instancia dada y selecciona Configure Parameters, podrá ver la ventana mostrada en la Figura 6.

Figura 6. Parámetros de configuración de Gestor de Base de datos DB2 (nivel de instancia)
Parámetros de configuración de Gestor de Base de datos DB2 (nivel de instancia)

A nivel de base de datos, hacer clic derecho sobre una base de datos dada y seleccionar Configure Parameters presentará la ventana mostrada en la Figura 7.

Figura 7. Parámetros de configuración de base de datos (nivel de base de datos)
Parámetros de configuración de base de datos (nivel de base de datos)

El DB2 ofrece muchos parámetros que usted puede utilizar para configurar su sistema. Aunque si usted desea una manera fácil para configurar el sistema automáticamente, use el comando autoconfigure (o la GUI del Configuration Advisor) que establece los parámetros de gestión de base de datos y de configuración de base de datos. La Figura 8 muestra el Configuration Advisor.

Figura 8. - DB2 Configuration Advisor
- DB2 Configuration Advisor

Además de los archivos de configuración, el DB2 también utiliza variables de registro DB2 normalmente para configuraciones específicas según plataforma. Nota, las variables de registro DB2 no tienen relación en absoluto con el registro de Windows. Use el comando db2set para revisar y cambiar estas variables.

La información de conectividad (acceso de red) se almacena en el directorio de base de datos del sistema, en el directorio de base de datos local y en el directorio de nodo. Estos son archivos binarios y sólo se pueden modificar con los comandos CATALOG y UNCATALOG.


Arquitectura de memoria, procesos en segundo plano e hilos

A continuación veremos la arquitectura de memoria, los procesos en segundo plano y los hilos, y compararemos y contrastaremos la forma en que se utilizan en Oracle y DB2.

Figura 9: Arquitectura de memoria y procesos en segundo plano en Oracle
Figura 9: Arquitectura de memoria y procesos en segundo plano en Oracle

El System Global Area (SGA) en Oracle es un grupo de áreas de memoria compartida que almacena información para la instancia. Los ejemplos incluyen el caché de argumentos, almacenamientos intermedios de registros de rehacer, y el caché de almacenamiento intermedio de datos. Las áreas de memoria compartida Program Global Area (PGA) y el User Global Area (UGA) contienen datos e información de control para procesos de servidor y sesiones de usuario.

Oracle soporta múltiples instancias dentro de la misma máquina pero los procesos en segundo plano no son compartidos. Por ejemplo, tres instancias en una máquina necesitarán tres conjuntos de procesos en segundo plano. Por lo tanto, se recomienda generalmente tener una base de datos, una instancia y múltiples esquemas dentro de la misma máquina.

Figura 10: Arquitectura de memoria DB2 y procesos en segundo plano e hilos
Figura 10: Arquitectura de memoria DB2 y procesos en segundo plano e hilos

Tanto DB2 como Oracle usan áreas de memoria compartida, pero la arquitectura de memoria del DB2 está implementada en una forma ligeramente diferente a la de Oracle. Como una instancia DB2 puede contener más de una base de datos, existen dos niveles de configuración. Como mencionamos en la sección anterior, la configuración del nivel de instancia puede hacerse en el archivo DBM CFG mientras la configuración a nivel de base de datos se realiza en el archivo DB CFG. Los parámetros de configuración en ambos niveles pueden ajustarse para ajustar el uso de memoria. La siguiente sección ofrece un mayor detalle sobre las estructuras de memoria DB2 y sobre diferentes procesos en segundo plano.

A diferencia de Oracle, donde la memoria es asignada en la inicialización tanto a la instancia como a la base de datos, en DB2 la memoria se asigna a niveles diferentes. Esto se debe principalmente al hecho de que una instancia DB2 puede contener múltiples bases de datos. En DB2 hay tres estructuras de memoria principales:

  • Memoria compartida de instancia: Esta se refiere a la memoria compartida global de gestión de base de datos, que es asignada cuando se inicia la instancia usando el comando db2start y que permanece asignada hasta que se emita un comando db2stop para detener la instancia.
  • Memoria compartida de base de datos: Esta se refiere a la memoria global de base de datos, que es asignada cuando la base de datos se activa o se conecta por primera vez. La memoria asignada incluye agrupaciones de almacenamiento intermedio, lista de bloqueo, almacenamiento dinámico de base de datos, almacenamiento dinámico de utilidades, caché de paquete y caché de catálogo.
  • Memoria compartida de aplicación: Esta se refiere a la memoria asignada cuando una aplicación se conecta a una base de datos y es utilizada por agentes que hacen el trabajo solicitado por los clientes conectados. Cada aplicación conectada a la base de datos tiene memoria asignada; por lo tanto una configuración acertada de los parámetros que afectan la memoria compartida de aplicaciones se torna crucial.

El servidor de base de datos DB2 debe ejecutar muchas tareas diferentes, como procesar las solicitudes de aplicaciones de base de datos, o asegurarse que se efectúe la grabación de los registros en el disco. Cada tarea es normalmente ejecutada por una unidad asignable de motor (EDU) separada. En DB2 para Windows, Linux y UNIX, las actividades de servidor se ejecutan en forma de hilos. Los hilos y procesos DB2 operan en los siguientes niveles. Note que esta no es una lista exhaustiva, pero resaltamos los hilos y procesos importantes:

  • Nivel de Instancia: Estos son procesos e hilos que se inicializan cuando la instancia inicia:
    1. DB2 Daemon Spawner (db2gds): Procesador daemon global iniciado para cada instancia (solo en UNIX)
    2. DB2 System Controller (db2sysc): Proceso DB2 principal
    3. DB2 Watchdog (db2wdog): Proceso padre para todos los demás procesos
    4. DB2 Format Log (db2fmtlg): Similar al proceso ARCn en Oracle, pre-asigna archivos de registro en la vía de registro
    5. Autonomic computing daemon (db2acd): Hospeda el estado del monitor, las herramientas de mantenimiento automático y el programador de tareas administrativas. Anteriormente este proceso se conocía como db2hmon.
  • Nivel de Base de Datos: Estos son procesos que se inicializan cuando se establece una conexión con una base de datos.
    1. DB2 Log Reader (db2loggr): Similar al subconjunto de procesos PMON de Oracle. Este proceso lee los archivos de registro durante la retroacción, la recuperación de reinicio y renovación.
    2. DB2 Log Writer (db2loggw): Descarga el registro del almacenamiento intermedio de registros hacia los archivos de registro de transacciones en disco. Equivalente al proceso LGWR en Oracle.
    3. DB2 Page Cleaner (db2pclnr): Equivalente al proceso DBWR en Oracle, este proceso limpia la agrupación de almacenamiento intermedio antes de que páginas del disco se muevan hacia la BP.
    4. DB2 Prefetcher (db2pfchr): Recupera páginas del disco y las pone en la agrupación de almacenamiento intermedio antes que se necesite.
    5. DB2 Deadlock Detector (db2dlock): Proceso para detectar puntos muertos.
    6. DB2 Self-Tuning Memory Manager (db2stmm): para el recurso autónomo de administración de memoria auto-ajustable.
  • Nivel de Aplicación: Cada aplicación que se conecte a la base de datos tendrá su propia porción de procesos en segundo plano de nivel de aplicaciones, asociada a sí misma. Son las siguientes:
    1. DB2 Communication Manager (db2ipccm): Proceso de comunicación entre procesos para cada cliente conectado localmente.
    2. DB2 TCP Manager (db2tcpcm): Proceso de gestión de comunicaciones TCP para clientes remotos que se estén conectando usando TCP/IP.
    3. DB2 Coordinating Agent (db2agent): Hilo que maneja todas las solicitudes a nombre de una aplicación.
    4. DB2 Pooled Gateway Agent (db2agntgp and db2agntgp): Un agente agrupado en una base de datos remota y en una base de datos local respectivamente.

Para una explicación integral sobre los procesos DB2 consulte el artículo 'Everything you wanted to know about DB2 processes'.


Mecanismos de bloqueo

El bloqueo en Oracle puede ser manual o automático. El Oracle Lock Manager puede bloquear implícitamente datos de tabla a nivel de fila, o se pueden alterar temporalmente los bloqueos predeterminados a nivel de transacción o de sesión usando los siguientes argumentos SQL:
1. SET TRANSACTION ISOLATION LEVEL
2. LOCK TABLE
3. SELECT FOR UPDATE

Oracle soporta un mecanismo llamado Multi-Version Read Consistency que se implementa mediante datos 'undo' en los segmentos 'undo'.

DB2 implementa niveles de aislamiento estándar ANSI tales como Uncommitted Read, Cursor stability, Read stability y Repeatable Read. Un usuario sólo verá datos comprometidos, a menos que se utilice el nivel de aislamiento Uncommitted Read. Los bloqueos de fila se adquieren implícitamente según el nivel de aislamiento. Los objetos de base de datos que se pueden bloquear son los espacios de tabla, las tablas y las filas, aunque sólo las tablas y los espacios de tabla pueden bloquearse explícitamente. El comando LOCK TABLE puede usarse para bloquear una tabla en lugar de usar el bloqueo de fila predeterminado.

A diferencia de Oracle, en DB2, los bloqueos se almacenan en la memoria y no en páginas de datos. El parámetro LOCKLIST de configuración de base de datos puede usarse para configurar la memoria disponible para bloqueos, mientras que el parámetro de configuración MAXLOCKS define la cantidad máxima de memoria para bloqueos de una aplicación en particular.

En DB2 9.7 se ha mejorado el reporte de eventos de bloqueo. El nuevo supervisor de eventos de bloqueo recolecta información sobre los tiempos de espera de bloqueo excedidos, puntos muertos, y esperas de bloqueo que superen una duración especificada. A estos datos se puede acceder desde un documento XML, desde tablas de bases de datos, o usando herramientas basadas en java (db2evmonfmt) para leer desde un documento xml o de texto.

Se ha presentado un nuevo parámetro de configuración de base de datos, cur_commit que básicamente permite que sólo se retornen datos comprometidos, como en el caso anteriormente, pero ahora los lectores no esperan que los escritores liberen los bloqueos de fila. En lugar de ello, los lectores retornan datos que estén basados en la versión comprometida actual; esto es, datos previos al inicio de la operación de escritura.


Seguridad

Tanto Oracle como DB2 son bases de datos seguras con recursos de seguridad básicos y avanzados. En Oracle, hay 4 métodos diferentes de autenticación de usuarios, que son:

  • Base de Datos: La base de datos efectúa tanto identificación como autenticación de usuarios.
  • Externo: El sistema operativo o el servicio de red efectúan autenticación
  • Autenticación y autorización globales: El usuario es autenticado globalmente por SSL
  • Autenticación y autorización por proxy: El servidor de capa intermedia efectúa la autenticación.

El método de autenticación se especifica cuando se está creando el usuario, usando el comando CREATE USER . Hay varias vistas de Diccionario de Datos que contienen información sobre estos usuarios.

En DB2, los usuarios no existen dentro de la base de datos sino que son manejados por el sistema operativo. No se mantiene información de inicio de sesión en base de datos en ninguna tabla de base de datos. Cualquier usuario de sistema operativo puede accesar potencialmente a DB2, no obstante, a menos que se les haya concedido una autoridad o privilegio DB2, no hay mucho que puedan hacer. La concesión y revocación de autoridades y privilegios se puede manejar fácilmente mediante la GUI del Control Center. Primero usted debe agregar un usuario o grupo al Control Center desde los usuarios o grupos disponibles del sistema operativo.

En DB2 el término "roles" tampoco se utiliza; en cambio, DB2 utiliza el término "autoridades", que son similares a los roles de base de datos de Oracle, donde los privilegios se conceden a ciertos grupos o usuarios. Las autoridades soportadas con DB2 son: SYSADM, SYSCTRL, SYSMAINT, SYSMON, SECADM, DBADM y LOAD.

Las autoridades SYSADM, SYSCTRL y SYSMAINT no pueden concederse utilizando el argumento SQL GRANT. Estas autoridades especiales sólo se pueden establecer modificando los parámetros específicos de configuración de gestor de base de datos.

DB2 también utiliza el término "privilegio" que es similar a los privilegios de sistema y de objeto de esquema de Oracle. Hay privilegios de base de datos (connect, createtab, y demás) y privilegios de objeto de base de datos (schema, table, view, y demás). La Figura 11 muestra información de seguridad DB2 obtenida de la GUI del Control Center. La mayoría de las pestañas mostradas en la ventana Change User corresponden a los privilegios soportados por DB2.

Figura 11. Seguridad DB2
Seguridad DB2

La autenticación en DB2 no solo incluye el cifrado de nombres de usuario y contraseñas, sino que también permite el cifrado de datos a medida que viajan a través de la red entre los clientes y el servidor. La ubicación del proceso de autenticación está determinada por el valor del parámetro AUTHENTICATION de configuración del gestor de base de datos.

Las siguientes son las opciones válidas para habilitar la autenticación para DB2:

  • SERVER_ENCRYPT - Este valor especifica que la autenticación ocurre en el servidor. El id y contraseña de usuario especificados durante la conexión son cifrados y enviados al servidor donde son comparados con el usuario y contraseña del lado del servidor. Si coinciden exitosamente, se permite al usuario el acceso a la base de datos.
  • KRB_SERVER_ENCRYPT - Especifica que el servidor acepta autenticación KERBEROS o esquemas de autenticación SERVER cifrados.
  • DATA_ENCRYPT - Esta configuración especifica que el servidor permite autenticación SERVER, y también que los datos que viajan por la red entre el cliente y el servidor están cifrados.
  • DATA_ENCRYPT_CMP - Especifica que el servidor acepta esquemas de autenticación SERVER y el cifrado de los datos del usuario. Este tipo de autenticación permite compatibilidad con productos de nivel inferior que no soporten el tipo de autenticación DATA_ENCRYPT.
  • GSS_SERVER_ENCRYPT - Especifica que el servidor acepta autenticación por plug-in basada en GSS API o esquemas de autenticación por servidor cifrado.

Para actualizar el parámetro de instancia AUTHENTICATION, hacia un valor de DATA_ENCRYPT, por ejemplo, use los comandos que se muestran a continuación:

Listado 1. Actualizando el parámetro de instancia AUTHENTICATION
UPDATE DBM CFG USING AUTHENTICATION DATA_ENCRYPT
db2stop
db2start

El DB2 extiende aún más la seguridad al ofrecer un mecanismo de Label Based Access Control (LBAC). El recurso LBAC permite una mayor granularidad para controlar el acceso de lectura y escritura a filas individuales y columnas de tabla. En DB2 se ha habilitado un rol de administrador de seguridad (SECADM), el cual es necesario para manipular objetos LBAC. Los usuarios que intenten accesar a un objeto deben contar con una etiqueta de seguridad asignada a ellos. Cuando coinciden, se permite el acceso; si no, se niega el acceso.

Hay otros aspectos de la seguridad de base de datos que van más allá de privilegios y autoridades. Brevemente, estas son algunas de las diferencias y similitudes entre Oracle y DB2:

Autenticación y Autorización de Usuario

Oracle utiliza una contraseña cifrada que se almacena en el diccionario cuando se crea el usuario. El DB2 soporta contraseñas para autenticación de usuario y utiliza el usuario operativo subyacente para autenticación. Tanto Oracle como DB2 soportan LDAP (Oracle Internet Directory e IBM Directory Server). Tanto Oracle como DB2 soportan inicio único se sesión (SSO).

Cifrado de Datos

Oracle soporta el cifrado de datos donde se puedan cifrar datos sensibles como números de tarjeta de crédito u otros datos de negocios altamente sensibles. Usted tiene las siguientes opciones para cifrar los datos DB2 almacenados:

  • Puede utilizar las funciones integradas de cifrado y descifrado ENCRYPT, DECRYPT_BIN, DECRYPT_CHAR y GETHINT para cifrar sus datos dentro de las tablas de las bases de datos.
  • Puede usar el IBM Database Encryption Expert para cifrar los datos subyacentes de sistema operativo y los archivos de copia de seguridad.
  • Si usted está ejecutando un sistema DB2 Enterprise Server Edition en el sistema operativo AI y sólo está interesado(a) en un nivel de cifrado de archivos, puede usar el sistema de archivos cifrados (EFS) para cifrar sus datos de sistema operativo y archivos de copia de seguridad.

Cifrado de Red

Oracle ofrece cifrado de red con su Oracle Advanced Security. Oracle utiliza cifrados DES, 3DES y RC4 estándares de la industria. Para cifrar datos en-tránsito entre los clientes y las bases de datos DB2, usted puede utilizar el tipo de autenticación DATA_ENCRYPT, o el soporte de Secure Sockets Layer (SSL) del sistema de base de datos DB2.

Seguimiento de Auditoría

Oracle le permite el seguimiento de auditoría de usuarios y objetos. El minero de registros también se puede utilizar para investigar y analizar consultas sospechosas. El DB2 ofrece una posibilidad de auditoría similar. El recurso db2audit puede utilizarse para este propósito.


Soporte XML

Esta sección compara el soporte XML de Oracle con el de DB2. El recurso Oracle XML DB entregado con el release 2 de Oracle 9i ofrecía una manera para administrar almacenamiento, recuperación y esquemas XML al definir tablas y columnas XMLTYPE que se almacenan como CLOB o desmenuzadas (descompuestas) en pequeñas piezas dentro de tablas relacionales. Oracle 10g incluye algunas mejoras para administrar documentos XML: por ejemplo, los cambios de esquema se pueden reflejar dinámicamente al correlacionar los datos existentes sin la necesidad de re-importarlos. En Oracle 11G se introdujo un tercer tipo de soporte XML, llamado XML binario. De esta forma, Oracle tiene ahora las siguientes formas de almacenar datos XML:

  • Almacenamiento no estructurado usando CLOBs (también conocido como almacenamiento sin esquema)
  • Almacenamiento estructurado que correlaciona XML con objetos relacionales
  • Almacenamiento XML Binario

La tecnología pureXML de DB2 almacena documentos XML de forma nativa, esto es, internamente en formato de árbol. También permite el uso de SQL con extensiones XML, Xquery y Xpath para accesar a datos relacionales y XML. El almacenamiento nativo de documentos XML es un mejor enfoque, y la investigación de IBM señala que hay un mejor desempeño en búsqueda y recuperación de documentos XML y reducción en las líneas de código para ciertos programas. El soporte para el tipo de datos DB2 XML está disponible en DB2 Control Center, procesador de líneas de comando, IBM Data Studio y Add-Ins IBM Database para Microsoft Visual Studio.

Con el fin de utilizar el recurso pureXML en su base de datos, cree la base de datos como UNICODE (usando por ejemplo el conjunto de códigos UTF-8). Si no se crea una base de datos UNICODE antes de crear una tabla puede conducir a errores como se muestra a continuación:

SQL1239N  Los recursos XML sólo se pueden utilizar en una base de datos 
Unicode con una sola partición de base de datos.  SQLSTATE=42997

El DB2 almacena datos relacionales como en las versiones anteriores. Sin embargo, los datos XML son almacenados en formato jerárquico (como un árbol, utilizando Xquery Data Model, XDM). Hay una estrecha integración entre XML y los servicios relacionales. Para almacenar documentos XML un usuario necesita crear una tabla y especificar una columna para usar un nuevo tipo de datos, XML, como se muestra en el siguiente ejemplo.

Listado 2. Crear una tabla DB2 con datos tipo XML
CREATE TABLE T
  (ID INT PRIMARY KEY NOT NULL, COMMENT VARCHAR(1000) NOT NULL, DOCUMENT XML) 
  in ttspace compress yes@

Como los documentos XML se almacenan nativamente en formato jerárquico analizado XQuery Data Model (XDM), no hay necesidad de traducción ni correlación; el formato utilizado para documentos XML es el formato utilizado para procesarlo. Esto permite mayor desempeño.

Las utilidades como copia de seguridad, restaurar e importar, aplican a tablas con columnas XML igual que en cualquier otra tabla. Se pueden insertar datos XML en la columna XML utilizando el argumento INSERT o utilizando la herramienta IMPORT de DB2. Antes de importar documentos XML recibidos de terceros, es una buena idea validar tales documentos contra un esquema XML predefinido. Para hacer un registro contra un esquema XML, es necesario que los DBAs emitan el comando REGISTER XML SCHEMA, terminado con COMPLETE XML SCHEMA, para completar el proceso de registro. El DB2 también soporta que se creen índices en un subconjunto de un documento XML, o en todo el documento. Es necesario especificar un XPATH cuando se crea un índice que podría apuntar hacia un elemento/atributo particular a ser indexado.

Con DB2 usted tiene ahora cuatro formas de accesar a datos relacionales y XML:

  • SQL simple (no involucra XQuery)
  • SQL/XML, esto es, XQuery incorporado en SQL
  • XQuery como un lenguaje independiente (no involucra SQL)
  • Xquery con SQL incorporado

En el DB2 9.7 se incluyeron recursos XML adicionales, como el soporte para el tipo XML en las User Defined Functions. Hay mejoras importantes en el DB2 9.7 como que el recurso LOAD ahora puede usarse para cargar datos XML. Además, en tablas particionadas, los índices sobre datos XML que usted crea con DB2 V9.7 o anteriores no son particionados. A partir del DB2 Versión 9.7 Fixpack 1, usted puede crear un índice sobre datos XML en una tabla particionada, como particionado o no particionado.

Hay más artículos developerWorks sobre capacidades IBM pureXML tales como Consulta de datos XML en DB2 con XQuery, Consulta de datos XML en DB2 con SQL entre otros, para discusiones más a fondo.


Particionamiento

Oracle Partitioning ofrece diversas estrategias de particionamiento que controlan cómo la base de datos ubica los datos en las particiones. Las estrategias básicas son particionamiento por rango, lista y hash.

El particionamiento de tabla DB2 (también conocido como particionamiento por Rango), es similar al particionamiento Oracle. Básicamente permite que una tabla lógica individual sea dividida en múltiples objetos físicos de almacenamiento, a lo largo de uno o más espacios de tabla. Cada uno de los objetos correspondería a una 'partición' y permitiría que cada espacio de tabla contuviera un rango de datos al cual se podría acceder fácilmente.

En el DB2 hay varias formas de particionar sus datos, y usted puede aplicar estos métodos simultáneamente sobre los mismos datos. Para evitar confusiones, esta es una breve explicación sobre las diferentes formas de proporcionar este particionamiento:

  • PARTICIONAMIENTO DE BASE DE DATOS - distribuyendo los datos por hash clave a través de los nodos lógicos de la base de datos (DPF).
  • PARTICIONAMIENTO DE RANGO/TABLA (disponible con el DB2 9) - dividiendo los datos por rango clave, sobre múltiples objetos físicos dentro de una partición de base de datos lógica.
  • AGRUPACIÓN EN CLÚSTER MULTI-DIMENSIONAL (MDC) - organizando los datos de la tabla (o el rango de una tabla) según múltiples valores clave.

En la Versión 9.7, usted puede tener índices que se refieran a filas de datos en todas las particiones, en una tabla con datos particionados (conocidos como índices no particionados), o puede tener el índice mismo particionado de manera tal que cada partición de datos tenga una partición de índice asociada. Usted puede tener tanto índices particionados como no particionados, para tablas particionadas.

El siguiente ejemplo crea un cliente de tabla donde las filas l_shipdate >= '01/01/2006' y l_shipdate <= '03/31/2006' se almacenan en el espacio de tabla ts1, las filas con l_shipdate >= '04/01/2006' y l_shipdate <= '06/30/2006' se almacenan en el espacio de tabla ts2, etc. Se puede encontrar una explicación más a fondo en el artículo developerWorks, Particionamiento de tabla en DB2 9.

Listado 3. Particionando una tabla por rango
CREATE TABLE customer (l_shipdate, l_name CHAR(30)) 
IN ts1, ts2, ts3, ts4, ts5 
PARTITION BY RANGE(l_shipdate) 
   (STARTING FROM ('01/01/2006') 
    ENDING AT ('12/31/2006') 
    EVERY (3 MONTHS))

En la Tabla 1 del artículo se puede encontrar una comparación de la terminología de particionamiento de Oracle y DB2 Migrate from Oracle or Sybase to DB2 in weeks.


Compresión

Existen tres recursos de compresión proporcionados por Oracle; compresión a nivel de índice, de tabla y de fila. La planeación inadecuada de estos recursos puede tener efectos adversos en el desempeño.

Oracle introdujo la compresión de índice desde la versión 8i. Los índices que se pueden comprimir son mapa de bits, btree y tablas organizadas por índice. Utilizar la compresión de índice es bastante fácil; por ejemplo, para crear un índice con el recurso de compresión, use:

Listado 4. Crear un índice con compresión
CREATE INDEX ord_customer_ix_demo 
ON orders (customer_id, sales_rep_id)
COMPRESS 1;

Para índices que inicialmente no fueron creados con compresión, usted puede convertirlos en comprimidos alterándolos. El Listado 5 muestra un ejemplo de cómo usted puede alterar un índice para que incluya compresión.

Listado 5. Alterar un índice con compresión
alter index ord_customer_ix_demo rebuild compress

Actualmente, Oracle no proporciona ningún consejero automatizado para indicar cuáles índices se deben comprimir. La mayoría de los beneficios obtenidos por la compresión de índice requieren de una planeación adecuada hecha por DBAs experimentados con profundos conocimientos de Oracle CBO.

Por otro lado, la compresión de tabla se introdujo en el release 2 de Oracle 9i. Se puede utilizar para comprimir tablas completas, particiones de tabla, y vistas materializadas. La compresión se puede aplicar a todas las particiones o a algunas particiones. Aunque la compresión de tabla funciona para una tabla no particionada, su utilización para tablas no particionadas en cargas de trabajo OLTP puede no ser deseable dado que se puede afectar el desempeño de inserción y de actualización. En la compresión de tabla Oracle, los valores duplicados en un bloque de base de datos se remueven y la información se almacena para recrear los datos no comprimidos dentro del bloque.

El siguiente ejemplo muestra cómo crear una tabla de partición con compresión.

Listado 6. Crear una tabla con compresión
CREATE TABLE costs_demo (
   prod_id NUMBER(6), time_id DATE,
   unit_cost NUMBER(10,2), unit_price NUMBER(10,2))
PARTITION BY RANGE (time_id)
   (PARTITION costs_old
       VALUES LESS THAN (TO_DATE('01-JAN-2003', 'DD-MON-YYYY')) COMPRESS,
    PARTITION costs_q1_2003
       VALUES LESS THAN (TO_DATE('01-APR-2003', 'DD-MON-YYYY')),
    PARTITION costs_q2_2003
       VALUES LESS THAN (TO_DATE('01-JUN-2003', 'DD-MON-YYYY')),
    PARTITION costs_recent VALUES LESS THAN (MAXVALUE));

Para convertir una tabla en una tabla comprimida, use alter table <nombre de tabla> move compress. No obstante, una tabla comprimida no permite agregar ni descargar columnas.

En el DB2 9.7 la compresión de filas, también conocida como compresión profunda, comprime filas de datos al reemplazar patrones de valores que se repiten a lo largo de las filas, con cadenas de símbolos más cortas. De las diferentes técnicas de compresión disponibles en el DB2 9.7, la compresión de filas ofrece las mayores posibilidades de ahorros en almacenamiento. La compresión de filas requiere de la creación de un diccionario que almacene una correlación entre los patrones o entradas repetitivas y las claves numéricas. El algoritmo de compresión es lo suficientemente inteligente para no comprimir las filas que no representen ningún ahorro significativo de espacio en disco.

La compresión de filas en DB2, a diferencia de la compresión por clave de Oracle, no necesita que se especifiquen claves.

La compresión se habilita a nivel de tabla individual mediante los comandos CREATE TABLE o ALTER TABLE. Por ejemplo:

Listado 7. Crear/Alterar tabla con COMPRESSION YES
CREATE TABLE Sales COMPRESS YES 
ALTER TABLE Sales COMPRESS YES

Para lograr el mismo efecto utilizando el DB2 Control Center, durante la definición de columna (segundo paso del asistente para creación de tablas), asegúrese de haber marcado el recuadro de selección, Store table data in a compressed format ubicado en la parte inferior del panel (como muestra el siguiente diagrama).

Figura 12. DB2 Control Center - Creando una tabla con compresión
DB2 Control Center - Creando una tabla con compresión

El diccionario de tabla es creado sólo cuando se efectúa una REORG, después de lo cual se pueden comprimir los datos en la tabla. El diccionario se actualiza en cada operación REORG subsiguiente. Los datos comprimidos se conservan tanto en disco como en memoria y el DB2 también comprime los datos de usuario almacenados en los archivos de registro, reduciendo así el tamaño del archivo de registro.

Note que cada partición de una tabla particionada puede tener un diccionario de compresión diferente, y cada partición de una tabla en DF puede tener diferentes diccionarios de compresión.

Además de la compresión de filas de datos, otros mecanismos de compresión ofrecidos por DB2 9.7 incluyen:

  • Compresión de Valores NULL y Predeterminados (V8 GA): Compresión de datos nulos y de extensión cero en columnas de extensión variable y valores predeterminados de sistema.
  • Agrupación en Clúster Multidimensional (V8 GA): Implementa una forma de compresión de índice utilizando índices de bloques, una entrada de índice para miles de registros.
  • Compresión de Copia de Seguridad de Base de Datos (V8 FP4): Compresión para producir imágenes de copia de seguridad más pequeñas.
  • Análisis XML

Recursos Autónomos

Hay algunas mejoras en ajuste que ofrece Oracle 11g. Oracle automatizó las siguientes áreas de ajuste:

  • Redo Logfile Sizing Advisor - Este recurso recomienda el tamaño óptimo de archivos de registro 'redo' para evitar E/Ss excesivas de disco por el exceso de sincronización por puntos de comprobación.
  • Automatic Checkpoint Tuning - La base de datos Oracle ahora puede auto-ajustarse por sincronización por puntos de comprobación, para lograr buenos tiempos de recuperación con bajo impacto a rendimiento normal. Usted ya no tendrá que establecer ningún parámetro relacionado con sincronización por puntos de comprobación.
  • Automatic Shared Memory Tuning - el Automatic Shared Memory Tuning automatiza la configuración de los parámetros relacionados con la memoria System Global Area (SGA) (caché de almacenamiento intermedio, agrupación compartida) mediante algoritmos de auto-ajuste. Esto simplifica la configuración de base de datos, asegura una utilización más eficiente de la memoria disponible y mejora el desempeño.
  • Transaction Rollback and Recovery Monitoring - Este recurso le permite estimar cuánto tiempo le tomará reversar una transacción. Usted también puede supervisar el progreso de las transacciones que están siendo recuperadas y estimar la velocidad promedio de recuperación de transacciones.
  • Ajuste SQL - el SQL Tuning Advisor ajusta automáticamente los argumentos SQL de alto costo.
  • Automatic Storage Manager - El gestor automático de almacenamiento (ASM) simplifica la gestión de archivos relacionados con Oracle.

Oracle también ofrece algunos consejeros, como consejeros de segmento y para deshacer. El consejero de segmentos se basa en el nivel de fragmentación de espacio que hay dentro de un objeto y como resultado, ofrece consejos sobre si el objeto es buen candidato para una nueva operación de encogimiento en línea. Igualmente, el consejero provee informes sobre la tendencia de crecimiento histórica de los segmentos, y ha comprobado ser especialmente informativo para la planificación de capacidad.

Por otro lado, el Undo Advisor ayuda a los administradores a juzgar correctamente el tamaño a asignar al espacio de la tabla deshacer, tanto para recursos flashback como no-flashback. Este aconseja a los administradores sobre la configuración apropiada de UNDO-RETENTION para evitar el viejo problema de antigüedad 'snapshot too old'.

El DB2 9.7 cuenta con varios recursos autónomos para ayudar en la administración de su entorno, que se auto-configuran, auto reparan, auto optimizan y auto-protegen. Al percibir las situaciones y responder a ellas cuando ocurren, la computación autónoma transfiere la carga de administrar un entorno computacional, de los administradores de bases de datos hacia la tecnología.

Ajuste Automático de Memoria

El DB2 9.7 presenta un recurso de auto-ajuste de memoria llamado Self Tuning Memory Manager, que simplifica la tarea de configuración de memoria al establecer automáticamente los valores de diferentes parámetros de configuración de memoria. Cuando está activado, el ajuste automático, actuando como asignador, deducirá los recursos de memoria disponibles y los distribuirá entre diferentes consumidores de memoria de la base de datos, dinámicamente. El auto-ajuste de memoria sólo aplica para bases de datos de partición única.

Configuración Automática

Con el comando AUTOCONFIGURE usted puede calcular y mostrar en pantalla los valores iniciales de los parámetros de tamaño de agrupación de almacenamiento intermedio, configuración de base de datos y de configuración del gestor de base de datos, con la opción de aplicar estos valores recomendados.

Administración Automática de Almacenamiento

La administración de almacenamiento incrementa automáticamente el tamaño de su base de datos a través de los sistemas de disco y archivo, y como aumenta automáticamente el tamaño de la base de datos, elimina la necesidad por parte de los DBAs de administrar contenedores de almacenamiento. Cuando usted crea bases de datos en DB2 9.7 el recurso de administración automática de almacenamiento está activado de forma predeterminada.

Mantenimiento Automático

El DB2 9.7 cuenta con capacidades de mantenimiento automático que se utilizan para ejecutar funciones de mantenimiento automático como:

  • Copias de seguridad automáticas de bases de datos, que ofrece la capacidad para realizar una copia de seguridad completa de la base de datos, según se necesite.
  • Recolección automática de estadísticas. El DB2 determina cuáles estadísticas se requieren y la necesidad de actualizarlas, y luego ejecuta automáticamente el recurso RUNSTATS en segundo plano.
  • Reorganización automática de tabla y de índice. El DB2 determina si se necesita una reorganización de tabla o de índice, supervisando frecuentemente las tablas e índices cuyas estadísticas se han actualizado, y programa dichas operaciones cada vez que sea necesario.

Herramientas

Debemos mirar las herramientas de diferentes áreas, como las herramientas de creación y mantenimiento de bases de datos, de red, de GUI de administración, de ajuste de desempeño, de movimiento de datos y de copia de seguridad-recuperación. La Figura 13 muestra las herramientas de la GUI DB2 9.7.

Figura 13. Herramientas de la GUI DB2 9.7
Herramientas de la GUI DB2 9.7

Observemos cómo se llevan a cabo tareas similares en Oracle y en DB2 9.7.

Creación y Mantenimiento de Bases de Datos

Oracle proporciona el Database Configuration Assistant (dbca) como la herramienta GUI para crear bases de datos. Para el mantenimiento de bases de datos, Oracle proporciona el Oracle Enterprise Manager. La creación y mantenimiento de las bases de datos DB2 se puede hacer mediante el DB2 Control Center.

Red

Oracle proporciona el Network Configuration Assistant (netca) para configuración de red. De forma alternativa, usted puede usar el Oracle Network Manager para configurar servidores de nombramiento de servicios, escucha, perfil y de nombre Oracle. El DB2 utiliza el comando CATALOG para catalogar nodos y bases de datos. La catalogación también puede hacerse utilizando líneas de comandos DB2 o la GUI del DB2 Configuration Assistant.

Administración

El Oracle Enterprise Manager ofrece una amplia gama de capacidades administrativas para las tareas cotidianas de los administradores. El DB2 Control Center proporciona funciones similares a las del Oracle Enterprise Manager. Además del DB2 Control Center, usted también puede utilizar el procesador de líneas de comandos DB2 para emitir argumentos DDL y DML. Este recurso es similar al recurso Oracle SQLPLUS. La Figura 14 muestra el procesador de líneas de comandos DB2.

Figura 14. Procesador de Líneas de Comandos DB2
Procesador de Líneas de Comandos DB2

Los comandos también se pueden emitir desde el Command Center, mostrado en la Figura 15.

Figura 15. GUI del Command Center (versión GUI del Procesador de Línea de Comandos DB2)
GUI del Command Center (versión GUI del Procesador de Línea de Comandos DB2)

Ajuste de Desempeño

El Oracle Enterprise Manager incluye el Change Management Pack (paquete de administración de cambios), el Tuning Pack (paquete de ajustes) y el Diagnostic Pack (paquete de diagnóstico). El DB2 ofrece: Activity Monitor, Event Analyzer, Health Center, Indoubt Transaction Manager y Memory Visualizer como herramientas GUI para tareas de ajuste de desempeño.

Movimiento de Datos

Oracle proporciona el SQL Loader (sqlldr) para cargar datos en formato delimitado de texto. Se puede utilizar importar (imp) y exportar (exp) para efectuar importaciones y exportaciones lógicas. El DB2 proporciona herramientas de importación, exportación y carga similares. Para movimientos entre plataformas, el DB2 ofrece el recurso endb2move.

Copia de Seguridad y Recuperación

Oracle ofrece el Recovery Manager como una opción para copia de seguridad en caliente. Las copias de seguridad en DB2 se pueden efectuar utilizando el comando backup o mediante el DB2 Control Center.

El Enteprise Manager de Oracle 11g incluye nuevas gráficas de visión general del desempeño. La interfaz HTML mejorada del Oracle Enterprise Manager proporciona un punto de acceso central para todas las estadísticas de base de datos relacionadas con el desempeño y facilita supervisión y diagnóstico completos.

Además de las interfaces que se envían con el DB2 9.7, hay una herramienta gratuita para el desarrollo de aplicaciones basada en la infraestructura Eclipse, llamada IBM Data Studio (Data Studio). Data Studio es un centro integral para la creación, edición, depuración, implementación y prueba de procedimientos almacenados DB2 y funciones definidas por usuario. Usted también puede usar el Data Studio para desarrollar aplicaciones SQLJ, y para crear, editar y ejecutar argumentos SQL y consultas XML.

Usted puede descargar el IBM Data Studio del sitio webDeveloperworks.

Para más detalles sobre el IBM Data Studio, revise este tutorial tutorial en developerWorks. Para ejemplos y recursos, consulte el artículo Página web IBM Data Studio Features and Benefits. en developerWorks.


Resumen

En este artículo le iniciamos en DB2 9.7 para Linux, UNIX y Windows, utilizando su conocimiento actual en Oracle 11g como plataforma. Describimos brevemente la arquitectura DB2, los procesos en segundo plano, el modelo de memoria, la seguridad, herramientas, y demás. Hay bastantes similitudes entre Oracle y DB2 9 y señalamos algunas de las diferencias, para que usted pueda utilizar sus conocimientos actuales para lograr resultados con DB2 9.7.

La Tabla 3 resume las diferencias y las similitudes entre Oracle y DB2 que hemos tratado.

Tabla 3. Resumen de los conceptos Oracle vs. DB2
OracleDB2Comentario
InstanciaInstanciaUna instancia DB2 puede contener varias bases de datos
Base de datosBase de datos
initSID.ora O SPFILEDBM CFG andDB CFGDB2 usa dos niveles de configuración:- Database Manager Configuration (DBM CFG) (a nivel de instancia)- Configuración de Base de Datos (DB CFG) (a nivel de base de datos). Como en Oracle, muchos de estos parámetros de configuración pueden cambiarse dinámicamente.
Espacios de tablaEspacios de tablaEl DB2 soporta espacios de tabla SMS y DMS. Los espacios de tabla DMS son similares a los de Oracle.
Bloques de datosPáginasEl DB2 soporta estos tamaños de página: 4k, 8k, 16k, 32k. Una fila debe caber en cualquiera de estos tamaños de página. No puede ampliarse hacia otras páginas como en Oracle.
ExtensionesExtensiones
Archivos de datosContenedores de espacios de tabla DMSLos contenedores para espacios de tabla DMS pueden ser dispositivos primarios o archivos.
Archivos de Registro 'Redo'Archivos de Registro de Transacción
Almacenamiento Intermedio de DatosAgrupaciones de almacenamiento intermedio.El DB2 no tiene un conjunto predefinido de agrupaciones de almacenamiento intermedio, pero usted puede crear tantas como desee. Una agrupación de almacenamiento intermedio de un tamaño de página dado debe existir antes de crear un espacio de tabla con el tamaño de página dado.
SGAGestor de Base de Datos y Memoria Compartida de Base de Datos
Diccionario de DatosCatálogo
Caché de BibliotecaCaché de Paquete
Agrupación GrandeAlmacenamiento Dinámico de Recursos
Caché de Diccionario de DatosCaché de Catálogo
Espacio de tabla SYSTEMEspacio de tabla SYSCATSPACE

Recursos

Aprender

Obtener los productos y tecnologías

  • Descargue una versión de prueba gratuita de DB2 para Linux, UNIX y Windows.
  • Ahora usted puede utilizar DB2 gratuitamente. Descargue DB2 Express-C, una versión sin costo del DB2 Express Edition para la comunidad, que ofrece los mismos recursos de datos esenciales que el DB2 Express Edition y que proporciona una base sólida para desarrollar e implementar aplicaciones.
  • Descargue versiones de evaluación de productos IBM y ponga sus manos en herramientas de desarrollo de aplicaciones y en productos de middleware de DB2, Lotus®, Rational®, Tivoli®y WebSphere®.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=678617
ArticleTitle=Aproveche sus habilidades Oracle 11g para aprender DB2 9.7 para Linux, UNIX y Windows
publish-date=06072011