Tuesday, May 24, 2011

Auditing the Oracle DBMS for executed SQL statements


  • The issue is this:


We got ourselves into deep trouble in some data-migration project in which an application generates a very important report and makes insertions into several tables, in a  very ill designed database . The application in question is very bad written and documented as well for that matter (I'm talking about the first version of both database and application guys...please don't get upset =-D)  , and the people operating over it weren't sure about its information sources (as far as I understand it's no longer the case).

  • So what's the easiest way to visualize what tables and what fields are being affected and queried, without looking at the code, so we can migrate only the important data being affected and read by this application?


I proposed one approach for this issue: auditing the SQL statements executed by the application.

Let's follow the steps described in here (in a summarized fashion):

http://www.oracle-base.com/articles/10g/Auditing_10gR2.php

Log in as sysdba, with something like:

sqlplus "/ as sysdba"

from an account with proper credentials.

  1. Enable auditing

  2. Select an existing a user to audit: SQL-> AUDIT ALL BY ichbinrene BY access.


This audits everything including DDL (create table), DML (inserts, updates, deletes) and login/logoff events.

3. Querying the dba_audit_trail table, to monitor this user's activity.

Obviously, there's so much more to this, (for example: how the hell do I clear this audit log?) but given that is kind of late (and I'm kind of tired) , I'll refer the reader to the link provided above.

Cheers!

Sunday, May 22, 2011

Material para la sesión del Lunes 23 de Mayo / Instalación de Spago /No hay videos

Importante: Hasta abajo de este post aparece una opción que dice : "Read the rest of this entry >>" Clíck para ver la información completa.


  • Los archivos que se necesitarán para la sesión de mañana lunes se encuentran en el archivo comprimido al que dirige este link:


http://cursobi.esimecu.org/doc_clase_lunes_23.rar

Lo descomprimen y se darán cuenta que entre otros documentos se encuentra uno con nombre dw_pagila_all.sql. Este script sql contiene los datos necesarios para construir el datamart desde cero (con todas sus tablas de dimensiones y la tabla de hechos; esquema y datos).

  • Si hiciste la carga completa de manera exitosa de todas tus tablas de dimensiones y de la tabla de hechos, no necesitarás este archivo pero si no:



  1. Borra tu base de datos dw_pagila_tuNombre. Ya sabes, con "DROP DATABASE dw_pagila_tuNombre; "

  2. Inicializa una nueva base de datos con el mismo nombre: "CREATE DATABASE dw_pagila_tuNombre; "

  3. Conectate a esa nueva base de datos con " \c dw_pagila_tuNombre "

  4. Carga el esquema completo del datamart (obviamente ya lo colocaste en la carpeta de scripts por ejemplo en C:/Archivos de Programa/Postgresql/9.0/scripts) con " \i dw_pagila_all.sql "


Instalación de Spago

  1. Asegúrate de atender las indicaciones que se detallan en el post: http://reneromero.wordpress.com/2011/05/20/version-de-spago-diapositivas-dw-bi/.

  2. Para comprobar que tu variable de entorno JAVA_HOME apunta al lugar correcto , abre una consola de comandos (cmd) y escribe: "echo %JAVA_HOME% " , sin las comillas obviamente y debe de regresarte algo como "C:\Archivos de programa\Java\jdk1.6.0_25\" , si no, revisa la información a que hago referencia. Recuerda: debes tener instalado JAVA JDK.

  3. Una vez descomprimido el archivo que contiene la suite de Spago, posiciónate con tu consola de comandos (cmd) en ese directorio. Yo la descomprimí en una carpeta que se llama C:\spago por lo que únicamente escribo: " cd C:\spago ". Luego cámbiate a la carpeta dónde están los scripts de inicialización de Spago con " cd apache-tomcat-6.0.18/bin "

  4. Inicializa Spago (o el servidor de aplicaciones tomcat) con : "startup.bat" y espera unos segundos a que aparezca el mensaje:           INFO: Server startup in x ms

  5. Abre una ventana de tu explorador web preferido y escribe en la barra de direcciones:                       http://localhost:8080/SpagoBI, y te tiene que aparecer lo siguiente:

  6. Felicidades ya con esto y un poco de ánimo, podrás sacarle provecho a la información del datamart.

  7. Para detener el tomcat (el servidor de aplicaciones sobre el que se basa Spago) cuando sea necesario, ejecuta "shutdown.bat".

  8. También puedes darles doble click a los respectivos archivos de procesamiento por lotes (.bat) pero me gusta complicarte la vida....jejeje, nahh es que estoy acostumbrado a la consola, aunque sea en el mugroso windows  =-D.

  9. Ya que estamos en esto mueve el archivo : postgresql.jar  que venía con los archivos que te acabas de bajar,  al directorio lib dentro de tus archivos de instalación del Spago, en mi caso : C:\spago\apache-tomcat-6.0.18\lib, es el driver JDBC para postgresql.




