Javier Morales llevo más de 15 años dedicados a formación y consultoría senior de entornos Oracle.
También le apasiona el buen cine y la buena música. Viaja mucho menos de lo que me gustaría, pero a cambio intento descubrir a fondo los lugares interesantes que me rodean.
Para Fernando, por la que le espera. 😛 La siguiente consulta se ha cancelado tras 5 horas y 11 minutos en ejecutarse.SELECT count(CLI.COD_ABONADO) FROM BITOWN02.TM_C_CLIENTES_SAC_02 CLI, BITOWN02.TE_ERRORES_BIT_02 TE WHERE CLI.ROWID = TE.FILA_ID (+) AND ‘TM_C_CLIENTES_SAC_02’ = TE.TABLA_DE (+) AND TE.ERROR_ID IS NULL AND CLI.COD_ABONADO NOT IN ( SELECT CU.ABONADO_id FROM BITOWN03.BS_C_CONTRATOS_BIT_03 CONT, BITOWN03.BS_C_CUENTAS_BIT_03 CU WHERE CU.CUENTA_ID=CONT.CUENTA_ID );…
Para Manel Moreno, que no me ha dado ningún beso por ésto. 😛 La siguiente consulta tardaba 11 horas en ejecutarse.SELECT DISTINCT A.NODO_ID, B.NODO_B_ID NODO_EQ1FROM BITOWN03.BS_R_NODOS_BIT_03 A, BITOWN03.RE_R_CONEX_EXTERNAS_BIT_03 B, BITOWN03.TMP_NODOS_OK_EST_BIT_03 CWHERE A.NODO_ID = B.NODO_A_ID AND B.NODO_B_ID = C.NODO_ID; con el siguiente plan de ejecución:SQL> @c:oracleora92rdbmsadminutlxpls PLAN_TABLE_OUTPUT————————————————————————————- ———————————————————————————–| Id | Operation | Name | Rows | Bytes | Cost |———————————————————————————–| 0 | SELECT…
Para Cristina Álvarez, quien confió en mi desde el primer momento y lo disimuló con toda su alma. 🙂 La siguiente consulta ha sido cancelada tras una hora y veinte minutos de ejecución. SELECT N2.ENTIDAD_ID, CLI.rowid row_id, cli.*, MAX(REL.ABONADO_PADRE_ID) OVER (PARTITION BY ABONADO_HIJO_ID) REL_ABONADO_PADRE_IDFROM BITOWN03.BS_V_MGEC_NODO_BIT_03 N1, BITOWN03.BS_V_MGEC_NODO_BIT_03 N2, BITOWN03.BS_V_MGEC_REL_NODOS_BIT_03 RN, BITOWN02.TM_C_CLIENTES_SAC_02 CLI, BITOWN03.RE_C_RELACIONES_ABONADO_BIT_03…
He escrito anteriormente en este artículo sobre el uso de NOT IN y NOT EXISTS, mencionando que se trataba de cláusulas diferentes y que, por lo tanto, podían generar diferentes resultados. También mencioné que en su forma natural, IN y EXISTS suponen semánticamente operaciones distintas con diferentes vías de ejecución la mayoría de los casos,…
Uno de los principales problemas al desarrollar con PL/SQL sobre bases de datos es el uso de una buena herramienta de gestión del código. Los DBA’s estamos bastante acostumbrados a trabajar con SQL*Plus, la aplicación consola en modo texto, donde tecleamos con más o menos acierto el código SQL que necesitamos para ejecutar comandos de…
(Continua a partir de parte I). Recientemente he estado hablando con gente interesada en la gestión de contenidos de documentos y, en general, la mayoría utiliza formatos PDF. El anterior artículo se basaba únicamente en documentos word, y he creído interesante hacer un ejemplo de como Intermedia realiza la indexación de documentos word y PDF…
En muchas ocasiones recurro a generar scripts a partir de consultas.Ejecuto en SQL*Plus algo parecido a: SQL> select ‘alter package ‘||owner||’.’||object_name||’ compile;’ sentencia 2> from dba_objects where status=’INVALID’ and object_type =’PACKAGE BODY’; SENTENCIA——————————————————————alter package USUARIO.MAP02_CUACON02 compile;alter package USUARIO.MAP01_CUACON03 compile;alter package USUARIO.MAP01_FLUXHISTO03_CI compile;alter package USUARIO.MAP01_BALANCEBE03 compile;alter package USUARIO.MAP01_PAHISTOACT03 compile;alter package USUARIO.MAP01_RAPPELS03 compile; 6 filas seleccionadas. y simplemente copio…
En algunos proyectos en los que he participado, el equipo de front-end, que desarrollaba la interfaz web sobre plataforma .NET, tenía serios problemas para recuperar un conjunto de filas con un objeto tipo array incrustado. La consulta debía devolver un vector de registros, algunos de ellos formados por una lista de valores. En aquel entonces,…
Últimamente he tenido la necesidad de copiar bases de datos. La petición textual era la creación de una base de datos igual que otra, pero con otro nombre. En algunos casos se trataba de replicar el entorno de producción para usarlo como test. En otros, simplemente, testear que el backup permitía recuperar la base de…
Aunque no lo parezca, NOT IN y NOT EXISTS no son cláusulas equivalentes. IN y EXISTS devuelven el mismo conjunto de resultados, pero su semántica es completamente distinta. Aun así, los programadores la utilizan indistintamente ya que se han acostumbrado a trabajar con una de las dos y realizan de igual modo la negación. Por…