Download Consejos para solucionar problemas comunes en bases
Document related concepts
Transcript
Consejos para solucionar problemas comunes en bases de datos Guía básica sobre los problemas más comunes de las bases de datos más utilizadas por las empresas, y consejos para resolver estos problemas. PROBLEMAS DE RECUPERACIÓN DE BASES DE DATOS DISTRIBUIDAS LISTA PARA MIGRAR BASES DE DATOS A LA NUBE ELECCIÓN DE HERRAMIENTAS DE DB PARA LAS PRUEBAS PROBLEMAS CON BASES DE DATOS ORACLE GESTIÓN DE BASES DE DATOS NOSQL NORMALIZACIÓN DE BASES DE DATOS MYSQL RECUPERAR DBS Problemas de recuperación de bases de datos distribuidas INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL Todas las bases de datos distribuidas se configuran un poco distintas, incluso entre los productos de un único proveedor de software. Con Microsoft, por ejemplo, Microsoft Exchange Server, SQL Server y Active Directory, todos son impulsados por bases de datos, pero funcionan de manera diferente uno del otro. Pero hay algunas similitudes que se mantienen más o menos ciertas en todos los ámbitos. Cuando se trata de la recuperación de bases de datos distribuidas, hay dos principales preocupaciones que deben ser abordadas. software utilizado por la operación de recuperación tiene que conocer los requisitos específicos de la base de datos que está siendo recuperada. Por ejemplo, la mayoría de las aplicaciones de respaldo de clase empresarial soportan Exchange Server. Este soporte de Exchange Server significa que la aplicación respaldo sabe cómo manejar los puestos de control de la base de datos y los registros de transacciones de procesos como parte del proceso de recuperación. RECUPERACIÓN DE PUNTO EN EL TIEMPO INTEGRIDAD DE LOS DATOS La base de datos distribuida debe ser restaurada o reparada de tal manera que no exista la corrupción. En términos generales, esto requiere que el proceso de recuperación de la base de datos distribuida sea consciente de las aplicaciones. El 2 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS Por ejemplo, si está recuperando una base de datos de Active Directory en un controlador de dominio, es posible que desee desplegar el Active Directory de vuelta a un punto específico en el tiempo. El problema es que Active Directory utiliza una base de datos distribuida y otros controladores de dominio están en línea. Cuando el RECUPERAR DBS INICIO RECUPERAR DBS proceso de recuperación de la base de datos distribuida se completa, el controlador de dominio recién restaurado alcanzará a otros controladores de dominio e iniciará un proceso de sincronización. Esto trae al controlador de dominio recién restaurado a un estado actual que es consistente con los otros controladores de dominio. Si su objetivo era desplegar Active Directory de vuelta a un MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 3 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS punto anterior en el tiempo, el proceso de sincronización deshará sus esfuerzos de recuperación. La solución para las bases de datos distribuidas es llevar a cabo una recuperación autoritaria, lo que esencialmente causa que el controlador de dominio recién restaurado sea tratado como la copia correcta de la base de datos de Active Directory. —Brien Posey MIGRAR A LA NUBE Lista para migrar bases de datos a la nube INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE Uno no puede simplemente levantarse un día y decir: “¡Hey! Hoy voy a migrar mi base de datos a la nube.” Hay muchas consideraciones que hacer. Muchos proveedores ofrecen atractivas ofertas de nube, pero también necesitan saber qué buscar. Antes de empezar, vamos a considerar los escenarios en los que la migración de base de datos en la nube podría ser una opción viable: NOSQL ■■ MYSQL ■■ ■■ ■■ 4 La capacidad de gestionar las bases de datos de manera interna es inadecuada TI no es una unidad funcional central Su empresa es una PyME y necesita reducir los costes iniciales de inversión de capital Están trabajando con nuevas aplicaciones o desarrollan una, y quieren probar la nube como un entorno de prueba CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS ■■ Mover a la nube su copia de seguridad para recuperación de desastres (DR), y usarla como un ensayo para identificar los problemas y obstáculos para la migración de bases de datos Las ventajas clave para la migración de bases de datos de nube son la disponibilidad, la escalabilidad, la confiabilidad y el costo. La infraestructura de la nube es escalable, y no se necesita la inversión de gasto de capital (capex). Los negocios generalmente están muy abiertos a la migración de bases de datos si los problemas de seguridad se tratan de forma satisfactoria. Aunque la migración de bases de datos de forma aislada (sin la migración de aplicaciones) no es imposible de lograr, puede que no sea muy factible. Cuando su aplicación reside de forma local y su base de datos se ejecuta en un servidor externo, la vida no va a ser fácil. Las dos redes tienen que colaborar sin problemas para proporcionar un MIGRAR A LA NUBE funcionamiento rápido y óptimo. El proceso debe trabajar en la mayoría de los casos, de lo contrario, no se desempeñará mejor de lo que lo hizo en la casa. Por eso también se recomienda migrar todo el conjunto a la nube. INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 5 SUGERENCIAS PARA UNA EXITOSA mejor rendimiento que la instalación local. Los centros de datos en la nube pueden no estar dentro de una red cercana, y puede haber problemas de alta latencia. Las aplicaciones deben ser capaces de ejecutarse en tales situaciones. Plantee la cuestión con su proveedor de servicios, y asegúrese de que los dos están en la misma página. MIGRACIÓN DE BASES DE DATOS 1.Evalúe el tamaño de la base de datos: El tamaño de la base de datos determinará el tipo de hardware que se requiere, así como la cantidad de almacenamiento y qué instancia será necesaria después de la migración. Esto puede llevarse a cabo por el propio equipo interno de TI. 3.La confidencialidad de los datos es un factor de negocios: Para empezar, es posible que desee migrar sólo las bases de datos y aplicaciones que no son de misión crítica. En primer lugar migre esas bases de datos que pueden alojarse en ambientes en los que no se puede confiar. 2.Pruebe las aplicaciones antes de la migración de datos: Las aplicaciones que utiliza el proveedor de servicios para conectarse a la base de datos tienen que ser ajustadas para las aplicaciones que van a utilizar la base de datos. Las aplicaciones que se ejecutan en la base de datos de nube también deben ser compatibles con la infraestructura de nube, y proporcionar un 4.Diseñe con cuidado el documento de acuerdo de nivel de servicio (SLA): Existen aplicaciones que requerirán un 99,99% de tiempo disponible. Asegúrese de que los tiempos de inactividad programados no interfieran con sus necesidades de negocio. CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS 5.Garantice la escalabilidad: El principal MIGRAR A LA NUBE INICIO RECUPERAR atractivo de una migración de base de datos a la nube es la escalabilidad inmediata. Los servicios e infraestructura idealmente deberían ser escalables sobre la marcha. Sí, eso tendrá que ser negociado con el proveedor. Mantenga al proveedor de servicio en el bucle sobre sus planes de crecimiento del negocio. DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 6.Tome en cuenta su sistema operativo: Encontrar el sistema operativo (OS) que funciona bien con las bases de datos es crucial. Por ejemplo, Oracle está disponible para Linux, así como Windows. Aunque ambos tienen el mismo propósito, habrá una gran diferencia en cuanto al rendimiento. Compruebe si existe la misma versión del sistema operativo para la nube. 7.Eliminar la basura reducirá los costos: La purificación de datos llega a ser muy importante dado que el costeo depende del tamaño de los datos. A medida que crece el tamaño de la base de datos, los costos también subirán. Asegúrese de eliminar los datos basura de la base de datos antes de la migración. FORMAS DE SUPERAR LOS PROBLEMAS Durante su migración de la base de datos a la nube puede que tenga que hacer frente a problemas de rendimiento y seguridad. He aquí cómo puede abordar esto con facilidad. Seguridad: Su anfitrión de nube pública podría ser potencialmente no fiable. Puede residir en cualquier lugar, y no hay control del cliente sobre este aspecto. Una manera de salir es implementar una nube privada. Factorice este punto en su SLA. El trabajo del proveedor es proporcionar la infraestructura, hacer que los datos estén disponibles, y adherirse a las políticas de seguridad del acuerdo. La depuración o limpieza de los datos deben Las aplicaciones que se ejecutan en la base de datos de nube deben ser compatibles con la infraestructura de nube, y desempeñarse mejor que localmente. 6 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS MIGRAR A LA NUBE INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL llevarse a cabo de manera local ya que, en principio, el proveedor no debe ver o procesar los datos de su base de datos. datos. Conozca dónde se encuentra su proveedor en cuanto al conocimiento de las diferentes aplicaciones y bases de datos que se migrarán. El rendimiento de las aplicaciones puede variar en la nube: Tenga en cuenta que los datos viajarán a través de una red remota y no sólo una LAN después de que se haya hecho la migración de la base de datos. Puede surgir una necesidad de reescribir códigos. Algunas aplicaciones ya serán compatibles con la nube, mientras que otras pueden no funcionar en absoluto. Por ejemplo, Oracle se asoció con Amazon, pero Oracle no permitía que otros proveedores de servicios albergaran sus bases de Migraciones de bases de datos múltiples: Mover varias bases de datos puede ser un desafío si todas las aplicaciones dependen de todos ellos. En tal escenario, toda la estructura tendrá que migrar a la nube. La dificultad radica en encontrar un vendedor que será el anfitrión de la base de datos de configuración múltiple. En general, la migración de una o dos bases de datos a la nube es más factible que migrar muchas. —Devendra Murkute y Suraj Dubey MYSQL 7 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS PRUEBAS Elección de herramientas de DB para las pruebas INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL Los examinadores necesitan herramientas intuitivas que consulten y muestren datos de una manera que sea fácil de ver y analizar. Varias herramientas están disponibles y la elección depende de las preferencias personales del equipo de pruebas –de eso y del presupuesto, o de qué herramientas de desarrollo ya están instaladas. Investigar herramientas gratuitas puede valer la pena, pero muchas son básicas y no permiten consultas complejas o análisis de datos. MYSQL HERRAMIENTAS BASADAS EN SQL: SQL SERVER Y SQL PARA DESARROLLADORES SQL Server 2014 es una herramienta de base de datos integrada en Visual Studio. Si el equipo de desarrollo utiliza Visual Studio, el equipo de pruebas podría utilizar SQL Server para sus necesidades de pruebas de base de datos. No sería necesaria otra herramienta y no habría problemas 8 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS de costos o de integración. SQL Server 2014 hace mucho más de lo que un equipo de prueba necesitará. Sin embargo, es fácil de usar y funciona en las bases de datos en la nube y en las instalaciones. La mejor parte para los probadores: Tiene una ventana de editor de consultas que permite a un probador utilizar consultas SQL guardadas o crear consultas personalizadas según sea necesario. Es sorprendentemente más fácil de utilizar que muchos de sus competidores. Otra herramienta que funciona de manera similar es de SQL Developer de Oracle, una herramienta gratuita que es útil como herramienta de prueba de base de datos para las bases de datos de Oracle en la nube o en las instalaciones. Al igual que SQL Server, la herramienta hace más de lo que un probador necesita, pero dependiendo de la complejidad de las necesidades de pruebas, es fácil de usar y viene con una gran cantidad de ayuda y recursos en línea. SQL Developer ofrece un editor PRUEBAS INICIO de consultas y la posibilidad de guardar las consultas SQL o crear consultas personalizadas. Aunque SQL Developer es relativamente fácil de usar, mi preferencia personal es SQL Server a pesar de haber utilizado SQL Developer por muchos años. RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 9 HERRAMIENTAS MEJORADAS UI: TOAD, DB VISUALIZER Y SQLITE Toad, una herramienta popular de prueba de base de datos con muchos probadores y desarrolladores, ofrece varias versiones que funcionan en casi cualquier plataforma de base de datos. Toad dice tener flujos de trabajo intuitivos, características integradas que son fáciles de usar y devolver los resultados más precisos. Todavía se basa en consultas SQL y ofrece la herramienta de editor de consultas estándar. Otra herramienta de prueba de base de datos CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS popular, más basada en la interfaz de usuario, es DbVisualizer, que ofrece muchas características a modo de ventanas en auto completar, formato y un generador de consultas GUI. También ofrece una función de línea de comandos. Las ventanas de DBVisualizer se pueden mover y desplegar una al lado de la otra. Los entusiastas de las hojas de cálculo tienden a amar DbVisualizer. Los resultados mostrados de la base de datos se pueden marcar, formatear y personalizar. Los resultados de consultas se pueden ver en formato de texto o gráficas. Otra opción es SQLite, una herramienta GUI visual. Es una opción de código abierto que muchos probadores prefieren para crear, diseñar y ejecutar consultas SQL. Como con la mayoría de las herramientas, hace mucho más de lo necesario para las pruebas de base de datos. También está basado en hojas de cálculo e incluye asistentes y otras características GUI. —Amy Reichert ORACLE Problemas con bases de datos Oracle INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE Una de las bases de datos más utilizadas es la de Oracle. Por consiguiente, muchos usuarios buscan información para solucionar problemas puntuales con el uso de esta herramienta. En este artículo abordaremos dos temas relevantes para bases de datos Oracle: cómo crear enlaces a estas bases de datos, y cómo lidiar con bases de datos que se han quedado colgadas. NOSQL MYSQL CÓMO CREAR UN ENLACE A LA DB DE ORACLE El enlace de bases de datos crea una conexión entre una base de datos local y otra remota. Entre las razones para crear este enlace están, por ejemplo, la necesidad de actualizar la base de datos remota cuando se lleva a cabo una actualización de la base de datos local. Así es como se hace: Lo primero que necesitamos es crear un enlace desde una base de datos que apunte a la 10 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS otra ubicación. El enlace se puede crear con un comando similar a éste: CREATE DATABASE LINK other_db CONNECT TO scott IDENTIFIED BY tiger USING ‘tns_alias’; Será necesario dar al enlace un nombre mejor, usar el nombre de usuario/contraseña adecuada para conectarse a la base de datos remota y configurar el archivo TNSNAMES.ORA con un alias del TNS que apunte a esa base de datos. Podemos probar el enlace con una consulta simple como la siguiente: SELECT sysdate FROM dual@other_db; La cláusula “@other_db” usa el enlace que hemos creado. Si la consulta devuelve la fecha, quiere decir que el enlace funciona correctamente. Una vez establecido el enlace, podemos emitir un ORACLE INICIO RECUPERAR DBS comando para modificar los datos en la base de datos remota cuando se modifiquen en la local, o podemos usar un disparador (trigger) de bases de datos. Por ejemplo, si la aplicación modifica la base de datos local mediante la ejecución de un INSERT similar al siguiente: remota a otra local. Para mover datos a través de un enlace de bases de datos es preciso crear un enlace a la base de datos remota. Podemos construir comandos SQL para insertar datos en la base de datos local, seleccionándolos desde la base de datos remota. La sentencia SQL se vería así: INSERT INTO my_table VALUES (1,’Two’); INSERT INTO my_local_table (ColA, ColB, ColC) SELECT ColA, ColB, ColC FROM remote_table@remotedb WHERE MIGRAR A LA NUBE PRUEBAS entonces podemos codificar también otra sentencia SQL para insertar los mismos valores en el enlace de base de datos. ORACLE NOSQL MYSQL INSERT INTO my_table@other_db VALUES (1,’Two’); Además, podemos crear un disparador: CREATE TRIGGER modify_remote_my_table BEFORE INSERT ON my_table BEGIN INSERT INTO my_table@other_ db VALUES(:new.colA, :new.colB); END; / Podemos escribir disparadores similares para actualizar y borrar filas también. Asimismo, podemos usar un enlace de base de datos para trasladar datos de una base de datos 11 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS conditions are true; En estas situaciones el lenguaje SQL es una herramienta muy potente y flexible, inmejorable. Pero tendremos que escribir nuestras propias rutinas para mover los datos. Los enlaces también pueden usarse para la replicación parcial de bases de datos o para migrar una base de datos o copiar la información de una a otra que tenga la misma estructura. Además, podemos crear enlaces entre una base de datos Oracle y otra distinta como SQL Server o DB2. Para ello, usaremos Heterogeneous Services de Oracle, antes conocido como Transparent Gateways. Configure correctamente el archivo TNSNAMES. ORACLE INICIO RECUPERAR DBS MIGRAR A LA NUBE ORA o aparecerá el error ORA-12154 (TNS: no se ha podido resolver el nombre de servicio). Una cosa que la gente no entiende respecto a los enlaces de bases de datos es que sólo buscarán el archivo TNSNAMES.ORA en $ORACLE_HOME/ network/admin. Y este archivo debe residir en el servidor que esté operando la base de datos. Por eso es importante configurar correctamente el archivo en esta ubicación para los enlaces. Haga siempre una prueba de los enlaces de bases de datos ejecutando la siguiente consulta: PRUEBAS ORACLE NOSQL MYSQL 12 SELECT sysdate FROM dual@remotedb; SI recibe los resultados, el enlace funciona correctamente. Si no es así, repare el error correspondiente. El error ORA-12505, por otro lado, sólo significa que el ORACLE_SID en el alias de su TNS no se corresponde con ningún ORACLE_SID definido para la base de datos a la escucha. En estos casos habrá de comprobar que el alias de su TNS se corresponde con el definido en el archivo de configuración LISTENER.ORA de la escucha. Para revisar y solventar el error ORA-02068: CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS el enlace de la base de datos requiere el alias de TNS que usted especificó en la cláusula USING del comando CREATE DATABASE LINK. Fuera de Oracle, asegúrese de que puede usar este alias de TNS para conectarse a la base de datos. Con SQL*Plus compruebe si puede conectarse a esta base de datos remota. sqlplus system/password@tns_alias Imagino que la línea de arriba le dará el mismo error. Esto significa una de dos cosas: o el alias de TNS está definido incorrectamente o la instancia realmente no funciona. Si puede usted conectarse con SQL*Plus, el enlace de bases de datos debería funcionar correctamente. PROBLEMAS DE RENDIMIENTO DE ORACLE RAC Las bases de datos de RAC tienen más de una instancia utilizando el mismo conjunto de recursos, y un recurso puede ser solicitado por más de una instancia. El intercambio de recursos está bien gestionado por los servicios globales de caché (GCS) y los servicios globales de encolamiento, o ORACLE INICIO RECUPERAR DBS MIGRAR A LA NUBE enqueue (GES). Sin embargo, en algunos casos, las operaciones de gestión de recursos podrían llegar a una situación de bloqueo y toda la base de datos puede quedar colgada debido a problemas de seriación. A veces, los errores de software también pueden causar problemas de latencia en la base de datos, y estas situaciones casi siempre requieren la intervención de soporte de Oracle en la forma de una solicitud de servicio. Los problemas de caída de bases de datos se pueden colocar en las siguientes categorías: PRUEBAS ORACLE NOSQL MYSQL Bases de datos colgadas ■■ Sesiones colgadas ■■ Desempeño o rendimiento general de la instancia o base de datos ■■ Rendimiento de las consultas Para mover datos a través de un enlace de DBs se debe crear un enlace a la base de datos remota. Podemos construir comandos SQL para insertar datos en la DB local. ■■ Vamos a examinar únicamente la base de datos colgada, ya que es más crítica y compleja que los otros y también se relaciona con nuestro punto de interés. El área de soporte de Oracle define una “verdadera” base de datos colgada como “un punto muerto interno o una dependencia cíclica entre 13 dos o más procesos”. Cuando se trata de bloqueos DML (es decir, la puesta en cola tipo TM), Oracle es capaz de detectar esta dependencia y hacer retroceder uno de los procesos para romper la con- CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS dición cíclica. Por otra parte, cuando esta situación se produce con los recursos a nivel del núcleo interno (como pestillos o pasadores), Oracle solía ser generalmente incapaz de detectar y resolver el punto muerto de forma automática. Si se encuentra con una situación de base de datos colgada, es necesario realizar volcados (dumpings) de estado del sistema de manera que el soporte de Oracle pueda comenzar a diagnosticar la causa raíz del problema. Siempre que use este tipo de vertederos para un bloqueo, es importante tomar al menos tres de ellos con unos pocos ORACLE INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 14 minutos de diferencia, en todas las instancias de la base de datos. De esta manera, la evidencia muestra si un recurso sigue detenido de un momento a otro. El tamaño del archivo maxdump debe establecerse como ilimitado, ya que esto generará archivos de seguimiento más grandes y más extensos, dependiendo del tamaño del área global del sistema (SGA), el número de sesiones de inicio de acceso, y la carga de trabajo en el sistema. El vertedero SYSTEMSTATE contiene una sección separada con información para cada proceso. Normalmente, es necesario tomar dos o tres vertederos en intervalos regulares. Siempre que se realice volcados de SYSTEMSTATE de manera repetitiva, asegúrese de volver a conectarse cada vez para obtener una nueva ID de proceso y también los nuevos archivos de seguimiento. ¡Espere a obtener enormes archivos de rastreo! A partir de la base de datos Oracle 10g, un vertedero SYSTEMSTATE incluye información del historial de espera de la sesión. Si está utilizando Oracle 10g o posterior, no es necesario tomar varios volcados de estado del sistema. El vertedero SYSTEMSTATE puede ser tomado por cualquiera CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS de los métodos siguientes. A partir de SQL *Plus: alter session set max_dump_file_size = unlimited; alter session set events ‘immediate trace name systemstate level 10’; Usando oradebug: REM The select below is to avoid problems on pre 8.0.6 databases select * from dual; oradebug setmypid oradebug unlimit oradebug dump systemstate 10 Cuando la base de datos se cuelga y no se puede conectar a SQL *Plus, puede intentar invocar SQL *Plus con la opción preliminar si está utilizando Oracle 10g o posterior. Esto une el proceso para la instancia de Oracle y no se ejecutan comandos SQL. No se desencadenan registros de inicio de sesión o pre-procesamiento, y no se permite la ejecución de consultas SQL. Vea el cambio en la bandera de sqlplus normal y sqlplus preliminar. $sqlplus -prelim SQL*Plus: Release 10.2.0.1.0 - Production on Wed Nov 9 11:42:23 2005 Copyright (c) 1982, 2005, ORACLE Oracle. All rights reserved. Enter user-name: / as sysdba SQL> INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL Alternativamente, oradebug le permite volcar el estado del sistema global mediante la conexión a un nodo. A continuación se muestra el volcado SYSTEMSTATE global desde oradebug: oradebug –g all dump systemstate 10 La opción -g es utilizada para bases de datos sólo para RAC. Esto volcará estados del sistema para todos los casos. El archivo de volcado/rastreo SYSTEMSTATE se puede encontrar en el directorio user_dump_dest en la instancia en la que se generó el volcado. MYSQL HANGANALYZE Un problema grave del rendimiento puede ser confundido con latencia. Esto suele suceder cuando la contención es tan mala que parece que la base de datos está completamente bloqueada. Por lo general, un vertedero SYSTEMSTATE se utiliza para analizar estas situaciones. Sin embargo, si la instancia es grande, con más de unos pocos gigabytes de SGA y con una gran carga de trabajo, un vertedero SYSTEMSTATE puede tardar una hora o más y, a menudo fallará en volcar todo el SGA y las estructuras de bloqueo. Para superar las limitaciones del vertedero SYSTEMSTATE, una nueva utilería llamada hanganalyze se introdujo en Oracle 8i. En Oracle 9i, el comando hanganalyze se ha mejorado para proporcionar información de todo el clúster en entornos RAC de una sola vez. Este sistema utiliza el proceso demonio (daemon) DIAG en el proceso de RAC para la comunicación entre las instancias. En todo el clúster, hanganalyze generará información para todas las sesiones de la agrupación, independientemente de la instancia que emitió el comando. Hanganalyze se puede invocar desde SQL *Plus o mediante oradebug (que está disponible cuando Hanganalyze puede servir como una hoja de ruta para interpretar un estado del sistema, mientras que se diagnostican problemas complejos. 15 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS ORACLE se conecta como SYS en la utilería SQL *Plus). La siguiente sintaxis se puede utilizar para obtener el rastro de hanganalyze cuando se conecta a SQL *Plus: INICIO RECUPERAR alter session set events ‘immediate trace name hanganalyze level ’; DBS MIGRAR O cuando está conectado como SYS: A LA NUBE oradebug hanganalyze PRUEBAS ORACLE NOSQL MYSQL En el cluster, hanganalyze se puede obtener de este modo: oradebug setmypid oradebug setinst all oradebug -g def hanganalyze Ello establece la cantidad de información adicional que se extraerá de los procesos 16 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS que hanganalyze ha encontrado (ERROSTACK dumping) basándose en el estado (STATE) del nodo. Hanganalyze utiliza llamadas al núcleo interno para determinar si una sesión está esperando un recurso y reporta las relaciones entre los bloqueadores y quienes esperan. Además, determina qué procesos son “interesantes” como para verterse, y si se pueden llevar a cabo volcados automáticos de estado de proceso (PROCESS STATE) y ERRORSTACKs en esos procesos, con base en el nivel utilizado durante la ejecución de hanganalyze. Hanganalyze no pretende sustituir a un vertedero SYSTEMSTATE, pero puede servir como una hoja de ruta para interpretar un estado del sistema, mientras que se diagnostican problemas complejos. Los problemas de rendimiento relacionados con la fila de objetos de caché, en cola, y los cierres pueden ser analizados solamente con hanganalyze y/o un vertedero SYSTEMSTATE. —Elisa Gabbert y K Gopalakrishnan NOSQL Gestión de bases de datos NoSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 17 Las bases de datos NoSQL surgieron de un problema de negocio específico, escribe Jack Vaughan en el sitio SearchDataManagement respecto a los albores de la edad de NoSQL: Google, Yahoo y Facebook marcaron el comienzo de una nueva clase de tecnología de bases de datos porque necesitaban una plataforma que “evitara los rígidos principios de desarrollo de SQL en favor de diseños de datos más flexibles y escalables.” Sin embargo, no todas las organizaciones tienen la misma necesidad de datos que tienen Google, Yahoo y Facebook. ¿Quiere decir que NoSQL es sólo para los gigantes de internet? Seguramente no, escribe Vaughan. “Las bases de datos NoSQL se han convertido en elementos que deben tener las empresas con bóvedas de rápido crecimiento de internet, redes sociales, datos demográficos y datos de máquinas.” El analista Joshua Greenbaum, añade que es necesario tener en cuenta una serie de cuestiones CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS prácticas sobre su proyecto: “¿Va a crear nuevas aplicaciones netas en soporte de nuevos procesos de negocio neto o simplemente actualizará los que ya tiene? ¿Se relaciona con nuevos tipos de usuarios, o análisis de datos? ¿Dará soporte a una nueva línea de negocio o se dará nuevo impulso a una ya existente? Las respuestas proporcionarán criterios esenciales para comprender cuál de las nuevas tecnologías de base de datos debería desplegar, si es el caso. Sólo entonces debe mirar a su alrededor para ver si una nueva base de datos es mejor para el trabajo contra algo que ya tiene”. Pero SQL o no, las decisiones que los administradores de TI y los ejecutivos necesitan hacer todavía son las de antes, probadas y verdaderas. ERRORES COMUNES DE NOSQL QUE DEBE EVITAR Al igual que muchas tecnologías emergentes, NoSQL ha pasado por un ciclo de éxito que vio la NOSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL implementación generalizada seguida de resultados decididamente mixtos. La mentalidad de cargo y de culto que tenía a todo el mundo abordando del tren de las bases de datos no relacionales sin duda ha dado lugar a ciertas vergonzosas regresiones de alto perfil. No hay una parte que tenga toda la culpa. Los vendedores presentaron su solución como la bala de plata para arreglar todos los problemas mientras que los desarrolladores con grandes sueños para el futuro hablaron sobre la creciente necesidad de mayor escalabilidad de bases de datos para atraer inversiones. Ciertamente, los dueños de negocios pueden ser perdonados por esperar que una solución indolora a los problemas de bases de datos estuviera al fin a la mano. Pero ahora que la primera generación ha alcanzado su punto máximo y la solución está empezando a madurar, ha llegado el tiempo para reagruparse y revisar las lecciones aprendidas durante la última década. Aquí hay tres errores comunes que las organizaciones todavía están haciendo cuando se trata de NoSQL–y cómo evitarlos. 1.NoSQL es sobre algo más que la escalabilidad. Eric Redmond, autor de Siete bases de datos en siete semanas, dice que el error más común que la gente comete es equiparar NoSQL con una escala web. Redmond dice que se ha convertido en casi una broma dentro de la comunidad de base de datos. Es una suposición comprensible. Después de todo, los progenitores de las bases de datos no relacionales de hoy eran compañías como Google y Amazon que se enfocaban en la manera de abordar los problemas de escalabilidad masiva en un entorno web. Incluso el nombre Mongo proviene de huMONGOus – una referencia al volumen de datos y de tráfico que se esperaba que manejara esta popular base de datos de almacenamiento de documentos. Pero pensando en NoSQL sólo desde el punto de vista de la escalabilidad puede conducir a Pensar en NoSQL sólo desde el punto de vista de la escalabilidad no es bueno. El uso depende del caso de uso y requisitos y no sólo del tamaño de los datos. 18 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS NOSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 19 decisiones pobres. Incluso una organización más pequeña puede beneficiarse de las soluciones NoSQL si se trata en su mayoría con datos de medios sociales que están mejor representados en gráficos. O bien, una organización más grande con una gran cantidad d datos todavía podría necesitar depender principalmente de SQL para consultas sofisticadas. Es realmente más sobre el caso de uso y requisitos no funcionales que sólo la escala de los datos. 2.Los desarrolladores necesitan evolucionar. Ann Kelly y Dan McCreary, coautores de Dando sentido a NoSQL, señalan otro gran error. En un proyecto web de alto perfil, un equipo de integración mal seleccionado generó un enorme problema. “El cliente trajo una base de datos NoSQL muy robusta, de gran alcance, y madura, MarkLogic. A continuación, se contrató a un integrador que sólo tenía programadores de Java y sólo estaban familiarizados con bases de datos relacionales. Gastaron aproximadamente entre 30-40 millones de dólares construyendo código que no necesitaba escribirse y que será eliminado.” La página web en cuestión es, por CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS supuesto, el notorio healthcare.gov. Dan dice que este no es el primer proyecto NoSQL donde esto ha sucedido, y no será el último. Un equipo que no tiene experiencia en la escritura de código para bases de datos no relacionales es muy probable que tenga problemas similares. Cuando los desarrolladores utilizan un proceso viejo con la nueva tecnología, es fácil sobre-desarrollar. Basarse en las clases UML y Java para crear código elaborado simplemente no es necesario en el mundo racionalizado del almacenamiento de documentos. 3.La distribución es difícil, incluso cuando NoSQL lo facilita. Eric Redmond está de acuerdo en que no hay sustituto para el conocimiento y la experiencia, ya sea en la implementación o la administración en curso. “Cuando se está hablando de gran escala, la base de datos no es el problema. El problema es en la comprensión de cómo manejarlo operativamente. Puede instalar Couch [de Apache] y ejecutar un montón de consultas en una máquina. Pero una vez que intente distribuirlo a través de múltiples máquinas, se convierte en un sistema NOSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE distribuido y es un ámbito totalmente diferente. Usted tendría que ser un talentoso administrador de sistemas y un operador talentoso. El hecho de que se puede escribir una consulta que rápidamente se ejecuta en la máquina de desarrollo local, a menudo no influye en lo bien que va a escalar horizontalmente a través de cientos de máquinas.” Afortunadamente, Redmond dice que algunas de las bases de datos NoSQL están diseñadas PRUEBAS ORACLE NOSQL MYSQL 20 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS para ayudar a evitar que los desarrolladores se den un tiro en el pie. Couch es un ejemplo, ya que utiliza automáticamente MapReduce con el supuesto de que el usuario está haciendo una consulta contra muchos servidores. Riak es otro ejemplo. Para aquellos que dicen que encuentran difícil de usar Riak, Redmond tiene algunas malas noticias. “Es difícil de utilizar porque la escritura de consultas en un entorno distribuido es difícil.” —Scot Petersen y Jason Tee MYSQL Normalización de bases de datos MySQL INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL MYSQL 21 La normalización de bases de datos fue introducida como procedimiento por Edgar Frank Codd, un científico de computación en IBM en su artículo “Un modelo relacional de datos para grandes bancos de datos compartidos” en 1970. La normalización de bases de datos es un proceso por el cual un esquema existente se modifica para traer sus tablas componentes hacia el cumplimiento a través de una serie de formas normales progresivas. Se centra en librar a los desarrolladores y sus proyectos del “síndrome de la hoja de cálculo”. El síndrome de la hoja de cálculo se refiere a la tendencia de los desarrolladores de exprimir tanta información como sea posible en el menor número de tablas posible. Antes, debido a las nociones de hojas de cálculo y cómo se manejaban los datos en ellas, los desarrolladores seguían diseñando bases de datos MySQL con el mismo marco mental. Hoy, este método no se considera una forma inteligente CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS para diseñar bases de datos MySQL desde que las tablas, cuando son diseñadas con el síndrome de la hoja de cálculo, piden rediseño constante por cada pequeño cambio a la base de datos. BENEFICIOS DE LA NORMALIZACIÓN DE DB EN MYSQL El uso reducido del espacio de almacenamiento mediante la categorización inteligente de los datos es uno de los muchos beneficios que la normalización de bases de datos presta a MySQL. Esto ayuda a lograr búsquedas mejores, más rápidas, búsquedas y más fuertes, ya que implica un menor número de entidades para escanear en comparación con las búsquedas anteriores basadas en entidades mixtas. La integridad de los datos se mejora a través de la normalización de bases de datos, ya que divide todos los datos en entidades individuales, construyendo aun así fuertes vínculos con los MYSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE PRUEBAS ORACLE NOSQL datos relacionados. Como Mike Hillyer, un escritor técnico de Oracle Corporation explica: “El objetivo de la normalización de bases de datos es garantizar que cada columna que no es clave, en cada tabla, depende directamente de la clave: toda la clave y nada más que la clave. Y con este objetivo, vienen los beneficios en forma de menores redundancias, menos anomalías, y la mejora de la eficiencia”. La normalización de bases de datos es esencial. Es un proceso paso a paso que no puede ser llevado a cabo al azar. Los siguientes pasos le ayudarán en la consecución de la normalización de bases de datos en MySQL. MYSQL PASO 1: CREAR LA PRIMERA FORMA ESTÁNDAR (1NF) El proceso de normalización de base de datos consiste en la obtención de datos para ajustarse a las formas estándares progresivas, y un mayor nivel de normalización de base de datos no puede ser logrado a menos que los niveles anteriores se han cumplido. La primera forma estándar es el nivel básico de la normalización de la base de datos. 22 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS Para 1NF, asegúrese de que los valores de cada columna de una tabla son atómicos; lo que significa que son únicos, y no contiene conjuntos de valores. Uno de los métodos para llevar una tabla a 1NF es separar las entidades que figuran en la tabla en tablas separadas. PASO 2: DEFINIR RELACIONES Se puede establecer tres tipos de relaciones: Uno-a-(Cero o)-uno (Ejemplo: matrimonio) ■■ Uno-a-(Cero o)-muchos (Ejemplo: hijos) ■■ Muchos-a-muchos (Ejemplo: Facebook) ■■ Por ejemplo: Una tabla de Libros puede tener relaciones muchos a muchos con una tabla de Autores. La tabla de autores puede tener muchos libros y un libro puede tener más de un autor. La tabla de libros puede tener relaciones muchos a muchos con la tabla de Tema. Los libros pueden caber en muchos temas y los temas pueden tener muchos libros. Cada libro tiene solo una Editorial, pero una Editorial puede tener muchos libros. Podemos lograr relaciones ‘uno-a-muchos’ con MYSQL INICIO RECUPERAR DBS MIGRAR A LA NUBE una clave externa. Una clave externa es un mecanismo en sistemas de gestión de bases de datos (DBMS) que define las relaciones y crea restricciones entre los segmentos de datos. No es posible examinar lo que no está relacionado con el libro específico. No es posible tener un libro sin un autor o editorial. Al borrar una editorial, todos los libros relacionados pueden necesitar ser eliminados junto con las opiniones de esos libros. No sería necesario eliminar los autores. PRUEBAS ORACLE NOSQL MYSQL 23 PASO 3: HACER LA SEGUNDA FORMA ESTÁNDAR (2NF) La segunda forma estándar (2NF) reduce los datos tautológicos/superfluos en una tabla seleccionándolos, poniéndolos en nuevas tablas y estableciendo relaciones entre ellos. En la normalización de bases de datos, 2NF se trata de las relaciones CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS entre las columnas de clave compuesta y las columnas que no son clave. Eso significa que las columnas sin clave tienen que depender de la clave compuesta completa. PASO 4: TERCERA FORMA ESTÁNDAR (3NF) Esto requiere que todas las columnas dependan directamente de la clave primaria. Las tablas violan la 3NF cuando una columna depende de otra columna, la que a su vez depende de la clave primaria (una dependencia transitiva). A través del proceso de normalización de las bases de datos ponemos las tablas de nuestro esquema en conformidad con las formas estándares progresivas. Como resultado, las tablas representan cada una una única entidad (un libro, un autor, un tema, etc.) y nos beneficiamos de la disminución de la redundancia, menos anomalías y una mejora de la eficiencia. —Ronen Baram SOBRE LOS AUTORES RONEN BARAM es consultor de ventas de MySQL en Oracle. Tiene 15 años de experiencia en TI. SURAJ DUBEY es vicepresidente de Osource India, donde supervisa la alineación de los sistemas de TI con el negocio. INICIO ELISA GABBERT es RECUPERAR DBS MIGRAR A LA NUBE gerente en WordStream. Antes, fue editora de TechTarget para temas de Oracle. K GOPALAKRISHNAN es consultor senior con el grupo de Servicios de Tecnología Avanzada en Oracle Corporation. PRUEBAS ORACLE DEVENDRA MURKUTE tiene más de 20 años enfocándose en el diseño, la gestión de proyectos y la entrega de software. NOSQL MYSQL SCOT PETERSEN es analista de tecnología para Ziff Brothers Investments. Antes, fue director editorial de TechTarget. BRIEN POSEY es Microsoft MVP con dos décadas de experiencia en TI y en la administración de SharePoint. AMY REICHERT es una evaluadora de software con experiencia en el diseño y pruebas de software. JASON TEE es consultor empresarial. Escribe frecuentemente para publicaciones de TechTarget. 24 CONSEJOS PARA SOLUCIONAR PROBLEMAS COMUNES EN BASES DE DATOS Consejos para solucionar problemas comunes en las bases de datos es una publicación de SearchDataCenter.Es Rich Castagna | Vicepresidente editorial Lizzette Pérez Arbesú | Editora ejecutiva Melisa Osores | Editora adjunta Joseph Hebert | Editor de producción Linda Koury | Director de diseño online Anita Koury | Diseñador gráfico Bill Crowley | Publisher BCrowley@techtarget.com TechTarget 275 Grove Street, Newton, MA 02466 www.techtarget.com © 2016 TechTarget Inc. Ninguna parte de esta publicación puede ser reproducidas o retransmitidas de ninguna manera o por ningún medio sin el consentimiento por escrito de la editorial. Los reimpresos de TechTarget están disponibles a través de YGS Group. Acerca de TechTarget: TechTarget publica contenidos para profesionales de tecnología de información. Más de 100 sitios web focalizados permiten un rápido acceso a un vasto repositorio de noticias, consejos y análisis sobre tecnologías, productos y procesos cruciales para su trabajo. Nuestros eventos virtuales y presenciales le proporcionan acceso directo a los comentarios y consejos de expertos independientes. A través de IT Knowledge Exchange, nuestra comunidad social, usted puede obtener asesoría y compartir soluciones con colegas y expertos. COVER ART: FOTOLIA