viernes, 20 de junio de 2014

Conversión de archivos PDF y WORD a fragmentos en TXT en Java

Este mes estuve trabajando en una librería customizada en java la cual debía convertir ciertos documentos, algunos con extensión PDF y otros en WORD (.doc), en archivos de texto plano TXT, aparte de esta tarea se requería fragmentar los archivos TXT según ciertos indicadores de corte (TOKENS).



Todo este proceso aparentemente sin sentido era necesario pues existe una arquitectura de búsqueda de IBM denominada Content Analytics que realiza la tarea de una manera mas óptima y para lo cual requiere la fragmentación.



La parte de extracción de texto plano ,la desarrolle basandome en las siguientes API's: para PDF use iText (anteriormente denominada lowagie) y para WORD use Apache POI. Añadí finalmente un archivo de configuración (config.properties) en donde se especifica una ruta de entrada para PDF, una ruta de entrada para WORD y una sola ruta de exportación para ambos, aparte también añadí un vector de tokens para PDF separado por comas y otro vector de tokens para WORD, también separado por comas.Existen en la solución dos archivos demo.java uno es para PDF y otro es para WORD. Espero les sirva, les dejo aquí el link del drive, hasta la próxima!


lunes, 2 de junio de 2014

Eliminar sesiones bloqueantes en Oracle

En estos días tuve que lidiar con ciertos procesos en lote que al fallar causaban bloqueos en tiempo de ejecución debido a la falta de un commit o rollback dependiendo del punto de vista claro. A continuación dejo un script que me fue útil para revertir tales bloqueos teniendo en cuenta que se conoce a priori el nombre de la tabla bloqueada involucrada.




           
--1. Obtener el o los ID's del objeto tabla probablemente bloqueado:

SELECT object_id FROM dba_objects WHERE object_name='USUARIO';

--2. Obtener los valores SID para el o los ID's recuperados en el paso 1:

SELECT sid FROM v$lock WHERE id1 IN (74590,75456) 

--3. Obtener los valores de sesion usando los SID's recuperados en el paso 2:

SELECT sid, serial# from v$session where sid in (67,72,131,132,198,11)

--4. Matar sesiones bloqueantes en la tabla usando pares 'sid,serial#' del paso 3:

ALTER SYSTEM KILL SESSION '11,1202'
ALTER SYSTEM KILL SESSION '67,2405'
ALTER SYSTEM KILL SESSION '72,972'
ALTER SYSTEM KILL SESSION '131,1847'
ALTER SYSTEM KILL SESSION '132,1598'
ALTER SYSTEM KILL SESSION '198,16041'


Espero les sea de utilidad.