No hay videos

Lo siento con esto de que se iba a acabar el mundo y siempre no, me la pase haciendo ejercicio todo el fin de semana, comiendo mis comidas favoritas, paseando, escuchando música electrónica y aprendiendo sobre una herramienta alternativa al Talend (terminé odiándolo) que se llama Pentaho PDI , y no me quedó tiempo para hacer los videos, quizá el próximo fín de semana. Sean felices y disfruten sus vidas =-D.

Friday, May 20, 2011

Diapostivas DW-BI / Despedida


  • Les adjunto las diapositivas que sirvieron de base para exponer los primeros temas del curso. Preparadas por el Ing. Roberto Fonseca


http://ifile.it/745wtql

(el archivo anterior estaba corrupto, este ya está bien)

  •  Ya no los veré en el curso, aunque regresaremos para una segunda ronda de cursos pero será para los que no alcanzaron cupo en esta. Me gustaría despedirme con la sensación de que aprendieron algo en la pequeña clase que dí de SQL, por lo que EL ARCHIVO ZIP ESTÁ PROTEGIDO CON UN PASSWORD, mismo que conseguirán si hacen un query en la base de datos PAGILA.


El password es la palabra resultante del siguiente query en la TABLA film:

Encuentra dentro de las películas aquellas descripciones (description) en dónde no aparece la palabra 'emotional' y que contienen la palabra 'woman' (ambas sin importar mayúsculas o minúsculas), que además pueden ser prestadas (rental_duration) entre 3 y 5 días (inclusive), ordena tus resultados descendentemente respecto a film_id. El password es la novena palabra del último resultado obtenido de esta forma (dentro del campo 'description').

  • Verificación : la palabra empieza con S (mayúscula)


Nota: el archivo anterior no abría en windows (lo comprimí desde Linux)->update: el archivo estaba corrupto, pero ahora lo comprimí desde windows con winrar. Ya varias personas encontraron el password!

El query sale en dos líneas, yo sé que pueden. Si se rinden....lástima, no hubo diapositivas =-D, bueno ya veremos.
Me voy con una muy buena impresión de los estudiantes de este curso, creo que son muy organizados y unidos; me dió mucho gusto haberlos conocido.

Aceptamos comentarios y sugerencias para mejorar el curso, si al final nos pueden decir qué les gustó y que no (honestamente), sería excelente.

Version de Spago - Diapositivas DW-BI

Ojo: Si no haz revisado el post anterior te invito a hacerlo, contiene información sobre la sesión de hoy.

  • La versión de spago que estaremos usando es esta:


http://forge.ow2.org/project/download.php?group_id=204&file_id=16354

Lo descomprimen y en el archivo README vienen las instrucciones de instalación:
       SpagoBI 2.8.0 Demo on Tomcat 6.0.18
===================================================

Requirements:
JDK 1.6 or greater
1 GB memory (suggested)
Open Office 2.x (for dossier documents)

To start:
Tomcat can be started by executing the following commands:
apache-tomcat-6.0.18\bin\startup.bat          (Windows)
apache-tomcat-6.0.18/bin/startup.sh           (Unix)
If you get an error such as "JAVA_HOME is not defined", verify that the JAVA_HOME environment variable
is defined and pointing to a JDK 1.6 local installation and that the PATH environment variable contains the java "bin" folder.
In order to execute the dossier example document, you need to close any Open Office applications, to define the OPENOFFICE_HOME
environment variable pointing to an Open Office 2.x local installation and to start the command
apache-tomcat-6.0.18\bin\OOStart.bat          (Windows)
apache-tomcat-6.0.18/bin/OOStart.sh           (Unix)

Notes: 1) In Unix system, if startup's files goes error give unix format to these files with the command dos2unix *.sh under bin folder.
2) In this demo, every applications' context are defined into context.xml file under the META-INF folder of each webapp.

After startup, open your browser at:
http://localhost:8080/SpagoBI

SpagoBI login page will appair. Log yourself as:
- biadmin/biadmin (technical user)
- biuser/biuser (business or functional user)
- bidemo/bidemo (showcase user)

El error más común es el que ahí se indica respecto a  la variable de entorno: JAVA_HOME, asegúrate de que esté apuntando a tu carpeta de binarios en la instalación de JAVA JDK, por ejemplo:  "C:\Archivos de Programa\Java\jdk1.6.0_25\"

Importante: tienes que tener java jdk en tu máquina, si no lo tienes, aquí lo puedes conseguir:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Le dás en "Download JDK"

  • Aquí hay información sobre como cambiar dicha variable de entorno en windows:


http://jesfre.blogspot.com/2010/03/comendando-con-java-3-la-variable.html

  • En este link hay información sobre como realizar la conexión a la base de datos desde spago:


http://spagobi.blogspot.com/2010/06/how-to-config-spagobi-with-oracle.html

  • Les recomiendo bajar el último driver jdbc para postgres, puede que lo ocupemos:


Pàgina oficial

http://jdbc.postgresql.org/download.html

Descarga

http://jdbc.postgresql.org/download/postgresql-9.0-801.jdbc4.jar

Las diapositivas las pongo al rato.

Thursday, May 19, 2011

Material para la sesión del viernes 20 de Mayo - UPIICSA


  • Mala suerte haber descubierto un bug en el talend 4.2 en medio de una clase, sería bueno por nuestra parte informar al equipo de talend sobre el mismo. Lo importante de esta sesión era tener una idea general de como manejar la herramienta. Les pongo  el link para que descarguen una versión anterior más estable si les apareció el infame bicho, les propongo la 4.1.1


http://sourceforge.net/projects/talend-studio/files/Talend%20Open%20Studio/

  • Si pueden, repliquen los mismos pasos de hoy en esa  versión anterior, y compártanme su experiencia (o su frustración si es el caso).


Al rato, pongo los scripts para llenar las tablas de dimensiones que se vieron hoy para los que experimentaron este trago amargo del software libre , o para los que se atoraron en alguna de ellas. Yo de momento, saldré a pasear para despejar la cabeza =->.

Ya casi iba saliendo y que suena mi thunderbird.... me llegó este mensaje de Abi:
Hola René =D
El esquema en el que las dimensiones estan llenas excepto dim_date y la tabla de hechos fact_payment se encuentra en el mismo lugar:


Este esquema contiene los datos que ocuparemos para llenar la tabla de hechos, de modo que pueden:

     Borrar la base de datos que crearon en clase

     Crearla nuevamente con el mismo nombre, es importante que lo hagan con el mismo nombre

     Cargar el nuevo esquema.

O si desean conservar su trabajo, pueden crear una nueva base de datos, pero deberan crear la conexión a esta nueva base desde talend, asegurandose de tener todas las dimensiones, excepto claro las que no se cargaron hoy, que son dim_date y fact_payment

Oh si y que no olviden llevar los archivos de texto que se subieron ayer.


Puedes comentarles que Talend es una plataforma aun inestable, que pueden probar con la versión anterior la 4.1

Que la bajen la descompriman y que intenten recrear lo que se hizo hoy en clase.



Gracias René por dejarme usar tu espacio.

Ojo: el archivo es el que se llama: dw_pagila_factdate.sql

Así que ya me puedo salir más tiempo. Si no saben de mí mañana, repórtenme por favor en locatel, jajaja =-D.

Wednesday, May 18, 2011

Material para la clase de Extracción-Transformación-Carga de datos con Talend

Nuevamente agradecemos tu participación y entusiasmo por el curso.

  • En la próxima sesión se abordará el tema "Extracción, Transformación y Carga de datos con Talend" que será impartido por nuestra compañera Abigail V.R., para la cual será indispensable que cuentes con el material disponible en este vínculo:


http://cursobi.esimecu.org/


Descarga todos los archivos que ahí se encuentran.




  • También será necesario que sigas los pasos siguientes:



  1. Crea una base de datos llamada dw_pagila_nombrepropio (reemplaza nombrepropio con tu nombre =-D).



  • Logeado en psql (SQL shell) ejecuta:


CREATE DATABASE dw_pagila_nombrepropio ;

