sábado, 28 de marzo de 2009

Desktop de Linux ó Solaris en mi PC Windows

Siempre andamos buscando la mejor forma de administrar nuestros sistemas Linux ó Unix.
La comodidad que brinda el sistema gráfico de un sistema operativo, lo hace estar más al alcance de todos los usuarios, que no son de la vieja escuela de línea de comandos, además, existen varios programas que requieren el ambiente gráfico para poderse instalar, tal es el caso de las herramientas de Oracle, RDBMS, Clusterware, Application Server, etc.

En muchos servidores X en el mercado, pero la mayoría aportan más de lo que necesitamos al comienzo y su precio puede ser excesivo.

Nx ha sido el mejor server X que he visto en los últimos 2 años.
Dentro de sus características podemos encontrar:
  1. Fácil instalación
  2. Conexión por medio de SSH ( Secure Shell )
  3. Puede utilizarse además para conectarse a máquinas con Windows con SSH Server instalado
  4. Lo he probado con Red Hat 3/4/5, Centos 4/5, Oracle Enterprise Linux, Suse y ahora tiene una versión para Solaris.!!!
  5. Es completamente gratis.
Para su implementación en Linux, requieres instalar los siguiente paquetes en orden, con el usuario root:
  1. NxClient
  2. NxServer
  3. NxNode
En tu máquina windows, sólo requieres instalar el client para Windows.
Puedes obtener los "rpm" del sitio: http://www.nomachine.com

lunes, 23 de marzo de 2009

Comó reasignar el password a root en LINUX en caso de olvido

Cuando el arranque es: GRUB

Siga los siguiente pasos para proceder a reasignar el password del usuario root en un servidor LINUX, utilizando el GRUB a la hora de arranque:

1. Eliga la versión de kernel que corresponde a su instalación
2. Presione la tecla " e " para editar la entrada de arranque del sistema.
3. Seleccione la linea que inicia con la palabra kernel, generalmente la segunda línea
4. Presione la tecla e para editar la entrada
5. Agregue la letra " S " o la palabra " Single " al final de la línea
6. Presione la tacla ENTER
7. Ahora presione la tecla b para arrancar el kernel de Linux e ingresar en modo monousuario
8. Realice las siguiente acciones:

  • Monte la siguientes particiones:
  • # mount -t proc proc /proc
  • # mount -o remount,rw /
  • Cambie el password el usuario root:
  • # passwd
  • Reinicie el sistema:
  • # sync
  • # reboot

Cuando el arranque es: LILO

Cuando el arranque de LILO aparezca agregue la palabra "single" y presione la tecla [ENTER]:
Boot: linux single

Cuando aparezca el prompt de sistema operativo " # ", digite el comando " password " y proceda a restablecer el password del usuario root:
  • # passwd
Finalmente reinicie el servidor o la máquina y listo:
  • # sync
  • # reboot

viernes, 20 de marzo de 2009

Creando usuario común en 10g para generar un export

Para que no tengas problemas a la hora de generar un export convencional o un expdump en la base de datos 10g sigue las siguientes instrucciones.

  • create user respaldo identified by respaldo;
  • grant create session to respaldo;
  • grant exp_full_database to respaldo;
  • grant imp_full_database to respaldo;
  • grant execute on sys.dbms_defer_import_internal to respaldo;
  • grant execute on sys.dbms_export_extension to respaldo;
Ahora sí ya puedes generar el export sin "warnings" !!.

jueves, 5 de marzo de 2009

Problemas al instalar el Jdev 9.0.4 ( 10gR1 ) y 10.1.3.4 Jdev 10g en Linux 128 MB RAM requerido

A la hora de instalar el Oracle Collaboration Suite o el JDeveloper en una máquina Linux, puede ser que tengan problemas en el inicio de verificación de dependencias en el OUI ( Oracle Universal Installer ), indicándoles que deben tener al menos 128M de RAM para realizar la instalación. Si revisan con el utilitario "vmstat" o con el popular "top", puede que si tengan más de la cantidad de memoria disponible, pero aún asi no les deja hacer la instalación.

