Archive for 2012

Restaurar los permisos inciales en CEntOS

miércoles, noviembre 28th, 2012

Cuando entregas la password de root un servidor de pre producción puede que se la entregues a un persona más acelerada e inquieta que no reflexiona tanto los comando como tu. En mi caso se hizo una ejecucion del siguiente comando

chmod 755 -R / carpeta

NOTA: El comando anterior es ERRONEO!!!

Uno de los problemas es que la persona no se dió cuenta de los persmisos que estaba cambiando, debido a que entre el / y la carpeta existió un espacio, lo que implicó que el cambio de permisos afectó desde la raíz hacia todas las subcarpetas (por el -R).

Cuando comenzaron a fallar las cosas, y al detectar que fue este comando aplicado el problema requerí reiniciar los permisos, se hizo de la siguiente forma

for p in $(rpm -qa); do rpm --setperms $p; done

Para el caso de haber cambiado los GUIDs tambien puede ser útil conocer (aun cuando este no lo aplique)

for u in $(rpm -qa); do rpm --setugids $u; done

Permiso para acceder a MySQL desde un servidor remoto

martes, noviembre 27th, 2012

Para acceder desde fuera de localhost como un usuario debe ejecutarse en MySQL

GRANT ALL PRIVILEGES ON *.* TO nombre_usuario@'%' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;

Pasos para backup en DB2

lunes, noviembre 26th, 2012

Aqui estan loss pasos para hacer un backup offline en DB2, entiendase offline como, ninguna aplicación esta conectada a la base de datos.

CONNECT TO $NOMBRE_BASE_DE_DATOS;
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
CONNECT RESET;
FORCE APPLICATIONS ALL;
DEACTIVATE DB $NOMBRE_BASE_DE_DATOS;
BACKUP DATABASE $NOMBRE_BASE_DE_DATOS to $RUTA  WITHOUT PROMPTING;
CONNECT TO $NOMBRE_BASE_DE_DATOS;
UNQUIESCE DATABASE;
ACTIVATE DB $NOMBRE_BASE_DE_DATOS;
CONNECT RESET;

En donde:
$NOMBRE_BASE_DE_DATOS es el nombre de la base de datos
$RUTA es la especificacion del directorio en donde se escribirá el backup, en donde el usuario de la base de datos debe tener permiso de escritura

impdp mapeando además el esquema

viernes, octubre 26th, 2012

Como complemento a algo escrito anteriormente conr especto al mapeo de tablespace, también se puede cambiar el esquema que viene por otro previamente configurado en la aplicación.

El comando (complemento del mostrado anteriormente)

 impdp user/password@sid directory=export dumpfile=backup1.dmp logfile=backup.log remap_tablespace=TS_SCHEMA_SDAT:SCHEMA_DAT,TS_SCHEMA_SIDX:SCHEMA_IND remap_schema=viejo_escquema:nuevo_esquema

Conectar Java (JDBC) a Oracle RAC

jueves, octubre 25th, 2012

Lo normal es que nuestras conexiones JDBC esten dadas a través del String URL de la siguiente forma

jdbc:oracle:thin:@HOST:1521:SID

En Oracle 10g me dio buenos resultados (ante el error ORA-12505)

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service)))

Pero en 11g la documentación dice

jdbc:oracle:thin:@HOST:1521/SID

Con lo que ha funcionado completamente (notese que antes del SID los dos puntos cambia por slash).

HTML y AMF

miércoles, octubre 24th, 2012

Desde hace un tiempo que se viene concretando la caída en el apoyo a la tecnología Adobe Flex, por otras emergentes a la mano de HTML 5, al punto que Adobe traspaso el dominio del codigo a la fundación Apache para que esta se encargara de la gestión de este código.

No deja ser interesante eso si, que muchas compañías invirtieron en Flex en algunos casos más de lo necesario para contar con esta tecnología de la mano de Adobe, y hoy estan pensando en mudarse a HTML 5, entre otros.

Las problematicas de aplicaciones que optaron por Webservices o JSON para la transmisión de información, no tendrán que reinventar la rueda para poder conectar sus aplicaciones HTML 5 a los ‘end points’ que utilizaron para Flex, los que si estan complicados son los que utilizaron BlazeDS para transmitir la información de retorno, esto porque el retorno de BlazeDS es en formato AMF, que optimiza la comunicación seriabilizando ésta en paquetes muchos mas pequeños que un Webservices o un JSON. La barrera de entrada para generar estas transformaciones entonces radicaban en reutilizar los ‘end points’ de AMF, lo que se logra a través de un Javascript que fue liberado hace bastante tiempo ya.

Puedes ver el javascript aqui y la página de su creador.