Nov 28, 2007

Oracle: Problema:"java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed."

Si bajo cualquier circunstancia siguen con el error "java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed." al ejecutar cualquier aplicación de oracle prueben haciendo:

export LIBXCB_ALLOW_SLOPPY_LOCK=1

luego prueben la aplicación a ver que les resulta.
ej: oemapp dbastudio

también pueden agregar la siguiente línea en su archiv .profile:
LIBXCB_ALLOW_SLOPPY_LOCK=1; export LIBXCB_ALLOW_SLOPPY_LOCK



felipe D.
fuente: http://en.opensuse.org/Oracle_on_openSUSE

Nov 20, 2007

.Net: Disponibles las versiones express de la nueva plataforma

El próximo 27 de febrero será una fecha importante para Microsoft. Ese día será cuando se lance oficialmente Windows Server 2008, SQL Server 2008 y Visual Studio 2008, aplicaciones en su mayor parte destinadas a las empresas y que marcan un ciclo importante de actualizaciones a estas.

Pero ya es posible empezar a probar algunas de las aplicaciones de Visual Studio 2008, concretamente las versiones Express. Entre las que nos podemos descargar encontramos Visual Basic 2008 Express Edition, Visual Web Developer 2008 Express Edition, Visual C# 2008 Express Edition y Visual C++ 2008 Express Edition.

Podremos hacerlo bien por separado, con una instalación para cada un de ellas, o bien mediante la descarga de un DVD con todas juntas y acompañadas de los componentes adicionales, así que ya podemos empezar a testear estas nuevas herramientas de desarrollo.

Vía | News.com.
Enlace | Microsoft.

(Noticias de genbeta)

Nov 19, 2007

Opensuse 10.3: Problema para compilar con vmware server

Si al compilar vmware en opensuse tienes problemas es bueno que después de instalar el rpm parches los binarios y fuentes de vmware para no tener problemas al correr vmware-config.pl: (Obviamente asegurate de tener instalados los paquetes make, gcc y kernel-source)

puedes parchar estos binarios utilizando el parche publicado por el soporte de vmware:

http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update113.tar.gz

cuando lo descarges guardalo en una carpeta y luego:
gunzip nombre_de_archivo.tar.gz
tar -xvf nombre_archivo.tar

./runme.pl

sigue las instrucciones y tendras listo tu vmware

Felipituxxxxx .SAludos Felipe master.

Windows: Permitiendo un número más grande de conexiones en iis 5.0

En iis 6.0 de windows 2003 esto es bastante fácil pero en un windows xp cuando se está en proceso de desarrollo y se desean probar las cargas respectivas se puede hacer lo siguiente:

ingresar al registro de windows (regedit) y agregarlo siguiente

HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Internet Settings

Agrega las siguientes claves como valor DWORD

MaxConnectionsPerServer
MaxConnectionsPer1_0Server

agrega el valor décimal del número de conexiones como 50 o 100 a cada nueva clave.


Felipitux. saludos

Física: Paradoja de los dos gemelos


Como ya sabemos en la teoría de la relatividad cada observador tiene su propia medición del tiempo. Ello puede conducir a la famosa paradoja de los dos gemelos.

Unos de los gemelos (a) parte a un viaje espacial durante el cual se desplaza con una velocidad próxima a la de la luz (c), en tanto que su hermano (b) se queda en la Tierra.

Debido al movimiento, el tiempo transcurre más lentamente en la nave espacial que para el gemelo que permanece en la Tierra.

Por ello a su regreso el viajero espacial (a2) constata que su hermano (b2) es más viejo que él. Aunque ello parece desafiar el sentido común, diversos experimentos han corroborado que, efectivamente, el gemelo viajero permanecería más joven.


Ilustración 1:imagen del sitio web http://www.xtec.cat/~lvallmaj/palau/einstein/besssons.jpg

Fuente: “El Universo en una cáscara de nuez” de Stephen Hawking

Escrito por Felipe Donoso B.

http://es.wikipedia.org/wiki/Paradoja_de_los_gemelos



Albert Einstein: Magnitud del tiempo

Una de las ideas que expuso Albert Einsten en su teoría de la relatividad es que cada observador (entiéndase por esto cualquier persona que desde algún punto en el espacio se encuentra en movimiento o en estado de reposo observando algún evento espacio-tiempo) tendría su propio tiempo personal, refiriéndose a esto en la relación espacion-tiempo entre dos observadores. Los tiempos de estas dos personas permanecerían iguales si ambas estuvieran en reposo la una con respecto a la otra, pero sus relojes biológicos y mecánicos no coincidirían si estuvieran desplazándose la una con relación a la otra.

