Dec 3, 2007

Portal: respaldar e importar en Portal

EXPORT

Para respaldar esquemas, page group y/o DB provider debemos,
en primer lugar, generar el export Transport set desde
la página de PORTAL, luego cuando portal nos genere el archivo
para el export final lo ejecutamos de la siguiente manera

./PORTAL.wwutl_ui_export_import.get_assistant -mode export -s portal -p neuro807 -c infra -d back_up_portal.dmp

Dónde:
s: es el esquema maestro de portal
p: la contraseña del esquema
#nota: La contraseña de portal no se revela en la instalación, si no la conoces
#la puedes cambiar directamente desde la página de administración de ias,
#por ningún motivo la cambies desde script o sqlplus. Sólo por la consola
#de administración del IAS
c: el connection String de la base de datos (nombre de Instancia)
d: Nombre del arcvhivo DUMP final

IMPORT

Debemos correr el mismo script anterior pero esta vez en modo import:

./PORTAL.wwutl_ui_export_import.get_assistant -mode import -s portal -p neuro807 -c infra -d back_up_portal.dmp

Luego de este debemos realizar el import Transport set desde la página de Portal,
buscando el transpoprt set Import generado por el script anteriormente generado,
luego realizamos ese último import y todo estará listo.

Felipe Donoso B.

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

Oct 31, 2007

Linux: Habilitar aceleración 3d en Linux



Inevitablemente para poder activar xgl en Opensuse que es muy fácil, y para poder emular juegos con Cedega que también es muy fácil (En otro blog comentaré como activar estas dos cosas, aunque ya en opensuse se dispone de herramientas gráficas que por lo menos permiten activar Xgl) deben tener activada la aceleración 3D. y Basta con seguir los siguientes pasos como root.

Tener instalado:
-make
-gcc
-Kernel_source
con el comando rpm -qa make pueden buscar si el paquete está instalado

dirigirse a la carpeta /usr/src/linux y ahí ejecutar los siguientes comandos

make mrproper
make cloneconfig
make modules_prepare
make clean

hacer un init 3 para entrar en modo consola

correr el script del controlador gráfico, este driver puede ser descargado desde la página de ati y este depende del tipo de tarjeta que ustedes posean:

sh ./ati-driver-installer-....
seguir los pasos y dejar todo por defecto

editar el archivo /etc/ld.so.conf y agregar la siguiente línea
máquinas de 32 bits: /usr/lib/fglrx/lib
y para máquinas de 64 bits: /usr/lib64/fglrx/lib

ejecutar el comando ldconfig

Hacer un backup de /etc/X11/xorg.conf

ejecutar aticonfig --initial --input=/etc/X11/xorg.conf

ejecutar sax2 -r -m 0=fglrx


y sería todo. Yo tengo la aceleración 3d activada en un intel celeron D y en mi notebook acer aspire 5050 sólo siguiendo estos pasos.

Oracle: Cambiar de ubicación los datafiles


Pasos para cambiar Ubicación de datafiles:

-Bajar la base de datos
sql> SHUTDOWN IMMEDIATE

- Mover los archivos al nuevo destino
(el movimiento de archivos se puede hacer mientras la base esté montada, no hay problemas con eso)
- Luego Montar la base de datos

SQL> startup mount
ORACLE instance started.

Total System Global Area 439418880 bytes
Fixed Size 1300436 bytes
Variable Size 201328684 bytes
Database Buffers 230686720 bytes
Redo Buffers 6103040 bytes
Database mounted.


- Ahora hacer un rename del datafile hacia el nuevo destino ('ORIGEN' to 'DESTINO')

SQL> ALTER DATABASE RENAME FILE '/u02/oradata/newton/system01.dbf' TO '/u03/oradata/newton/system01.dbf'; Database altered. SQL> ALTER DATABASE RENAME FILE '/u02/oradata/newton/undotbs01.dbf' to '/u04/oradata/newton/undotbs01.dbf'; Database altered. SQL> alter database open; Database altered.

PD: como los archivos de tempfile no se renombran hay que borrarlos y volverlos agregar:

ALTER DATABASE TEMPFILE
'/u02/oradata/infra/infra/temp01.dbf' DROP;

ALTER TABLESPACE TEMP ADD TEMPFILE
'/u02/oradata/infra/temp01.dbf' SIZE 500M;

Linux: Montando partición NTFS en centos4 x64

El núcleo de centos4 x63 por defecto no soporta las particiones ntfs pero utilizando un paquete especial llamado fuse lo puedes hacer. Este paquete y sus dependencias debe ser instalado con los repositorios de centos, que ya publiqué en un artículo anterior:

if you need write access to the ntfs partition, you'll need fuse and ntfs-3g ....
Use the RPMForge repository (see http://wiki.centos.org/Repositories) and use yum install fuse fuse-ntfs-3g dkms dkms-fuse
Then update your /etc/fstab to use your ntfs partition and declare it as a ntfs-3g partition (don't forget the rw option ....)
If you only need read access, the centosplus kernel has ntfs read access module built-in so nothing to do/setup

Felipitux.

Centos: Habilitando repositorio en centos 4

En la página oficial de centos encontré una manera de habilitar repositorios:

The CentOSPlus Repository

The CentOSPlus repository contains packages that are upgrades to the packages in the CentOS base + CentOS updates repositories. These packages are not part of the upstream distribution and extend CentOS's functionality at the expense of upstream compatibility. Enabling this repository makes CentOS different from upstream. You should understand the implications of this prior to enabling CentOSPlus. Here is the CentOSPlus Readme file for CentOS 4 and CentOS 5. You should also browse the CentOSPlus directory for CentOS 4 or CentOS 5 on our mirrors for the architecture you intend to use.

The CentOSPlus repository contains a group of packages, all of which are updates. You probably do not want to enable CentOSPlus as a whole, but instead want to pick the exact packages that you want to use.

Note: The CentOSPlus repository also contains the CentOS Web Stack. If you are interested in upgrading to the CentOS Web Stack please see this page instead. The CentOS Web Stack contains updates to Apache (httpd) 2.0.58, MySQL 5.0, PostgreSQL 8.1, Perl 5.88, mod_perl 2, PHP 5.1.6, and ODBC.

For example, you may want php-5.x and mysql-5.x from CentOSPlus but you may not want the postfix with mysql_pgsql capability, the kernel with unsupported items turned on, etc. Prior to enabling the CentOSPlus repository you should read about the includepkgs= and/or exclude= options in yum. To read about these options use this command at the command line:

man yum.conf

Enabling the CentOSPlus repository

To enable the CentOSPlus repository, edit the file /etc/yum.repos.d/CentOS-Base.repo and look for the [centosplus] section. Here is how it looks by default:

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 <== -CentOS-5 in CentOS5

Example 1: (CentOS 4) We want the new CentOSPlus postfix with mysql_pgsql support. Here is how to setup /etc/yum.repos.d/CentOS-Base.repo:

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
includepkgs=postfix-*
exclude=postfix-*plus*

Note: If you want to use postfix compiled for the CentOS Web Stack versions of pgsql and mysql, you would not need the "exclude=postfix-*plus*"

You would also want to add this to both the [base] and [update] sections of /etc/yum.repos.d/CentOS-Base.repo, so as not to get postfix packages from there anymore:

exclude=postfix-*

Example 2: We want to use CentOSPlus kernel to be able to use the jfs or reiserfs file system and the creation tools. We would edit /etc/yum.repos.d/CentOS-Base.repo and modify the following in the [centosplus] section:

enabled=1
includepkgs=kernel* jfsutils reiserfs-utils

In the [base] and [update] section you would do the following:

exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp*  (CentOS 4 only)
exclude=kernel kernel-devel kernel-PAE-* (CentOS 5 only)

Note: If you want to use the XFS file system there are kernel modules to do that, so see examples 3 and 4.


Example 3: We want to use the XFS file system with the regular kernel ... this does not require the CentOSPlus repo at all, you would just do this:

yum list available kmod-xfs\*

The results would be something like this:

Available Packages
kmod-xfs.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-hugemem.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-smp.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-xenU.i686 0.4-1.el4.2.6.9_55.0.9 extras

I would then pick the module that I need ... in my case kmod-xfs-smp.i686 and install it with this command:

yum install kmod-xfs-smp.i686 xfsdump xfsprogs

Note: The kernel module also has dmapi support, so you can add dmapi to the above install line if you want to use it. XFS usage details are beyond the scope of this page.


Example 4: We already have the CentOSPlus kernel (for a different reason ... otherwise see example 3) AND we want to add XFS filesystem. We would edit /etc/yum.repos.d/CentOS-Base.repo and modify the following in the [centosplus] section:

enabled=1
includepkgs=kernel* xfs* dmapi*

In the [base] and [update] section you would do the following:

exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp*  (CentOS 4 only)
exclude=kernel kernel-devel kernel-PAE-* (CentOS 5 only)

In the [extras] section you would do the folowing:

exclude=xfs* kmod-xfs* dmapi*

yum-plugin-priorities

Another way to protect your system from updates from the CentOSPlus repository is to use the yum-plugin-priorities plugin. This is the recommended method. Follow the instructions shown in the link and set up yum-plugin-priorites. Edit /etc/yum.conf and add this line:

plugins=1

You would set priorities in /etc/yum.repos.d/CentOS-Base.repo like this:

[base]
exclude=foo bar
priority=1

[update]
exclude=foo bar
priority=1

[centosplus]
enable=1
priority=2

This will make the [base] and [update] repositories have higher priority over the [centosplus] repository, so the only items in CentOSPlus that will update either [base] or [update] are items that are excluded from those repositories with an exclude= setting.

Therefore, using yum-plugin-priorities allows you to skip setting up the includepkgs= for the [centosplus] section of CentOS-Base.repo, but it still only allows updates of packages that you exclude= from the [base] and [update] repositories.


Summary

Using the CentOSPlus repository is more dangerous than using other CentOS repositories, as it is designed to have several updated packages and it is not really designed to be completely enabled.

You can use all the packages in CentOSPlus, but normally one will pick only the packages they are looking for and use exclude= and includepkgs= (or exclude= and yum-plugin-priorities) to load only those packages from the CentOSPlus repository.

Please ensure that you understand all these concepts before you use the CentOSPlus repository.

Comandos de vi

Invocación de vi

$vi Editar un texto sin nombre
$vi fichero Editar un fichero (Nuevo o no)
$vi fichero1 fichero2 ... Editar lista de ficheros
$vi +n fichero Editar fichero en la linea n
$vi +/txt fichero Editar fichero en la 1a linea donde aparece txt

Movimientos del cursor
↑k
← →
h ↓j l
0 Inicio de linea
$ Fin de linea
w Word: Avanzar palabra
b Back: Retroceder palabra
e End: Al final de palabra
H Home: Esquina sup. izq. de la ventana
L Last: Esquina inf. izq. de la ventana
^u Window up: Subir ventana
^d Window down: Bajar ventana
^b Page back: Retroceder p´gina
a
^f Page forward: Avanzar página
nG Go: Salta a la n-ésima linea

1G A la primera linea
$G A la ultima linea

zRet Hacer la linea actual la superior
zz Hacer la linea actual la central
z- Hacer la linea actual la ultima

fcar Buscar en la linea el carácter car (hacia delante)

Fcar Buscar en la linea el carácter car (hacia atrás)

Marcas
m(a-z) Marcar la linea actual con (a-z)
’(a-z) Mover a la marca (a-z)
Insertar texto
i Insertar (delante del cursor)
I Insertar al principio de la linea
a Añadir (detrás del cursor)
A A˜ adir al final de la linea
n
o Insertar una linea debajo de la actual
O Insertar una linea encima de la actual
Borrar texto
x Borrar caracter actual
X Borrar caracter anterior
dd Borrar linea actual
D Borrar hasta final de linea
dCmdMov Borrar hasta la posici´n del movimiento indicado
o
dw Borrar palabra
Cambiar texto
rcar Reemplazar el caracter actual por car
R Reemplazar texto desde la posici´n del cursor
o
s Substituir el caracter actual por texto a insertar
S Substituir la linea actual
C Cambiar hasta el final de la linea
cCmdMov Cambiar hasta la posici´n del movimiento indicado
o
cw Cambiar palabra
J Unir a la linea actual la siguiente
Copiar y pegar
CmdBorrado Cortar (El ultimo borrado pasa automáticamente al buffer)

yy Copiar en el buffer la linea actual
αyy Copiar en el buffer α lineas desde la actual
yCmdMov Copiar en el buffer hasta la posición del movimiento indicado
p Pega el buffer detrás del cursor

P Pega el buffer delante del cursor
"(a-z)CmdBorrado Cortar hacia el buffer de nombre (a-z)
"(a-z)CmdCopiar Copiar hacia el buffer de nombre (a-z)
"(a-z)CmdPegar Pegar desde el buffer de nombre (a-z)


Buscar y substituir
% Busca el caracter delimitador ( ) [ ] { } que balancea el actual
(Dentro de un entorno salta al delimitador inicial)
/ExpReg Busca hacia delante la expresi´n regular ExpReg
?ExpReg Busca hacia atr´s la expresi´n regular ExpReg
n Repite la ultima b´ squeda
N Repite la ultima b´ squeda en el sentido contrario
:s/txt/txt2 Substituye el texto txt por txt2 la primera vez que aparece en la linea
:s/txt/txt2 /g Substituye todas las apariciones de txt por txt2 en la linea
:α, βs/txt/txt2 /g Substituye en el rango de lineas [α, β]
Repetir y deshacer
. Repetir ultimo comando de actualizaci´n (Borrado/Inserci´n/Cambio)
u Deshacer ultimo comando de actualizaci´n
U Deshacer todos los cambios en la linea actual
Comandos del shell
:sh Invoca un nuevo shell. Al salir continua la edici´n

:!CmdShell Ejecuta un comando del sistema operativo
:r!CmdShell Ejecuta un comando del S.O. e inserta su salida en la posici´n del cursor

!!CmdShell Ejecuta un comando del S.O. e inserta su salida en la posici´n del cursor

:!! Repite el ultimo comando ejecutado en un shell
´
:α, β!Cmd Ejecuta un comando del S.O. sobre el rango de lineas [α, β]
Operaciones con ficheros
:rfichero Inserta el contenido de fichero debajo de la linea actual
:w Graba las modificaciones efectuadas en el fichero
:wfichero Escribe el texto actual en fichero (Sólo si no existía)
:w!fichero Escribe el texto actual en fichero
:α, βwfichero Escribe el rango de lineas en fichero
:efichero Descartar el texto actual y editar fichero
:n[ext] Editar el siguiente fichero de la lista de argumentos
:rew[ind] Volver al primer fichero de la lista
:q Salir (si no hay cambios)
:q! Salir (sin grabar)
:wq Grabar cambios y salir
:x Grabar cambios y salir
ZZ Grabar cambios y salir


Control de comandos
Esc Finalizar/Anular comando
^l Refresca la pantalla
αCmd Repite el comando α-veces
:α, βCmd Ejecuta el comando sobre el rango de lineas [α, β]
(α y β pueden ser n´ mero, comandos de movimiento, marcas,...)
$ indica la ultima linea del fichero
. indica la linea donde est´ el cursor
set opci´n Activa la opci´n de vi correspondiente
set noopci´n Desactiva la opci´n de vi correspondiente
all Muestra todas las opciones y sus valores
ai Modo de autoindentaci´n o
list Muestra caracteres de control
nu[mber] Muestra numeraci´n de lineas
vb Sustituye el pitido por una indicaci´n visual
wrap Mostrar partidas las lineas que no caben en la pantalla
...


saludos.

.Net: Cambiando la consulta utilizada por un gridview desde un parámetro URL


Para cambiar la consulta que utiliza un gridview utilizando un parámetro por la URL de una página deben agregar lo siguiente al tag correspondiente:

"
ProviderName="<%$ ConnectionStrings:ConexionBD.ProviderName %>" SelectCommand="SELECT APE_PAT ,APE_MAT ,NOMBRES ,RUT_NUM||'-'||RUT_DV FROM GLO_PROFESOR WHERE APE_PAT LIKE :p">





Luego prueben de nuevo su página cambiando el valor del parámetro:

//http://localhost:1057/Test.11.05.2007/ViewProfesores.aspx?p=R%

Saludos. Felipitux.

ORacle: cambiar de ubicación los control files


Muchas veces se ha tratado de modificar los control files a través del famoso comando ALTER SYSTEM SET .... etc. Y este ha dado más de algún problema. Aquí les adjunto un método que hasta ahora no me ha fallado ni siquiera en la versión 11g de esta plataforma.

oracle@felipitux:~> sqlplus "/as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on Wed Oct 31 10:50:15 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

- Se recrea el PFILE a partir del SPFILE

SQL> create pfile from spfile;

File created.

- Se baja la instancia

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

- Se mueven de ubicación los control files a las particiones deseadas

oracle@felipitux:~> mv /u02/oradata/newton/control02.ctl /u03/oradata/newton/
oracle@felipitux:~> mv /u02/oradata/newton/control03.ctl /u04/oradata/newton/

- Luego se busca el PFILE creado y se edita con las ubicaciones nuevas
- Generalmente este archivo se ubica en $ORACLE_HOME/dbs/init.ora

oracle@felipitux:~> cd /u01/app/oracle/product/11.1.0/db_1/dbs/
oracle@felipitux:/u01/app/oracle/product/11.1.0/db_1/dbs>vi initnewton.ora

- Luego de Editar levantamos la instancia en modo nomount indicando que vamos a utilizar un PFILE

oracle@felipitux:~> sqlplus "/as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on Wed Oct 31 10:53:06 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup nomount pfile=/u01/app/oracle/product/11.1.0/db_1/dbs/initnewton.ora;
ORACLE instance started.

Total System Global Area 439418880 bytes
Fixed Size 1300436 bytes
Variable Size 201328684 bytes
Database Buffers 230686720 bytes
Redo Buffers

- Luego recreamos el SPFILE a partir del PFILE modificado

SQL> create spfile from pfile;

File created.

- Luego realizamos los pasos para levantar la instancia completa y revisar las nuevas ubicaciones

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> show parameter control_files

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u02/oradata/newton/control01.
ctl, /u03/oradata/newton/contr
ol02.ctl, /u04/oradata/newton/
control03.ctl
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
oracle@felipitux:/u01/app/oracle/product/11.1.0/db_1/dbs>

Felipitux.