Para simular la función PIVOT (introducida en oracle 11), podemos simularla en Oracle 10g con lo siguiente
Partimos de la tabla con la estructura:
( category , year, valor )
Year es el valor que queremos pivotar y tiene valores entre 2003 y 2010. Estos valores habrá que ponerlos a mano
SELECT
category,
MAX(DECODE(year,'2003',valor,NULL)) a2003
,MAX(DECODE(year,'2004',valor,NULL)) a2004
,MAX(DECODE(year,'2005',valor,NULL)) a2005
,MAX(DECODE(year,'2006',valor,NULL)) a2006
,MAX(DECODE(year,'2007',valor,NULL)) a2007
,MAX(DECODE(year,'2008',valor,NULL)) a2008
,MAX(DECODE(year,'2009',valor,NULL)) a2009
,MAX(DECODE(year,'2010',valor,NULL)) a2010
FROM tabla
where year >= 2003
group by category;
obtendremos una tabla como
category,a2003,a2004,a2005,a2006,a2007,a2008,a2009,a2010
Montar imagen ISO en linux
Para montar un archivo iso podemos usar el siguiente comando.
1) Creamos un directorio donde se montará la ISO o bien usaremos uno existente:
mdkir /mnt/iso
2) Montamos la imagen
sudo mount -o loop "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso" -t iso9660 -o loop=/dev/loop0 /mnt/iso
en este caso estamos montando el archivo "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso", lleva comillas porque es un nombre con espacios. La imagen ISO se montará en el directorio /mnt/iso
El caso mas sencillo sería:
mount -o loop imagen.iso /directorio_donde_se_montara
1) Creamos un directorio donde se montará la ISO o bien usaremos uno existente:
mdkir /mnt/iso
2) Montamos la imagen
sudo mount -o loop "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso" -t iso9660 -o loop=/dev/loop0 /mnt/iso
en este caso estamos montando el archivo "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso", lleva comillas porque es un nombre con espacios. La imagen ISO se montará en el directorio /mnt/iso
El caso mas sencillo sería:
mount -o loop imagen.iso /directorio_donde_se_montara
BASH: script para subir archivos por FTP con bash
El siguiente script de shell , recibe un sólo argumento que es el nombre de un archivo. Si el archivo existe, intenta conectarse mediante ftp al servidor, y subirlo.
Es útil para tareas de automatización
#!/bin/bash
# Copyright (C) 2012 dieguz2
# License: GNU GPL v2
# http://dieguz2.blogspot.com/
# Script: subirftp.sh
# Este script recibe como argumento el nombre de un archivo y lo sube al servidor ftp
SERVER=192.168.1.1 #Ip del servidor
USER=ftpuser # usuario
PASSWD=password #password
#comprobar el numero de argumentos
if [ $# -ne 1 ]; then
echo "Argumento incorrectos:e ejecuta $0 archivoasubir"
exit 2;
fi
#comprobar si existe el archivo
if [ ! -e $1 ]; then
echo "El archivo $1 no existe"
exit 2;
fi
echo "Subiendo $1"
#automatización FTP
ftp -inv $SERVER << EOF
user $USER $PASSWD
binary
put $1
bye
EOF
exit 0;
Ubuntu : Activar Alt+tab para cambiar de ventana
Para activar Alt + Tabulador en Ubuntu 10.4 (puede desactivarse tras tocar compiz o desactivar efectos. Esta combinación de teclas sirve para cambiar entre ventanas.
1) Alt + F2 o desde un terminal lanzamos:
3) Ponemos el valor
1) Alt + F2 o desde un terminal lanzamos:
gconf-editor2) Buscamos la carpeta app/metacity/global_keybinding y editamos la clave cycle_windows haciendo doble click sobre ella.
3) Ponemos el valor
Tab
Oracle : tamaño de todas las tablas de la base de datos
Consulta para obtener el tamaño de todas las tablas de la Base de datos:
SELECT
owner propietario , table_name tabla , TRUNC(sum(bytes)/1024/1024) MB
FROM
(SELECT segment_name table_name, owner, bytes
FROM dba_segments
WHERE segment_type = 'TABLE'
UNION ALL
SELECT i.table_name, i.owner, s.bytes
FROM dba_indexes i, dba_segments s
WHERE s.segment_name = i.index_name
AND s.owner = i.owner
AND s.segment_type = 'INDEX'
UNION ALL
SELECT l.table_name, l.owner, s.bytes
FROM dba_lobs l, dba_segments s
WHERE s.segment_name = l.segment_name
AND s.owner = l.owner
AND s.segment_type = 'LOBSEGMENT'
UNION ALL
SELECT l.table_name, l.owner, s.bytes
FROM dba_lobs l, dba_segments s
WHERE s.segment_name = l.index_name
AND s.owner = l.owner
AND s.segment_type = 'LOBINDEX')
--WHERE owner in UPPER('&owner')
GROUP BY table_name, owner
HAVING SUM(bytes)/1024/1024 > 10 /* Ignore really small tables */
ORDER BY SUM(bytes) desc
;
Oracle Listener poison : solución sin rac
Para solucionar la vulnerabilidad (sin aplicar parche) en un oracle en configuración sin rac, hay que al listener.ora ($ORACLE_HOME/network/admin/listener.ora) la siguiente linea:
DYNAMIC_REGISTRATION_LISTENER = off
Más información en:
http://seclists.org/fulldisclosure/2012/Apr/204
https://forums.oracle.com/forums/thread.jspa?threadID=2381756&start=15&tstart=0
http://unaaldia.hispasec.com/2012/04/oracle-tns-poison-solucionada-4-anos.html
comtrend hg536+: Script para cambiar de ip sin resetear el router en python
Esta es la versión actualizada del script de este post comtrend hg536+: cambiar de ip sin resetear el router, script en python. La principal diferencia es que nos muestra la ip pública que teníamos antes de realizar el reseteo y después
El script usa lo mismo que lo explicado en Comtrend hg536+: cambiar de ip sin resetear el router.
Podremos ejecutarlo siempre y cuando tengamos instalado python en nuestro SO (linux, windows ...). Podemos crear el archivo con el comando
El script es el siguiente:
El script usa lo mismo que lo explicado en Comtrend hg536+: cambiar de ip sin resetear el router.
Podremos ejecutarlo siempre y cuando tengamos instalado python en nuestro SO (linux, windows ...). Podemos crear el archivo con el comando
cat > ~/bin/resetear.py
chmod u+x ~/bin/resetear.py
El script es el siguiente:
#!/usr/bin/python
#
# Copyright (C) 2012 dieguz2
# License: GNU GPL v2
# http://dieguz2.blogspot.com/
# Script for comtrend hg536+ ( firmware A101-302JAZ-C03_R21.A2pB021g.d15h )
# This scripts connect to router and reset ip in 40s. In this example use default values for jazztel .
import getpass
import sys
import telnetlib
import time
import urllib2
import re
HOST = "192.168.1.1"
LOGIN = "admin"
PASS = "admin"
PROMPT = " -> "
WAITTIME = 40 # Number of second
CONNECTIONNAME = "0.8.35 2" # to see your connections, manually connect to router (telnet 192.168.1.1) and use "wan show" .You should choose you PPPoE connection Use a combination of VCC + Con Id. For example ""0.8.35 2""
def resetear():
tnt = telnetlib.Telnet(HOST)
tnt.read_until("Login: ")
tnt.write(LOGIN + "\n")
tnt.read_until("Password: ")
tnt.write(PASS + "\n")
tnt.read_until(PROMPT)
tnt.write("ppp config " + CONNECTIONNAME + " down\n")
time.sleep(3)
tnt.write("\n")
tnt.write("ppp config " + CONNECTIONNAME + " up\n")
time.sleep(WAITTIME)
tnt.read_until(PROMPT)
tnt.write("ppp config " + CONNECTIONNAME + " up\n")
tnt.write("\n")
tnt.read_until(PROMPT)
tnt.write("13\n") # press option to exit
tnt.close()
return
def getip():
try:
ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}' ,urllib2.urlopen('http://checkip.dyndns.org/').read())
salida = ip[0];
except:
salida = '(Error al obtener la ip)'
return salida
#programa
ip_current = getip()
print 'Current ip -> ' + ip_current
resetear()
ip_new = getip()
print 'New ip -----> ' + ip_new
Sublime text 2 : multiples ventanas
En versiones antiguas de algunas distribuciones como Ubuntu 10.4, sublime text abre múltiples instancias o múltiples ventanas cada vez que hacemos click en algún documento.
Es un problema de la versión de libgio que viene en esa distribución (es < 2.26). Para solucionarlo vamos a bajar una versión actualizada de libgio, la copiaremos en un directorio y haremos que sublime cargue dicha librería antes de empezar.
Realizamos lo siguiente para compilar nuestra propia versión de la librería
A diferencia del post original $* va entrecomillado porque si no lo está no se abren correctamente rutas y archivos con espacios.
Fuente: http://mashingwachine.tumblr.com/post/4414279415/sublime-text-2-on-an-old-ubuntu-and-libgio-2-26
Es un problema de la versión de libgio que viene en esa distribución (es < 2.26). Para solucionarlo vamos a bajar una versión actualizada de libgio, la copiaremos en un directorio y haremos que sublime cargue dicha librería antes de empezar.
Realizamos lo siguiente para compilar nuestra propia versión de la librería
git clone git://git.gnome.org/glibAhora creamos un ejecutable (en nuestro home/bin)que cargue la librería antes de ejecutar sublime. Usamos cualquier editor (ej: vi ~/bin/sublime2 ). Y añadimos lo siguiente:
cd glib
git checkout 2.26.1
./autogen.sh --prefix=/opt/lib/glib2.26 make
sudo make install
#!/bin/bash LD_LIBRARY_PATH=/opt/lib/glib2.26/lib:$LD_LIBRARY_PATH /path_sublime/sublime_text "$*"Le damos permisos de ejecución:
chmod +x ~/bin/stA partir de ahora los archivos se nos abrirán en una sola instancia.
A diferencia del post original $* va entrecomillado porque si no lo está no se abren correctamente rutas y archivos con espacios.
Fuente: http://mashingwachine.tumblr.com/post/4414279415/sublime-text-2-on-an-old-ubuntu-and-libgio-2-26
Postgres : Ejecutar script en psql sin password
Cuando ejecutamos un script en psql no hay opciones para pasar el password como parámetro. PostgreSQL ofrece dos mecanismos para que no pregunte la constraseña. Esto es útil cuando vamos a ejecutar algún tipo de script.
FUENTE:
http://www.postgresql.org/docs/9.1/interactive/libpq-envars.html
http://www.postgresql.org/docs/9.1/interactive/libpq-pgpass.html
- Variable. La primera opción es definir la variable PGPASSWORD en nuestro script. Podemos poner
export PGPASSWORD=miContraseña - Archivo. Podemos crear el archivo ~/.pgpass (está el home), hay que darle los permisos 600 (
chmod 600 ~/.pgpass) . Si tiene otros permisos postgreSQL lo ignora.El formato del archivo es el siguiente:
hostname:port:database:username:password
Podemos utilizar el * como comodín en lugar de alguna de las partes
Podemos cambiar la ruta del archivo cambiando la variablePGPASSFILEpara que apunte a otra ruta
FUENTE:
http://www.postgresql.org/docs/9.1/interactive/libpq-envars.html
http://www.postgresql.org/docs/9.1/interactive/libpq-pgpass.html
Añadir texto al comienzo de un archivo
Para añadir texto al inicio de un archivo de texto podemos generar un archivo nuevo con el texto
Es importante indicar que - indica a cat que use la entrada estándar.
También podemos concatenar dos archivos también con cat
En este último ejemplo se añade cuerpo.txt al final de cabecera.txt
echo "texto al comienzo"| cat - cuerpo.txt > salida.txt
Es importante indicar que - indica a cat que use la entrada estándar.
También podemos concatenar dos archivos también con cat
cat cabecera.txt cuerpo.txt > salida.txtPara añadir texto al final usamos >>
cat cuerpo.txt >> cabecera.txt
En este último ejemplo se añade cuerpo.txt al final de cabecera.txt
Suscribirse a:
Entradas (Atom)
-
Está es un pequeño tutorial / guia que explica cómo crear un applet en Netbeans ( corriendo en Linux Opensuse). Para programar un applet en ...
-
Para poder insertar saltos de línea con el comando echo en linux se usa la siguiente sintaxis : echo -e "\n linea 1 \n linea 2 \n...
-
Para obtener una lista con los objetos bloqueados ejecucutados: select substr(a.os_user_name,1,8) "OS User" , substr(b.object_na...