La idea de Einstein fue confirmada en experimento dónde se hizo volar en dos aviones alrededor de la tierra y en sentidos opuestos dos personas con sus respectivos relojes sincronizados exactamente a la misma hora una en cada avión. Los aviones debían partir desde el mismo lugar y llegar a un mismo lugar. Uno de los aviones realizó el viaje por el oeste y el otro por el este. Para sorpresa de muchos el avión que viajó hacia el este traía a su pasajero con el reloj atrasado unas breves fracciones de segundos, esto se da porque la a la velocidad y dirección del avión se suma también la velocidad y dirección de la rotación terrestre. No olvidemos que la tierra gira en rotación de oeste a este. Por lo tanto si quisiéramos vivir más tendríamos que mantenernos viajando hacia el este.

Fuente: “El Universo en una cáscara de nuez” de Stephen Hawking

Escrito por Felipe Donoso B.

Oracle: Job and procedure for to update statistics

Para actualizar estadisticas en un oracle 9i pueden utilizar un job que ejecute cada cierto tiempo como una vez al mes el DBMS_STATS.GATHER_TABLE_STATS. por ejemplo: pueden crear el siguiente job que se ejecuta una vez al mes:

exec SYS.DBMS_JOB.SUBMIT(
job => :id
,what => 'CALCULAR_ESTADISTICAS;'
,next_date => TRUNC(LAST_DAY(SYSDATE)) + 1
,interval => 'TRUNC(LAST_DAY(SYSDATE)) + 1'
,no_parse => FALSE
);

Y crean el procedimiento que realiza la actualización:

CREATE OR REPLACE PROCEDURE CALCULAR_ESTADISTICAS
IS
CURSOR C_OBJETOS
IS
SELECT OWNER, TABLE_NAME
FROM ALL_TABLES
WHERE
OWNER = 'dueño_de_tablas_a_actualizar';

nombre_tabla VARCHAR2(100);
propietario VARCHAR2(100);
sql_str VARCHAR2(1000);

