Download Consejos para solucionar problemas comunes en bases

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 cons­truir 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
[email protected]
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