Cómo montar dos entornos en un mismo servidor SQL Server 2008 sin que se "pisen"

Propiedades del ServidorNos ponemos en situación
En nuestro entorno es posible que necesitemos disponer de dos replicas de una/s base de datos en entornos diferenciados (el clásico ejemplo sería producción y test). Para decidir como lo hacemos las preguntas más comunes que nos debemos hacer son:

-¿Este nuevo entorno será temporal? ¿Contiene bases de datos grande en cuanto a volumen y/o la carga que debe soportar es elevada(aunque sea test)?
-¿Dispongo de la versión de desarrollo de SqlServer2008? Que solo está a tu alcance si tienes una suscripción Msdn...
-¿Dispongo de un servidor adicional?...

 

 

Oracle10g: Cambiar el juego de carácteres de la base de datos

Puede suceder que después de instalar Oracle o configurar una nueva base de datos nos demos cuenta de que el juego de carácteres elegido durante la instalación no es el correcto. Lo que se nos puede ocurrir en casos como este es borrar la base de datos y reconfigurarla o cosas peores... Pero no hace falta. Podemos cambiar el juego de carácteres parando la base de datos, levantandola de forma restrictiva, cambiando la configuración y reiniciado la base de datos. Howto...

 

 

SQLServer 2008: Actualizar estadísticas de tabla de forma dinámica en toda una base de datos

Al igual que en Oracle existe una tabla donde se listan todas las tablas de la base de datos (dba_tables) y podemos usarla para realizar operaciones de mantenimiento de forma dinámica, en Sql Server podemos hacer lo mismo consultando la tabla [basededatos].dbo.sysobjects.
En el ejemplo inferior (como en otros que he colgado) actualizo las estadísticas de todas las tablas de una base de datos de Sql Server de forma dinámica consultando el diccionario de datos. Este se podría encapsular en un stored procedure o directamente ejecutarlo en un job del Agente de Sql Server para mantener actualizadas las estadísticas de todas las tablas de una base de datos de forma automática...

Como obtener la lista de tablas con más movimiento (insert,update) en Oracle

A fin de obtener una lista aproximada de las tablas con más movimientos de la base de datos podemos consultar el contenido de la tabla dba_tables y cruzarlo con el estado actual de cada tabla en la bbdd. Esto puede tener sentido cuando queremos confeccionar una lista de tablas a las que se debe actualizar estadísticas periódicamente o queremos controlar la cantidad de información que genera alguna aplicación en concreto. Los datos que obtenemos por cada tabla son siempre respecto al último analisis de la misma.

La siguiente forma de hacerlo es un poco "rupestre" pero útil a la vez:

Estructura de la Dimensión Tiempo y script de carga para SQLServer

En un data warehouse hay una serie de dimensiones comunes como son la geografica y la de tiempo. Para quién le pueda servir de ayuda dejo aquí el script de creación de la dimensión tiempo y un procedimiento para hacer la carga entre fechas de la tabla:

 

SQL Server 2016, novedades

Aplicación para dispositivos móviles y biLa próxima versión de Microsoft SQL Server 2016 parece que se va a poder ver ya este verano, primeramente en formato preview. Con el cambio de versión se incluyen como siempre nuevas características entre las que destacan mejoras relacionadas con su integración con Microsoft Azure, integración con el lenguaje de programación estadístico R y alguna cosa más en cuanto a mejoras de rendimiento. A continuación una breve reseña..

MySql: Trigger de conexión para auditoría de conexiones

En mysql los triggers que existen son básicos y solo a nivel de tabla. No existe como en SqlServer o Oracle un trigger que permita cazar las conexiones que se abren y obtener cierta información complementaria referente a las sesiones.
Un mal ejemplo. Se puede dar el caso que en un entorno web tengamos un granja de servidores apache y por lo que sea a alguno se le va la olla. Empieza a abrir threads en nuestro mysql de forma masiva (por el motivo que sea) y nos colapsa el servidor porque no tenemos limitidas el número de conexiones simultaneas para ese usuario. ¿Que mal rollo no? Y si encima esto pasa cuando no estamos en la oficina nos podemos encontrar que no podemos saber mucho de lo que ha pasado, por ejemplo vemos el pico en cacti pero no tenemos detalle.


Para tener algo más y poder auditar cuando y quien abre conexiones, haremos lo siguiente:  

  1. Creamos schema un schema (o no).

Ora10g: ORA-00060 Deadlock detected

De vez en cuando puede pasar que dos sesiones que se pisen se bloqueen al intentar hacer cambios en los mismos datos (a nivel de registro o a nivel de tabla). En sistemas no concurrentes y/o bien diseñados no tiene por que pasar ya que las aplicaciones suelen estar mínimamente pensadas para evitarlo; o en todo caso en pruebas pre-producción ya se detecta y se corrige. El caso es que incluso aunque se planee evitarlos se pueden producir. En la mayoría de casos se resuelven solitos al acabar de realizar los cambios la sesión bloqueante, incluso ni nos daremos cuenta. En otros casos más infrecuentes se producen bloqueos circulares irresolubles, “deadlocks”, donde se acaba haciendo rollback de una transacción y se genera una entrada en el fichero de alerta:

ORA-00060: Deadlock detected. More info in file /opt/oracle/admin/XXX/udump/XXX_ora_28205.trc

MySql: Descubriendo information_schema y PROFILING

Recientemente he pasado un entorno mysql de la versión 5.0.32 a una más reciente que ya incluye la base de datos information_schema con tablas de metadatos equivalentes a algunos comandos SHOW ya disponibles anteriormente.
"INFORMATION_SCHEMA es la base de datos de información, que almacena información acerca de todas las otras bases de datos que mantiene el servidor MySQL. Dentro del INFORMATION_SCHEMA hay varias tablas de sólo lectura. En realidad son vistas, no tablas, así que no puede ver ningún fichero asociado con ellas. Cada usuario MySQL tiene derecho a acceder a estas tablas, pero sólo a los registros que se corresponden a los objetos a los que tiene permiso de acceso. "..

 

MySql: Pruebas de rendimiento y parametrización usando mysqlslap

A MySql le acompaña mysqlslap (creo que a partir de 5.x), un ejecutable que permite hacer ejecuciones de scripts masivas para simular carga la carga de trabajo en el servidor generada por clientes mysql. Le podemos pasar un script de preparación y un script de consultas DML sobre el que medir tiempos. Con esto lo interesante también es que podemos obtener el tiempo mínimo, máximo y medio con distintas concurrencias.

Podemos empezar con un ejemplo básico con script de creación y de carga...