BEGIN
OPEN C_OBJETOS;
LOOP
FETCH C_OBJETOS INTO propietario, nombre_tabla;
EXIT WHEN C_OBJETOS%NOTFOUND;
sql_str:= 'BEGIN DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => '''||propietario||''', TABNAME => '''||nombre_tabla||''', ESTIMATE_PERCENT => 100, CASCADE => TRUE); END;';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END LOOP;
CLOSE C_OBJETOS;
END;
/

saludos. Felipe

PD: Siempre que puedan realizen actualización de estadisticas tomando como muestra un 100% de los datos. Saludos.

Nov 15, 2007

Oracle: Visualizando los jobs que se están ejecutando:

Para visualizar los jobs que se encuentran coriendo podemos ejecutar lo siguiente:

set linesize 250
col sid for 9999 head 'Session|ID'
col log_user for a10
col job for 9999999 head 'Job'
col broken for a1 head 'B'
col failures for 99 head "fail"
col last_date for a18 head 'Last|Date'
col this_date for a18 head 'This|Date'
col next_date for a18 head 'Next|Date'
col interval for 9999.000 head 'Run|Interval'
col what for a60
select j.sid,
j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select djr.SID,
dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj, dba_jobs_running djr
where dj.job = djr.job ) j;

.Net: LLenando un combobox en un formulario Windows

Script C# para llenar un combo box desde una base de datos Oracle:

private void button1_Click(object sender, EventArgs e)

{
OracleConnection oraConn = new OracleConnection();
oraConn.ConnectionString = "user id=hr;data source=antares;password=hr";
oraConn.Open();
OracleCommand oraCmd = new OracleCommand("SELECT REGION_NAME FROM regions", oraConn);
OracleDataReader oraReader = oraCmd.ExecuteReader();
while (oraReader.Read())
{
comboBox1.Items.Add(oraReader.GetValue(0).ToString());
}
oraReader.Close();
oraConn.Close();
}
}

Saludos.

Felipe Donoso B.

Nov 14, 2007

Sql Server: desencriptando Procedimientos almacenados

(Atención: funciona sólo en sqlserver 2000, en las versiones actuales les  borrará el SP correspondiente, ojo con aquello)

Para desencriptar procedimientos almacenados debemos hacer lo siguiente:

Si tenemos un procedimiento encriptado como el siguiente:

CREATE PROCEDURE desencriptame
WITH ENCRYPTION
AS
PRINT 'desencriptame porfavor'
GO

y si luego quiesieramos visualizar el texto de este procedimiento nos apareceria lo siguiente:

exec sp_helptext desencriptame

mensaje: Los comentarios de objeto han sido cifrados.

Para ver el código desencriptado hagamos lo siguiente. Vamos a crear un procedimiento que desencripte esto. este procedimiento se llamará DECRYPTSP2K y su código es el siguiente: compilenlo:

CREATE PROCEDURE [DBO].[DECRYPTSP2K](
@objName VARCHAR(50))
AS
DECLARE @a NVARCHAR(4000),
@b NVARCHAR(4000),
@c NVARCHAR(4000),
@d NVARCHAR(4000),
@i INT,
@t BIGINT
--get encrypted data
SET @a = (SELECT CTEXT
FROM SYSCOMMENTS
WHERE ID = OBJECT_ID(@objName))
SET @b = 'ALTER PROCEDURE ' + @objName + ' WITH ENCRYPTION AS ' +

REPLICATE('-',4000 - 62)


EXECUTE( @b)
--get encrypted bogus SP
SET @c = (SELECT CTEXT
FROM SYSCOMMENTS
WHERE ID = OBJECT_ID(@objName))
SET @b = 'CREATE PROCEDURE ' + @objName + ' WITH ENCRYPTION AS ' +

REPLICATE('-',4000 - 62)
--start counter
SET @i = 1
--fill temporary variable
SET @d = REPLICATE(N'A',(DATALENGTH(@a) / 2))
--loop
WHILE @i <= DATALENGTH(@a) / 2
BEGIN
--xor original+bogus+bogus encrypted
SET @d = STUFF(@d,@i,1,NCHAR(UNICODE(SUBSTRING(@a,@i,1)) ^ (UNICODE(SUBSTRING(@b,@i,1)) ^ UNICODE(SUBSTRING(@c,@i,1)))))
SET @i = @i + 1
END
--drop original SP
EXECUTE( 'drop PROCEDURE ' + @objName)
--remove encryption
--try to preserve case
SET @d = REPLACE((@d),'WITH ENCRYPTION','')
SET @d = REPLACE((@d),'With Encryption','')
SET @d = REPLACE((@d),'with encryption','')
IF CHARINDEX('WITH ENCRYPTION',UPPER(@d)) > 0
SET @d = REPLACE(UPPER(@d),'WITH ENCRYPTION','')
--replace SP
EXECUTE( @d)
Luego ejecutenlo de la siguiente manera:

exec DECRYPTSP2K 'desencriptame'
go

Luego vuelvan a ejecutar el sp_helptext y obtendrán el código desencriptado:

exec sp_helptext desencriptame

mensaje:
Text
CREATE PROCEDURE desencriptame

AS
PRINT 'desencriptame porfavor'

Saludos. Felipe D.

Pipebytes: Compartiendo archivos

Hay usuarios que se quejan del tamaño máximo de archivos adjuntos que permiten los webmails actuales, además de los problemas de transferencias de archivos que se suele dar dentro de los programas de mensajería.

PipeBytes viene a resolver este problema, sin instalación de ninguna aplicación y, únicamente a través del navegador. Pero aunque no te lo creas, no dispone de límite de tamaño de archivos y, además, permite al destinatario empezar la descarga cuando el remitente no lo ha subido del todo.

El remitente tan sólo tendrá que facilitarle el código o la url específica del archivo que quiere compartir al destinatario, para que éste se dedique a su descarga inmediata, estableciendo una relación directa sin ningún servidor intermedio donde alojar los archivos.

A partir de ahora, ya no tendremos problemas en recibir archivos, aunque podamos estar detrás de un proxy que nos impida determinadas transferencias. Lo malo es ver cuanto tiempo sigue en pie este servicio.

Gracias Blamsa por el aviso

Enlace | PipeBytes

Windows: 10 nuevas caracteristicas de Windows Server 2008

Hay algunas diferencias (alguna es sutil otras no tanto) con respecto a la arquitectura del nuevo Windows Server 2008, que pueden cambiar dramáticamente la manera en que se usa este sistema operativo. Estos cambios afectan la manera en como se gestiona el sistema hasta el punto de que se pueden llegar a controlar hardware de forma más efectiva, se puede controlar mucho mejor de forma remota y cambiar de forma radical la política de seguridad. Veamos a continuación 10 de las mejoras que nos desvelan la gente de betanews:

10 – Nuevo proceso de reparación de sistemas NTFS : proceso en segundo plano que repara los archivos dañados.
9 – Creación de sesiones de usuario en paralelo : reduce tiempos de espera en los Terminal Services y en la creación de sesiones de usuario a gran escala.
8 – Cierre limpio de Servicios: se acabó el tiempo de espera antes de la finalización de servicios.
7 – Kernel Transaction Manager: mejoras en la gestión concurrente de recursos.
6 – Sistema de archivos SMB2: de 30 a 40 veces más rápido el acceso a los servidores multimedia.
5 – Address Space Load Randomization (ASLR) : protección contra malware en la carga de drivers en memoria.
4 – Windows Hardware Error Architecture (WHEA): protocolo mejorado y estandarizado de reporte de errores.
3 – Virtualización de Windows Server: mejoras en el rendimiento de la virtualización.
2 – PowerShell: inclusión de una consola mejorada con soporte GUI para administración.
1 – Server Core: el núcleo del sistema se ha renovado con muchas y nuevas mejoras.

(genbeta)
http://www.betanews.com/article/Top_10_New_Features_in_Windows_Server_2008/1180045346

Nov 13, 2007

Linux: Habilitar servicios automáticos


si quisieramos dejar algún servicio automático en los runlevel del SO. (que se inicie al botear la máquina) en red hat o similar podemos utilizar el siguiente comando:

chkconfig --level {0|1|2|3|4|5|6} {on|off}

Por ejemplo si quisieramos que el servicio NFS suba y baje automáticamente, debemos ejeutar lo siguiente

[root@antares ~]# chkconfig --level 345 nfs on
[root@antares ~]# chkconfig --level 06 nfs off
[root@antares ~]# chkconfig --list nfs
nfs 0:desactivado 1:desactivado 2:desactivado 3:activo 4:activo 5:activo 6:desactivado

con el último comando verifican el estado del servicio.

eso es todo salud2.
Felipitux

Nov 9, 2007

Sql Server: Pasos en la recuperación (Teórico)

La recuperación en SQL Server se divide en tres pasos:

1.- Analyze (Análisis): La primera fase es una pasada hacia delante que empieza en el último registro de punto de comprobación del registro de transacciones. Esta pasada determina y construye una tabla de páginas modificadas (DPT; Dirty Page Table), que se compone de páginas que podían estar modificadas en el instante del fallo (o cuando se detuvo SQL Server). Se construye una tabla de transacciones activas que se compone de transacciones no confirmadas en el instante del fallo.

2.- Redo (Rehacer): Esta fase repite la historia devolviendo la base de datos al estado en que se encontraba en el instante del fallo. El punto de partida de esta pasada hacia delante es el mínimo de todos los LSN de la DPT. Se utiliza la DPT para evitar leer páginas que no es necesario recuperar y para evitar sustituir los cambios no registrados.

3.- Undo (Deshacer): Esta fase de desplaza hacia atrás desde el final del registro, siguiendo los enlaces entre las entradas en el registro de las transacciones para cada transacción. Cualquier transacción que no estuviera confirmada en el instante del fallo se deshace de forma que ninguno de sus cambios aparezca reflejado realmente en la base de datos.

Saludos.

Nov 7, 2007

Virtual Box: Shared Folders

Para trabajar con shared folders sobre un máquina virtual windows xp basta con ejecutar lo siguiente:

net use x: \\vboxsvr\nombre_de_la_carpeta_compartida

saludos.

Nov 5, 2007

Windows: Obteniendo información de sistemas desde la línea de comandos


Para obtner información parcial del sistema operativo a través de la línea de comandos (válido para windows XP o posterior), basta con utilizar el utilitario systeminfo desde una ventana MS-DOS de este modo:

systeminfo[.exe] [/s computador[/u dominio\usuario[/p contraseña]]] [/fo {tabla|lista|cvs}] [/nh] [ >[>] archivo_de_salida[.txt]]

Dónde:

computador: es el hosts en dónde se va a obtener la información de sistema.
dominio/usuario y contraseña: los métodos de autentificación para esa máquina.
/fo {tabla|lista|cvs}]: Es el tipo de salida que tendrá la información
/nh: Significa no headers, suprime los encabezados en las salidas.
archivo_de_salida: obviamente dónde la información recolectada va a ser redirigida.

Ejemplo:

C:\>systeminfo /s localhost /u administrador /fo TABLE > info.txt

y con ese código obtienen la información de sistema a un archivo de texto. ¡Qué fácil!

Saludos.
Felipe. Ingeniero :D

Linux: Montando volumen nfs

El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales. Originalmente fue desarrollado en 1984Sun Microsystems, con el objetivo de que sea independiente de la máquina, el sistema operativo y el protocolo de transporte, esto fue posible gracias a que está implementado sobre los protocolos XDR (presentación) y ONC RPC (sesión) [1] . El protocolo NFS está incluido por defecto en los Sistemas Operativos UNIX y las distribuciones Linux. (Wikipedia)

El método por el cuál esto se puede montar es muy simple, primero la configuración desde el servidor:

- En red hat y S.O similares existen métodos tradicionales, que nos permiten configurar NFS a través de interfaz gráfica, como en el ejemplo siguiente:


En dónde Directorio es la url de la carpeta a ser compartida. Por otra parte en el campo Host(s) ingresamos los hosts remotos a los cuales les queremos habilitar el acceso a dicha carpeta (en pocas palabras los clientes).

Las demás opciones pueden quedar por defecto.

Luego de aceptar puedes reiniciar el servidor para que los cambios se carguen en el nuevo sistema con el comando:
service nfs restart, valido para sistemas redhat, suse o similar.

Ahora bien la configuración en el cliente se realiza de la siguiente manera:

sólo basta con utilizar el comando mount de la siguiente manera:

mount -t nfs host_servidor:directorio_habilitado_por_nfs carpeta_montaje_del_cliente

Por ejemplo si tuvieramos un servidor nfs 192.168.100.4 con el directorio compartido /home/oracle/medios y en nuestro cliente tuvieramos la carpeta /mnt/test el comando quedaría de la siguiente manera:

mount -t 192.168.100.4:/home/oracle/medios /mnt/test

Por otra parte el uso de este se puede aplicar al famoso archivo /etc/fstab de la siguiente manera para que al arrancar nuestro equipo cliente ya tenga la partición montada a través de fstab:

192.168.100.4:/home/oracle/medios /mnt/test nfs defaults 1 1


Eso sería todo.

Saludos. Felipitux. Felipe Donoso


Nov 2, 2007

Mysql: Tipos de Bases de Datos y bloqueos

3.1.4.1 Tablas ISAM
Las tablas de tipo de Método de acceso secuencial indexado (ISAM) era el estándar
antiguo de Mysql. Estas fueron sustituidas por las tablas MyiSAM en la versión 3.23.
Por lo tanto, es probable que solo se tope con este tipo de tablas si está trabando con
bases de datos antiguas. La principal diferencia entre las dos, es el índice de las
tablas MyISAM es mucho más pequeño que el de las tablas ISAM, de manera que un
SELECT con un índice sobre una tabla MyISAM utilizará mucho menos recursos del
sistema.

3.1.4.2.1 Tablas estáticas
Las tablas estáticas tienen longitud fija. Cada registro tiene asignado exactamente 10
Bytes.
Este tipo de tablas se caracterizan por:
• Ser muy rápidas (ya que Mysql sabe que el segundo nombre comienza
siempre en el carácter número once)
• Resultan sencillas de almacenar en caché.
• Resultan sencillas para reconstruir tras un fallo.
• Requieren más espacio de disco

3.1.4.2.2 Tablas Dinámicas
Las columnas de las tablas dinámicas tienen diferentes tamaños. Auque este tipo de
dato ahorra espacio, resulta sin embargo más complejo.
Las tablas de tipo dinámico presentan las siguientes características:
• Todas las columnas de cadena son dinámicas.
• Por regla general, ocupan mucho menos espacio de disco que las tablas fijas.
• Las tablas requieren un mantenimiento regular para evitar su fragmentación.
• No resulta tan sencillo de reconstruir tras un fallo, especialmente si las tablas
están muy fragmentadas.
3.1.4.2.3 Tablas comprimidas
Las tablas comprimidas son tablas de solo lectura que utilizan mucho menos espacio
en disco.
Son ideales para su uso con datos comprimidos que no cambien (que solo se pueden
leer y no escribir) y donde no exista mucho espacio disponible.
Las tablas comprimidas presentan las siguientes características:
• Las tablas son mucho más pequeñas.
• Como cada registro se comprime de forma separada, la carga de acceso es
reducida.
• Cada columna se podría comprimir de forma diferente, utilizando distintos
algoritmos de compresión.

3.1.4.3 Tablas Merge
Las tablas Merge son la fusión de las tablas MyISAM iguales.
Por lo general se usa cuando las tablas MyISAM comienzan a resultar demasiado
grandes.
Entre las ventajas de estas tablas se pueden mencionar las siguientes:
• Resultan más rápidas en determinadas situaciones.
• El tamaño de la tabla es más pequeño
Desventajas de la tabla Merge:
• Resultan mucho más lentas en búsquedas.
• El comando REPLACE no funciona sobre ellas.

3.1.4.4 Tablas Heap
Las tablas Heap son el tipo de tabla más rápido porque se almacena en memoria y
utilizan un índice asignado. La contrapartida es que como se almacenan en memoria,
en el caso de una falla del sistema, los datos se pierden.
3.1.4.5 Tablas Innodb
Las tablas Innodb son tablas de transacción segura (lo que significa que dispone de
las funciones COMMIT y ROLLBACK). En una tabla MyISAM, la tabla entera se
bloquea al realizar funciones de inserción. Durante esa fracción de segundo, no se
puede ejecutar ninguna otra instrucción sobre la tabla. Innodb utiliza funciones de
bloqueo a nivel de fila de manera que solo se bloquee dicha fila y no toda la tabla, y
se puedan seguir aplicando instrucciones sobre otras filas.

3.1.5 Transacciones y bloqueos
Las consultas sobre la base de datos se ejecutan una después de otra. En el caso de un
sitio Web que sirva páginas, da lo mismo el orden en que la base de datos realice las
consultas, siempre y cuando lo haga rápidamente. Sin embargo, ciertos tipos de
consultas necesitan realizarse en un orden dado, como las que dependen de los
resultados de una consulta anterior, o grupos de actualizaciones que necesitan
realizarse en conjunto. Todos los tipos de tabla pueden utilizar la función de bloqueo,
pero sólo los tipos innodb y BDB disponen de funciones transaccionales integradas.

3.1.6 Las transacciones en las tablas Inodb
La potencia de las tablas innodb procede del uso de transacciones o instrucciones
SQL agrupadas en una. Un ejemplo típico son las transacciones bancarias.
Por ejemplo, si se transfiere una cantidad de dinero desde la cuenta de una persona a
otra, se realizan al menos dos consultas:
UPDATE Persona1 SET Valor = ValorDisponible – ValorADebitar;
UPDATE Persona2 SET Valor = ValorDisponible + ValorADebitar;

El proceso parece claro, pero que ocurriría si algo sale mal durante el proceso y el
sistema falla entre las dos consultas sin que llegue a completarse la segunda. Se
habrá retirado los fondos de la cuenta de la primera persona, se creerá que el pago se
ha realizado. Sin embargo, la segunda persona no estará muy contenta porque el pago
no se ha realizado. En este tipo de transacciones, resulta fundamental asegurarse de
que las dos consultas se levan a cabo o que no se hace ninguna de las dos. Para ello,
se empaquetan en los que se conoce como una transacción, con una instrucción
BEGIN para indicar el inicio de la transacción y una instrucción COMMIT para
indicar el final. Solo tras procesar la instrucción COMMIT, las consultas se habrán
convertido en permanentes. Si algo sale mal a media ejecución, podemos utilizar el
comando ROLLBACK para invertir la parte incompleta de la transacción.

3.1.7 Lecturas coherentes
De manera predeterminada, las tablas innodb realizan una lectura coherente. Esto
significa que al realizar una consulta de selección, Mysql devuelve los valores
presentes de la base de datos hasta la última transacción completada. Si en el
momento de realizar la consulta existe alguna transacción en progreso, los resultados
de las instrucciones UPDATE o INSERT no se reflejarán, con una excepción: la
transacción abierta puede modificarse (puede que haya observado que al realizar la
consulta BEGIN-INSERT-SELECT, se visualizó el resultado insertado). Para poder
verlo, necesita tener dos ventanas abiertas y estar conectado a la base de datos.

3.1.8 Lectura de Bloqueos para actualizaciones
Las lecturas coherentes no siempre resultan adecuadas. Por ejemplo, que ocurriría si
varios usuarios están intentando agregar un nuevo registro en una tabla innotest?
Cada nuevo registro inserta un número ascendente exclusivo, este campo no es clave
principal o un campo de incremento automático, por lo tanto nada impide que cree el
registro duplicado. Sin embargo, no queremos que eso ocurra. Lo que desearíamos es
leer el valor actual e insertar un nuevo valor, incrementando en una unidad. Pero esta
acción no garantiza un valor único.
La forma de evitar resultados erróneos es realizando un bloqueo de actualización
sobre la operación de selección. Si indicamos a Mysql, que estamos realizando una
lectura de actualización, no permitirá que nadie más lea el valor hasta que nuestra
transacción se haya completado.

3.1.9 Bloqueos de lectura en modo compartido
Existe otro tipo de bloqueo de lectura que no devuelve un valor si el valor que está
leyendo ha sido modificado por una transacción incompleta. Devuelve el último
valor, pero no forma parte de una transacción cuya intención es modificar el valor.

3.1.10 Transacciones en tablas BDB
Las tablas BDB procesan las transacciones de forma ligeramente diferente a las
tablas Innodb. Si una persona está realizando una transacción sobre una tabla x, si
esta transacción no está completa, ninguna persona podrá consultar los datos de esta tabla mientras la transacción no finalice.
El periodo de tiempo que puede significar al llevar a cabo esta consulta es
demasiado. El hecho de que no se trate de una consulta de selección “rápida” en las
tablas BDB significa que todas las transacciones que se pospongan pueden dar lugar
a graves problemas de rendimiento.
Como en el caso de las tablas innodb, el modo predeterminado de AUTOCOMMIT =
1. Esto significa que a menos que coloque sus cambios dentro de una transacción
(comenzando con BEGIN), se completarán inmediatamente.

3.1.11 Otros comportamientos transaccionales
Existe una serie de comandos adicionales que finalizan automáticamente una
transacción (en otras palabras, que se comportan como si hubiéramos realizado una
operación de confirmación):
• BEGIN
• ALTER TABLE
• CREATE INDEX
• RENAME TABLE
• TRUNCATE
• DROP TABLE
• DROP DATABASE
• LOCK TABLES
Hay que tener mucho cuidado cuando se realizan transacciones ya que al ejecutar
cualquiera de estos comandos cuando las transacción este a medias, automáticamente
se realizará un COMMIT.

(Manual de Diferencias entre Mysql y Oracle, Diego Javier Burbano, Ecuador)

Sql Server: Estadisticas y la forma de administrar estas



Como muchos de ustedes deben saber, la actualización de estadisticas en una base de datos cualquiera permite al optimizador de planes realizar y evaluar los mejores planes de ejecución de acuerdo al costo que esta query representa.

Por defecto la creación y actualización de estadisticas en SQL Server es automática, y para entender en qué momento y con qué frecuencias se realiza esto recomiendo leer lo siguiente:

Cómo funcionan las estadísticas automáticasCómo funcionan las estadísticas automáticas

Cuando crea un índice, el optimizador de consultas almacena automáticamente información estadística acerca de las columnas indizadas. Además, cuando la opción de base de datos AUTO_CREATE_STATISTICS es ON (valor predeterminado), Database Engine (Motor de base de datos) crea automáticamente estadísticas de las columnas sin índices que se utilizan en un predicado.

Cuando cambian los datos de una columna, las estadísticas de índice y de columna pueden quedar desfasadas y provocar que el optimizador de consultas tome decisiones poco adecuadas acerca de cómo procesar una consulta. Por ejemplo, si crea una tabla con una columna indizada y 1.000 filas de datos, todas con valores exclusivos en la columna indizada, el optimizador de consultas considera que la columna indizada puede ser una buena forma de recopilar los datos para una consulta. Si actualiza los datos de la columna de forma que haya muchos valores duplicados, la columna deja de ser una candidata ideal para usarla en consultas. No obstante, el optimizador de consultas sigue considerándola una buena candidata según las estadísticas desfasadas del índice, que se basan en los datos anteriores a la actualización.
Nota:
Si faltan estadísticas o están desfasadas, se indica mediante advertencias (el nombre de la tabla aparece en rojo) cuando el plan de ejecución de una consulta se representa gráficamente con SQL Server Management Studio. Para obtener más información, vea Mostrar planes de ejecución gráficos (SQL Server Management Studio). Además, si se supervisa la clase de evento Missing Column Statistics con el Analizador de SQL Server, se indica cuándo faltan estadísticas. Para obtener más información, vea Errores y advertencias (categoría de eventos del motor de base de datos).

Cuando la opción de la base de datos AUTO_UPDATE_STATISTICS está establecida en ON (valor predeterminado), el optimizador de consultas actualiza automáticamente esta información estadística periódicamente a medida que cambian los datos de las tablas. Se inicia una actualización de estadísticas cuando las estadísticas que se utilizan en un plan de ejecución de consultas no pasan una prueba de las estadísticas actuales. El muestreo de las páginas de datos es aleatorio y se realiza a partir de la tabla o del índice no agrupado más pequeño en las columnas necesarias para las estadísticas. Después de leer una página de datos del disco, todas las filas de la página de datos se utilizan para actualizar la información estadística. Casi siempre, la información estadística se actualiza cuando ha cambiado aproximadamente el 20 por ciento de las filas de datos. No obstante, el optimizador de consultas siempre se asegura de que se muestrea un número mínimo de filas. Las tablas de menos de 8 megabytes (MB) siempre se examinan completamente para recopilar estadísticas.

El muestreo de los datos, en lugar del análisis de todos los datos, minimiza el costo de la actualización estadística automática. En determinadas circunstancias, el muestreo estadístico no permitirá caracterizar con precisión los datos de una tabla. Puede controlar la cantidad de datos que se muestrean durante las actualizaciones manuales de las estadísticas, tabla por tabla, mediante las cláusulas SAMPLE y FULLSCAN de la instrucción UPDATE STATISTICS. La cláusula FULLSCAN especifica que se recorran todos los datos de la tabla para recopilar datos estadísticos, mientras que la cláusula SAMPLE se puede utilizar para especificar el porcentaje o el número de filas que se deben muestrear.
Actualizaciones de estadísticas asincrónicasActualizaciones de estadísticas asincrónicas

Una consulta que inicia una actualización de estadísticas no actualizadas debe esperar a que se actualicen esas estadísticas antes de compilar y devolver un conjunto de resultados. Esto puede causar tiempos de respuesta impredecibles y puede hacer que las aplicaciones con tiempos de espera cortos devuelvan un error.

En SQL Server 2005, la opción AUTO_UPDATE_STATISTICS_ASYNC de la base de datos proporciona una actualización asincrónica de las estadísticas. Cuando esta opción se establece en ON, las consultas no esperan a que se actualicen las estadísticas antes de la compilación. En su lugar, las estadísticas que no están actualizadas se ponen en una cola para que las actualice un subproceso de trabajo en un proceso en segundo plano. La consulta y cualquier otra consulta simultánea se compilan inmediatamente utilizando las estadísticas obsoletas existentes. Como no hay ningún retardo para las estadísticas actualizadas, los tiempos de respuesta de las consultas son predecibles; no obstante, las estadísticas obsoletas pueden hacer que el optimizador de consultas elija un plan de consulta menos eficiente. Las consultas que empiezan cuando las estadísticas actualizadas están preparadas utilizarán esas estadísticas. Esto puede provocar la recompilación de planes almacenados en la memoria caché que dependen de versiones de estadísticas más antiguas. La actualización asincrónica de estadísticas no puede tener lugar si cualquiera de las instrucciones de lenguaje de definición de datos (DDL), tales como instrucciones CREATE, ALTER y DROP, tiene lugar en la misma transacción de usuario explícita.

La opción AUTO_UPDATE_STATISTICS_ASYNC se establece en el nivel de la base de datos y determina el método de actualización para todas las estadísticas de la base de datos. Sólo es aplicable a la actualización de estadísticas y no se puede usar para crear estadísticas de forma asincrónica. El establecimiento de esta opción en ON no tiene ningún efecto a menos que AUTO_UPDATE_STATISTICS también se establezca en ON. De forma predeterminada, la opción AUTO_UPDATE_STATISTICS_ASYNC está en OFF. Para obtener más información acerca de la configuración de esta opción, vea ALTER DATABASE (Transact-SQL).

Antes de establecer una base de datos como SINGLE_USER, compruebe que la opción AUTO_UPDATE_STATISTICS_ASYNC está establecida en OFF. Cuando se establece en ON, el subproceso en segundo plano usado para actualizar las estadísticas toma una conexión con la base de datos y no se podrá tener acceso a la base de datos en modo de usuario único. Si la opción está establecida en ON, realice las tareas siguientes:

1. Establezca AUTO_UPDATE_STATISTICS_ASYNC en OFF.
2. Compruebe si hay trabajos de estadísticas asincrónicos consultando la vista de administración dinámica sys.dm_exec_background_job_queue.
3. Si hay trabajos activos, permita que se completen o termínelos manualmente con KILL STATS JOB.

Fuente: http://technet.microsoft.com/es-es/library/ms190397.aspx

Principales funciones y procedimientos que interfieren en el proceso de actualización de estadisticas:

-- Para visualizar datos de estadisticas en un índice de cierta tabla
USE northwind
DBCC SHOW_STATISTICS (Customers,City )


--A. Mostrar el estado actual de todos los índices de una tabla
--Este ejemplo muestra el estado actual de las estadísticas de todos los índices de la tabla authors.

USE Northwind
exec sp_autostats @tblname = 'Customers'

--B. Habilitar las estadísticas automáticas de todos los índices de una tabla
--Este ejemplo habilita la configuración de estadísticas automáticas de todos los índices de la tabla authors.

USE pubs
EXEC sp_autostats authors, 'ON'

--C. Deshabilitar las estadísticas automáticas de un índice especificado
--Este ejemplo deshabilita la configuración de estadísticas automáticas del índice au_id de la tabla authors.

USE pubs
EXEC sp_autostats authors, 'OFF', au_id

-- Para actualizar manualmente las estadisticas
UPDATE STATISTICS Northwind..Customers WITH FULLSCAN

y Cómo recomendación las estadisticas se deben actualizar en lo posible regularmente. Las tablas a actualizar dependen de la aplicación con las que interactuan. Generalmente se deben actualizar las tablas con mayor cantidad de registros y la más usadas en las bases de datos productivas. Lo más aconsejable es dejar corriendo jobs nocturnos los fines de semana que realizen estas labores de actualización.

Saludos.
Felipitux

Saludos.

Kdenlive, editor de vídeos libre para Linux


Si ya has dado tus primeros pinitos en la edición de vídeos en Linux con algún programa básico, quieres ir pasito a pasito y programas como Cinelerra todavía te asustan por su complejidad, Kdenlive es para ti. Es bastante sencillo de usar, y gracias a su editor multipista podrás realizar vídeos más complejos sin mucha dificultad.

Tiene las funciones habituales de este tipo de programas, como la aplicación de efectos y transiciones, y admite multitud de formatos de entrada para las imágenes, clips o sonidos que quieras añadir. Además, podrás exportar el vídeo a los formatos más útiles, como MPEG, XviD, DV, Flash, Quicktime, etc… Aunque está creada para KDE, en cualquier otro escritorio es bastante usable, y seguramente lo podrás descargar desde tus repositorios habituales (paquete kdenlive), que seguramente ya tendrán la versión 0.5, lanzada a finales de este verano.


Sitio Oficial | Kdenlive


Fuente: Genbeta