2.   Carga el esquema que implementa el archivo : "dw_pagila_curso.sql" en esa nueva base de datos (de los archivos que bajaste desde el link: http://cursobi.esimecu.org/)

Pasos:

  • conéctate a dw_pagila_nombre propio desde psql con el comando :


\c dw_pagila_nombrepropio

  • carga el esquema:


Pasos:

mueve el archivo dw_pagila_curso.sql a la carpeta "C:/Archivos de Programa/Postgresql/9.0/scripts" o equivalente

y desde psql ejecuta:

\i dw_pagila_curso.sql

tal y como cargaste pagila.sql en las clases anteriores.

  • Si tienes dudas mándame un mensaje al correo que te proporcioné o búscame en el facebook: rene.romero.b. Si no haz podido superar dificultades técnicas en lo que a los temas anteriores se refiere te invito a consultarme por los medios descritos para que puedas ir al parejo en las próximas sesiones.



Monday, May 16, 2011

Curso SQL - Base de datos de ejemplo

Gracias por tu interés por la clase de SQL que tendremos mañana 17 de Mayo.

IMPORTANTE: Checa el blog el día de mañana a las 11:00 am para que descargues la presentación en power point con los ejercicios que vamos a hacer.

  • El archivo sql que contiene tanto la estructura del esquema como los datos de la base de datos de ejemplo que utilizaremos lo puedes descargar aquí:


https://docs.google.com/leaf?id=0ByKb6ihUNbCxOTk2OGY0OWMtY2NlNy00ODY2LTliYTgtNGU3ZjkyMjNmNmY3&hl=es&authkey=COLXv48K

  1. Si utilizas windows:



  •  Colócalo en C:/Archivos de Programa/Postgresql9.0/scripts



  • Abre : menú de inicio->Programas->Postgresql9.0-> SQLshell(psql)


en server es localhost (como ya está por defecto sólo dale enter)

en Database deja la que va por defecto  (postgres) y dale enter

el puerto queda igual->enter

lo mismo para username [postgres]

e ingresa la contraseña que le diste al usuario postgres cuando instalaste postgresql

  • Si no hay errores te aparecerá el prompt: postgres=#

  • ejecuta la siguientes instruccións:


create database pagila;

\c pagila

\i pagila.sql

Y si no hay mensajes de error ya tienes instalada la base de datos.

En caso de errores los vemos mañana en clase.

2. Si utilizas Linux

  • Asígnale un password al usuario postgres (fué creado cuando instalaste postgresql), si no lo haz hecho:


sudo passwd postgres

  • Logeate en una terminal como el usuario postgres


su - postgres

  • Inicia el servidor (creo que en ubuntu no es necesario si lo instalaste desde los repositorios oficiales-> yo uso opensuse)


pg_ctl start -l logfile

nota: es menos ele

  • habilitamos que nuestro usuario normal pueda ejecutar el shell psql:


estando logeado como postgres:

createuser elNombreDeMiUsuario -d -a -P

le ponemos el mismo usuario que usamos para nuestras sesiones de linux.

  • para instalar la base de datos lo único que tienes que hacer luego de que la descargaste (obviamente en algún directorio donde tu usuario normal tenga acceso de lectura)


abre otra terminal y trabajando con tu usuario normal ejecuta:

createdb pagila

psql pagila -f  /rutaEnDondeBajasteElArchivo/pagila.sql

  • y para entrar al sql shell utilizando la base de datos pagila


psql pagila

__________________________________________________________________________________________________________

  • La estructura de la base de datos está aquí (te sugiero que la imprimas)


http://ifile.it/1rx69ml/pagilaStructure.pdf

ubicación alternativa:

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0ByKb6ihUNbCxMzUyNTM5NmYtMTk2NC00YTZiLTgzYjEtMzdlZTIwNTFkYWVj&hl=es&authkey=CIGdqKQE


Sunday, May 8, 2011

Postgres-psql and Oracle sql*Plus from emacs


  • Just as a brief note, I found out about this nifty feature in emacs:the " sql-mode ". With it you can invoke your favorite sql interpreter in my case psql and sql*plus inside this great editing environment. What does it do? well it provides syntax highlighting and you can detach sql commands from their output.


Here's the emacs wiki entry for those who want to know more:

http://www.emacswiki.org/emacs/SqlMode

the emacs .el module can be downloaded from this link:

http://repo.or.cz/w/emacs.git/blob_plain/HEAD:/lisp/progmodes/sql.el

if you don't know how to install el emacs module here's an easy guide:

http://edward.oconnor.cx/2005/09/installing-elisp-files

once you have it installed, you can access the help file issuing the following emacs command:

M-x sql-help RET

Launching the psql interpreter takes only a:

M-x sql-postgres

and for sql*plus:

M-x sql-oracle

There are some customizations you can do, for example if you work with one database most of time, it can be set to be the default database among other parameters you can set.

Here's a great guide on how to get the best out of this module, but it's in german. Sadly I don't have the time to translate it, but you can always use the google-translate tool.

http://www.mi.hs-rm.de/~barth///dbs/vorl/DBSInfoXEmacs.pdf

[caption id="attachment_287" align="aligncenter" width="255" caption="emacs_sql_mode"][/caption]

Monday, May 2, 2011

Choosing a career path.


  • Today I was presented the opportunity to become a specialist in an area of my election (within a fixed set of related disciplines) . This is kind of a tough decision to make. I like almost every aspect of this career but there's so many people out there being regularly good at many things (including myself), that is almost inevitable to let on the fact that specializing on something gives you a good standpoint regarding competitiveness. The issue is that I'm not sure what kind of path to choose, and the whole specialization thing comes to me as kind of limiting in the sense that in my modest opinion, having an integral knowledge of most of the aspects related to one subject makes you more competent than those who are getting only one part of the picture. Kind of contradictory, isn't it?, I'll need to sleep on it, may the Lord shed some light on my tortured soul, =-D.

  • Our requirements engineering course goes on, I'm pretty excited about it. Sadly I don't have much time to summarize all those concepts, maybe the next weekend.