Aquí les va el tip:
"Todo se debe a un bug documentado en el DOC id. 294586.1 del 16 de Feb 2007. Si hacen la instalación con "runInstaller -ignorePreReq" no funciona.

Deben bajar el patch 3656396 y deben copiar el archivo MemorySizeQuery.jar al directorio en donde se desempacó el archivo ".zip", /Disk1/stage/Queries/MemorySizeQuery/
, donde este el archivo con el mismo nombre.
Vuelven a correr el "runInstaller" y asunto resuelto.


Crear un script dinámico que recorra todos los dblink definidos en la base de datos

En ocasiones se hace necesario ejecutar un script en varias instancias de base de datos.
Este ejemplo, te permite hacerlo.
Debes tener privilegios de "select" sobre la tabla del diccionario "ALL_DB_LINKS" en el esquema que deseas utilizar. Las líneas "PUT_LINE", es un parche, para evitar error de "overflow", ya que le máximo disponible para despliegue son 255 caracteres por línea.


declare
cursor liga is
select '@'||db_link from all_db_links;
enlace varchar2(30);
cmd varchar2(1000);

begin

open liga;
loop
fetch liga into enlace;
exit when liga%NOTFOUND;
DBMS_OUTPUT.ENABLE (100000);
cmd := 'update pvcreditos
set saldo=0, tstamp=sysdate
where no_transa_credito in ( select no_transa_credito
from pvforma_pago'||enlace|| ' where no_transa_credito in ( select a.no_transa_credito from pvhcreditos a, pvcreditos b where a.no_fisico=b.no_fisico and a.no_transa_credito=b.no_transa_credito and a.saldo <> b.saldo and a.fecha <='||'''31-DEC-04'''||' and a.descripcion=b.descripcion and a.cajero=b.cajero))';

DBMS_OUTPUT.PUT_LINE(substr(cmd,1,255));
DBMS_OUTPUT.PUT_LINE(substr(cmd,256,400));
execute immediate cmd;
end loop;
close liga;
end;
/

lunes, 2 de marzo de 2009

Diferencia en el uso de la función count(*) y count(nombre_columna)



En muchas ocasiones, no tenemos claro, como trabaja algunas de las más comunes funciones de Oracle SQL*Plus.

Uno de esos casos específicos, es cuando utilizamos la función “count”. Esta función trabaja de manera distinta cuando se aplica usando el comodín “*” o el nombre de la columna a ser sumada.

Veamos el siguiente ejemplo práctico.

Tenemos la tabla t1 con los siguiente registros. Observe que en la cuarta tupla, “Raul Ballestero” no tiene profesión asignada en la columna respectiva.

SQL> select * from t1;



Ejemplos de aplicación:

SQL> select count(*) from t1;

COUNT(*)
----------
4

SQL> select count(profesion) from t1;

COUNT(PROFESION)
----------------
3

SQL> select count(rowid) from t1;

COUNT(ROWID)
------------
4

Hasta aquí no hemos visto nada nuevo. Pero que sucede si incluimos un registro con valores nulos?.

SQL> insert into t1 values('&nombre','&profesion');
Enter value for nombre:
Enter value for profesion:
old 1: insert into t1 values('&nombre','&profesion')
new 1: insert into t1 values('','')

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;



SQL> select count(*) from t1;

COUNT(*)
----------
5

SQL> select count(rowid) from t1;

COUNT(ROWID)
------------
5

SQL> select count(nombre) from t1;

COUNT(NOMBRE)
-------------
4

Como pueden observar hacer el conteo utilizando el asterisco o la seudo-columna “rowid” en conjunto con la función “count”, toma en consideración el registro nulo incluido. Si lo hacemos haciendo referencia con el nombre de la columna, no lo toma en cuenta.