ORACLE: privilegios de un rol

Para saber que privilegios tiene asignado un determiando rol:

SELECT * FROM  ROLE_SYS_PRIVS ;
Para ver los roles asignado a un usuario:

SELECT * FROM USER_ROLE_PRIVS;

Easy2boot: Persistencia y cambiar tamaño de archivo loopback (casper-rw)

Supongamos que tenemos un USB con EASY2boot instalado y queremos tener persistencia.

1) Persistencia:

Creamos un archivo de persistencia, dos formas posibles:

a) Windows:

Usando RMPrepUSB: le damos al botón "Create ext2 FS", fijamos 4GB, de nombre de archivo casper-rw (o el nombre que queramos) y de nombre de volumen casper-rw 

b) Linux:

Nos vamos a la raiz del usb y ejecutamos como root
dd if=/dev/zero of=casper-rw bs=1M count=4096
mke2fs -m 0 -F casper-rw

2) Menú de Arranque:

Supongamos que tenemos una iso de ubuntu copiada en ( _ISO/LINUX/ubuntu-14.04.3-desktop-amd64.iso ), debemos crear un archivo llamado
_ISO/LINUX/ubuntu-14.04.3-desktop-amd64.mnu con el siguiente contenido:

# Make a ext2 file using RMPrepUSB in the root of the drive (i.e. File Name=Ubuntu1304-rw  Volume Name=casper-rw)
# Place this .mnu file and the Ubuntu ISO in (_ISO\xxx\MNU), e.g. \_ISO\MainMenu\MNU or \_ISO\Linux\MNU
# This menu will work even on an NTFS USB boot drive
# IMPORTANT: you MUST run WinContig (Ctrl+F2) before booting E2B.


iftitle [if exist $HOME$/ubuntu-14.04.3-desktop-amd64.iso] Ubuntu 14.04.3 PERSISTENT casper\n Boot using .mnu file with persistence

set ISO=$HOME$/ubuntu-14.04.3-desktop-amd64.iso
set PF=/casper-rw

if "%E2BDEV%"=="" set E2BDEV=hd0 && pause E2BDEV forced to hd0!
if exist CD echo WARNING: Cannot use partnew command! && pause && configfile (bd)/menu.lst
#enable parttype output
debug 1
# make empty table entry in 3rd position in ptn table
parttype (%E2BDEV%,2) | set check=
debug off
set check=%check:~-5,4%
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0 0 0
if not "%check%"=="0x00" echo WARNING: PTN TABLE 3 IS ALREADY IN USE - PERSISTENCE MAY NOT WORK! && pause
debug 1
if not exist %PF% echo WARNING: %PF% persistence file not found! && pause
errorcheck off
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0x0 %PF%
errorcheck on
#map ptn 4 to ISO
partnew (%E2BDEV%,3) 0x0 %ISO%
map %ISO% (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz.efi  boot=casper persistent noeject noprompt quiet splash --
initrd /casper/initrd.lz 

4) Defragmentar:

Si vamos usar Easy 2 boot  (E2B) el archivo debe de estar defragmentado, si el USB donde está el archivo casper-rw es NTFS debemos usar windows para defragmentarlo, concretamente:

Ejecutar en stick USB MAKE_THIS_DRIVE_CONTIGUOUS.cmd desde el raiz del USB o _ISO/docs/WINCONTIG/WinContig.exe o  _ISO/docs/WINCONTIG/MAKE_THIS_DRIVE_CONTIGUOUS.cmd

PD: también se podría usar linux con rsync pero es más rápido y menos engorroso usar las herramientas de defragmentación en windows.

5) Ampliar archivo de loopback desde linux:

El usb tiene que estar en formato NTFS, si está en Fat32 el tamaño máximo de archivo es de 4GB.

Supongamos que tenemos el archivo casper-rw con ext2 y 4 Gigas de espacio. Para ampliarlo otros 4 GB (8 GB en total).
Por si acaso algo sale mal primero haz una copia del archivo en tu disco duro u otro sitio.

dd if=/dev/zero of=casper-rw bs=1M count=4096 oflag=append conv=notrunc
e2fsck -f of=casper-rw
resize2fs casper-rw
e2fsck -f of=casper-rw

y volvemos a defragmentar (paso 4)

Enlaces:
http://www.easy2boot.com/

Opensuse 13.2: instalación de los drivers nvidia para gtx 770 (gk-104)

Para la instalación desde un sistema Opensuse 13.2 limpio haremos lo siguiente:

1) Instalación del repositorio
sudo zypper ar -f ftp://download.nvidia.com/opensuse/13.2/ nvidia
2) Instalación del paquete:
sudo zypper install x11-video-nvidiaG04
3) Añadir usuario a grupo de video
sudo usermod -a -G video dieguz2
4) Bloquear drivers nouveau. Vamos a
  Yast  / Cargador de Arranque / Kernel Parameters / Parámetro opctional para la línea de comandos del kernel /  , añadimos al final de lo que haya nomodeset nouveau.modeset=0
otra opción es :
echo "blacklist nouveau" >> /etc/modprobe.d/50-blacklist.conf
 5) Comprobar que todo esté ok
glxinfo | grep -i nvidia
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.4.0 NVIDIA 346.72
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL version string: 4.5.0 NVIDIA 346.72
OpenGL shading language version string: 4.50 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.1 NVIDIA 346.72

Opensuse 13.2 : Cambiar el swap. dracut Emergency shell, dev does not exist.

Al hacer algunos cambios en el ordenador el swap cambio de ubicación y de uuid, como consecuencia al arrancar el sistemas aparecía el prompt del dracut y siguiente mensaje
dracut-initqueue[299]: Warning: Could not boot.
dracut-initqueue[299]: Warning: /dev/disk/by-uuid/442317cd-e9ec-4001-90b0-8992008bd956 does not exist

GRUB2 arranque

Si usamos grub2, al arrancar, muestra el menú con las diferentes entradas, si pulsamos 'e', podemos editar los comandos. Hay algunas entradas como esta:
linux /boot/vmlinuz-3.16.6-2-desktop root=UUID=9e407f35-c659-44cd-85d4-e17b751da9a4 ro BOOT_IMAGE=/boot/x86_64/loader/linux ramdisk_size=512000 ramdisk_blocksize=4096 resume=/dev/sdb5 splash=silent quiet showopts
 Si queremos quitar el resume pondremos noresume, si queremos cambiar el dispositivo, resume=/dev/nuevodev  o resume=UUID=uuiddelnuevodispositivo

Sistema Arrancado

Si no arranca el sistema, arrancaremos con algún live CD. En cualquera de los dos casos haremos lo siguiente

Listar las particiones de nuestro sistema y su uuid. Las apuntamos.
# blkid
/dev/sda2: UUID="1E83-6E29" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2bb2aec0-85d7-471a-a84e-cb290ae86a2a"
/dev/sda5: LABEL="suse" UUID="0e2c2ce4-cebf-4d2e-8829-19abe7870f27" TYPE="ext4" PARTLABEL="primary" PARTUUID="20a3af3c-265d-421b-a050-60ca64c2ed60"
/dev/sdb5: UUID="935c8fdb-1bfc-480e-8e7a-628ac0919f47" TYPE="swap" PARTUUID="00025d31-05"
UEFI  => /dev/sda2
La raiz  => /dev/sda5
El swap  => /dev/sdb5


Hacer chroot del sistema, en dev/sda5 esta mi raiz de linux
# mount /dev/sda5 /mnt
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys

# chroot  /mnt
Con esto ya tendremos montado la raiz de nuestro antiguo sistema.

Activar el swap
# swapon /dev/sdb5
opcional :Si necesitamos formatearlo se va a generar un nuevo UUID, así que ojo si usamos UUID(mkswap /dev/sdb5)


GRUB sistema

revisamos /etc/default/grub

Cambiamos la linea:
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/disk/by-id/ata-ST3120026AS_3JT2HBTB-part5 splash=silent quiet showopts"

por un noresume
#GRUB_CMDLINE_LINUX_DEFAULT=" noresume splash=silent quiet showopts"

o por un resume de nuestro nuevo swap
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/sdb5

Actualizamos el grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg


Revisamos también un par de archivos relacionados
/etc/sysconfig/kernel
/etc/sysconfig/bootloader (mirar el DEFAULT APPEND)
Y finalmente
/sbin/mkinitrd
reiniciamos y debería estar todo correcto

Apache : calcular tamaño memoria por proceso de apache y optimizar el valor de Maxclients

Para calcular el tamaño que está ocupando en memoria apache y sus procesos podemos usar el siguiente script en bash:

 ps -ylC httpd | awk '{x += $8;y += 1} END  { print "Apache uso de memoria (MB): "x/1024;  print "Tamaño medio del proceso (MB): "x/((y-1)*1024);   print "Procesos apache: "y-1;   }'

Ejemplo de salida
Apache uso de memoria (MB): 1396.54
Tamaño medio del proceso (MB): 16.8257
Procesos apache: 83

Estos valores son útiles para optimizar el parámetro MaxClients en el fichero /etc/httpd/conf.d/mpm_prefork.conf ( Centos 7 ) .

Para calcular el Valor:

MaxClients = (Total RAM en el sistema - RAM reserva para el resto del sistema) /  Tamaño medio del proceso

Por ejemplo si tenemos una máquina con 16 GB, y queremos dedicar al apache el 80% de la memoria (3,2 GB) y el tamaño del proceso es de 17MB.

MaxClients = (16GB - 3.2 GB) * 1024 / 17MB =771,0118
o equivalentemente
MaxClients = ((16×1024) × 0,8) ÷ 17 = 771
SI queremos fijar la cantidad de memoria a un valor fijo (ej: 4GB) se hacen las mismas cuentas
MaxClients = (4×1024) ÷ 17 = 240

LDAP: modificar varios atributos con el mismo archivo ldif

Para modificar varios atributos de una entrada LDAP usando sólo un archivo ldif, el formato tiene que ser similar al siguiente:
dn: uidNumber=69696967,ou=Usuarios,dc=dieguz2,dc=es
changetype: modify
replace: shadowLastChange
shadowLastChange: 111111
-
replace: sn
sn: 222222
-
replace: email
email: dieguz2@no.existo.xy
Los atributos que se modifiquen tienen que ir separados por un guión.

Solaris:Tiempo epoch en solaris y linux

En linux para obtener la fecha podemos usar:
date +%s
En Solaris  no está definido el strftime por lo que tendremos que usar python, perl o una combinación de comandos, por ejemplo:

truss /usr/bin/date 2>&1 | grep ^time | cut -f 2 -d' '
perl -le 'print time()'
truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

Postgresql: tamaño de una tabla

Para obtener el tamaño de una tabla en postgres

select pg_size_pretty(pg_total_relation_size('TABLA'));

gnome 3.14: Asociar un tipo de archivo a una aplicación manualmente

Asociar archivo gráficamente:

Dos formas de hacerlo:
  • Seleccionamos el archivo, le damos al botón derecho, "Abrir Con", "Otra aplicación"
  • Botón derecho, propiedades, pestaña "Abrir con"
 Nos saldrá una lista de aplicaciones que pueden abrir el archivo.
Podemos pulsar en "Ver todas las aplicaciones" para ver un listado.

Asociar archivo manualmente.

A nivel de sistema el listado de asociaciones está aquí:
/usr/share/applications/defaults.list
A nivel de usuario:
 ~/.local/share/applications/mimeapps.list
Por ejemplo, Si queremos asociar sublimetext con el listado

1) Definimos el lanzador del sublime (si no lo tenemos definido ya)
vi ~/.local/share/applications/sublimeX.desktop

[Desktop Entry]
Name=Sublime Text Editor 3
Comment=Sublime Text Editor 3
Exec=sublime %F
MimeType=text/plain;
Terminal=false
Type=Application
Icon=/home/dieguz2/programas/sublime_text_3/Icon/256x256/sublime-text.png
Categories=GNOME;GTK;Utility;TextEditor;Development;
Name[es_ES]=Sublime Text 3
StartupNotify=true

[NewWindow Shortcut Group]
Name=New Editor Window
Exec=sublime --new-window
TargetEnvironment=Unity

2) Editamos vi ~/.local/share/applications/mimeapps.list y añadimos:
application/x-php=sublimeX.desktop

Java: instalación jdk 7 en opensuse 13.1

1) Descargar el archivo rpm de  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnes 

Por ejemplo:  jdk-7u45-linux-x64.rpm
wget http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.rpm

2) Instalar el RPM
rpm -ivh  jdk-7*-linux-x64.rpm
 Por defeto se instala en  /usr/java/jdk1.7.0_45/ creando también los enlaces

3) Actualización de la alternativas

update-alternatives --install "/usr/bin/java" "java" "/usr/java/latest/bin/java" 1
update-alternatives --set java /usr/java/latest/bin/java
update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/latest/bin/javac" 1
update-alternatives --set javac /usr/java/latest/bin/javac
4) Comprobar que todo está correcto
java -version

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

Extra:
Para ejecutar el plugin en el navegador debemos crear el siguiente enlace:
sudo ln -svf /usr/java/latest/jre/lib/amd64/libnpjp2.so /usr/lib64/browser-plugins/
o de forma alternativa :
plugin=$(rpm -ql $(rpm -qa | grep jdk) | grep libnpjp2.so) && ln -svf "$plugin" /usr/lib64/browser-plugins/

Extra:
Para configurar el javaws
    rutajws=$(rpm -ql $(rpm -qa | grep jdk) | grep /bin/javaws);
    # si salen varios rutajws hay que seleccionar 1 manualmente, por ejemplo:
    # rujajws=/usr/java/latest/bin/javaws
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "$rutajws" 1
    sudo update-alternatives --set javaws $rutajws