martes, 3 de marzo de 2015

Conteo de Registros por particiones

Hoy me pidieron que realice un conteo de Registros para una particion... y lo primero que se me ocurrio fue lo siguiente :


declare
  i number; x number ; y number ; 
  myvar number ;
begin 
    i:= 0 ; x:=20131106 ; y:=20131115 ;
    for i in x..y loop
        execute immediate 'select count(*) from DTL.DATA_SVC_FCT subpartition (P' || i || ')' into myvar;
        dbms_output.put_line  ( 'P'|| i ||' : ' || myvar) ;
    end loop;

end;


donde DTL.DATA_SVC_FCT es el segmento particionado :

:D

jueves, 6 de noviembre de 2014

Ayuda en version de una Base de Datos Oracle

Para ser un buen administrador de Bases de Datos, se debe conocer todos los tips que la literatura nos brinda. Una de ellas son los manuales técnicos y gracias a la gente de muchas editoras de libros digitales tenemos muchos. Un día me preguntaron como saber la version de Oracle se estaba usando en una empresa de telecomunaciones. Les indique que veriquen los instaladores :P, pero no sabian quien los había instalado. 

Pero bueno, para todo hay solución. La respuesta, Oracle usa vistas del sistema q nos dá a los administradores de Bases de Datos (o bueno a los que accedemos a bases de datos Oracle también) y ahí entra en accion  SYS.V_$VERSION.

Esta vista da información sobre la instalación que actualmente corre sobre su sistema de Bases de Datos Oracle. Lo único que se necesita es tener acceso a una base de datos (TNS name, user password) y un cliente de bases de datos (slq* plus, toad, sqldeveloper) y realizar un 

select * from SYS.V_$VERSION.

Bueno, no creo q sea problema publicar la version de base de datos que actualemente uso, pero les adjunto la información para que tengan conocimiento lo que se usa en un ambiente de producción

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
"CORE 11.2.0.2.0 Production"

Experiencia con Tablas Indexadas

Bueno, hace ya 10 meses comencé trabajando como Analista en Inteligencia de Negocios (Business Intelligence o BI) ,y parte del trabajo es realizar los ETL (Extraction Transform Load) que practicamente lo realizamos en paquetes PL/SQL de Oracle. Y como se maneja mucha información (millones de registros) por el tráfico que se analiza ( ya que trabajo con una telefónica) una de las tareas era integrar los procesos de un area fuera de BI. Bueno, se integraron los procesos PL/SQL y se mejoraron los paquetes, pero tal fue mi sorpresa que los queries tardaban una eternidad.

Empece a realizar un traceo de estos, llegando a observar que la mayor carga se realizada en los queries anidados. Un query anidado es una consulta q esta dentro de otra consulta pongo un ejemplo

SELECT columna1, (select otra_columna from una_tabla where t1.llave = llave ) columna_2 FROM tabla_principal t1

aqui, obtengo los valores de columna_2 por medio de una consulta basado en un criterio de búsqueda.

Bueno, mi problema radicó que cuando se realizaban consultas desde mi tabla_principal para obtener los valores de columna_2, tardaba como 20 minutos con solo 100 mil registros (claro obviamente el ejemplo anterior es muy simple a lo que realmente estaba realizando, pero se puede llegar a utilizar ese tiempo) . Lo primero que hice fue identificar el porqué.

Revisando la estructura de una_tabla, verifiqué que tenia campos indexados, y las búsquedas las hacia por un campo que no estaba indexado. Y justo ese día estaba conversando sobre optimización (SQL tunning) de consultas SQL con un colega, y le recomendé utilizar indexación por el motivo del uso de arboles B en Oracle para la inserción de registros. Y bueno, use esos conceptos de indexación de en la tabla sobre el campo que se utiliza en la búsqueda. Tal fue mi sorpresa , que cuando ejecuté nuevamente mis procesos, el ETL tardo absurdamente 3 segundos para los 100 mil registros.

Muchas veces obviamos los conceptos que la literatura nos dá para poder aplicarlos, gracias a la conversacion de SQL Tunning y a mi previa lectura de un buen manual de Oracle pude aplicar este concepto.

martes, 21 de octubre de 2008

My Experience with NetBeans IDE

Hi there, I'm going to tell you about my short ( but happy) experience with NetBeans IDE.
I knew NetBeans IDE when I was at University, in this moment I have used JCreator, but it was a great change, because I didn't know that that we had a Java Graphic Form Designer.
From this moment every day, every project, every code line I used NetBeans IDE.

Then we had the plugins, I became so happy with JME and JasperReport plugin, then the UML designer, and Web Designer with JSP.... these plugins are the most useful for me I worked with Reports, Software Architecture and J2ME projects and they were so useful to me.

I 'm in love with NetBeans, so I trusted in him to develop my final grade project. I developed a CAD Software to design cloth. I worked with Java2D.

But not everything that glitters is not gold, I have many problems for example with my components instalation. When I design a component I always had to search at websites or ask bloggers how to do it, I always had this problem, but now I m teaching to my colleagues how to do it and don't make a big problem with this.

All this experience was only windows, after Linux (oh! Torvals), My first Experience with Linux was with Debian, I have no idea, but with practice I will became a master (well, I think I am)
I used all my experience with NetBeans under Linux, and Im glad with Linux and Netbeans, because they behaved well with me and with LogIS my next Project.

And after all this became PHP, I can't believe it !!! A complete Framework.. !! Am I dreaming ?? No way !! It is real !! It is real!!..
I have had experience in PHP programming under Eclipse, I will never left Eclipse, but Netbeans made many dreams come true with this plugin, I m happy with that.

I really love NetBeans, all my Java projects, web projects, and UML design I developed in it and I always will trust in it.