Category Archives: Oracle

Segmentos de cuentas en GL: Como obtener desde EBS los segmentos que están siendo usados para las cuentas contables en Oracle Retail

Segmentos de cuentas

En caso de que necesites obtener cuales son los segmentos de cuentas que están configurados actualmente en E-Business Suite (EBS) para armar las cuentas contables que se deben configurar en Oracle Retail solo basta con ejecutar el siguiente query en tu ambiente de EBS:

 

Obtener datos de multiples tablas en Oracle | JOIN

join

La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado de Oracle (SQL) hay cinco tipos de JOINs: Natural JOIN, Self-join, Nonequijoins, Outer Join y Cross joins.

Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional, y, generalizando, es una función de composición.

Para entender como funciona la cláusula JOIN podemos ver el siguiente bloque de código

Podemos observar de forma reducida todos los tipos de JOIN que soporta una base de datos Oracle:

  • NATURAL JOIN une dos tablas basándose en las columnas que tengan el mismo nombre.
  • JOIN tabla2 USING nombre_columna realiza un equijoin basado en el nombre de columna que se especifica en la cláusula USING.
  • JOIN tabla2 ON tabla1.nombre_columna = tabla2.nombre_columna realiza un equijoin basado en la condición que se especifica en la cláusula ON.
  • LEFT / RIGHT / FULL OUTER son usados para realizar OUTER joins.
  • CROSS JOIN regresa un producto cartesiano de dos tablas.

Continue reading

Consultas Jerárquicas en Oracle | Connect By Prior

Las consultas jerárquicas amplían la típica relación entre padres e hijos en una construcción de varias generaciones. En la típica relación entre padres e hijos, una tabla contendrá filas primarias, y otra tabla contendrá las filas secundarias. En otras palabras, sólo dos generaciones están representados.

Los datos jerárquicos tiene una estructura diferente para permitir la posibilidad de múltiples generaciones. En lugar de dos tablas separadas con una tabla primaria y una tabla secundaria, todos los datos se introducen en una sola tabla o estructura similar (como una vista), y las múltiples generaciones se definen sobre la base de los datos dentro de cada fila. El resultado es que podríamos tener padre-hijo-nieto-bisnieto, y así sucesivamente.

El ejemplo clásico de una jerarquía es un organigrama, en el que un CEO es el nivel superior, o el nodo raíz, y todo el mundo en la organización que reporta directamente al CEO es un registro hijo en el segundo nivel. Además, cada empleado que informa al segundo nivel es un nieto del nodo raíz y existe en el tercer nivel en relación con el nodo raíz, y así sucesivamente.

Consultas Jerárquicas

 

La primera muestra de nivel el director general, que sirve como el nodo raíz de esta jerarquía. El segundo nivel consiste en nodos que dependen del nodo raíz. Cada uno de ellos representa una rama en el árbol, en el que el director financiero termina su rama en particular, por lo que es un nodo hoja. Pero los otros dos nodos continúan Nivel 3, y así sucesivamente.

Continue reading

Clausulas de limitación para ’SQL Row’ | Novedades Oracle 12c

Clausulas de limitación

En “Oracle Database 12c los mecanismos para limitar cantidad y modo de extracción de registros han tenido una mejora significativa, proveyéndonos de nuevas clausulas.

Podemos especificar la cantidad de registros a ser retornados utilizando las palabras claves: “FETCH”,”FIRST”,”NEXT”. También podemos especificar la cantidad de registros a ser retornados con la clausula “PERCENT”.

Con la clausula “OFFSET” podemos especificar la cantidad de registros deseados a partir del primer registro de un set de resultados complemento a la data que ya se ha obtenido.

Las consultas que generalmente utilizan este tipo de clausulas son conocidas como: “Top-N Queries”. Veamos un ejemplo práctico de esta característica:

Continue reading

Auto_increment en Oracle | Novedades Oracle 12c

Auto_increment en Oracle

Al momento de pasarte a trabajar con la Base de Datos de Oracle una de las primeras cosas que siempre preguntan los programadores es como hacen el auto_increment en Oracle o el Identity (sql server).

Anteriormente dicho procedimiento pasaba por crear una sequencia y posteriormente utilizarla en cualquier sentencia insert que realizaras sobre la tabla o creando un trigger (before insert for each row) para realizar dicho procedimiento, es decir, hacer lo siguiente:

Sin embargo a partir de ahora existen dos métodos para realizar el auto_increment en Oracle, el primero es asignar por default el valor de una secuencia o el segundo es crear una columna del tipo identidad.

Para mas información pueden consultar la documentación de Oracle

Clausula With | Novedades Oracle 12c

clausula with

Clausula WITH

A pesar de que ya van para 3 años de la salida de Oracle 12c, comenzaré a escribir un conjunto de artículos donde les traeré las novedades de la nueva y robusta base de datos de Oracle.

El día de hoy les hablaré de la clausula WITH, pero ojo no me refiero al ya conocido uso para simplificar sentencia sql complejas que utilizan subquerys, sino al uso de la misma al momento de crear funciones y procedimientos.

La clausula WITH permite la declaración de procedimientos y funciones que serán utilizadas en un mismo bloque de código PL/SQL, como ya se imaginaran se sigue la filosofía del with en consultas dml permitiendo un bloque dinámico de PL/SQL, optimizando los tiempos de ejecución con respecto al modelo de Program Units y sin necesidad de ser almacenados como objetos en la Base de datos.

Después de la teoría, nada mejor que un ejemplo de la clausula WITH

Como atender un soporte de segundo nivel de un flujo de batchs de Oracle Retail

oracle_res10_rev052610

A continuación les comparto un checklist que realice hace mucho tiempo como base para tomar acciones al momento de ser notificados de una falla en un job de UC4 durante la ejecución del batch nocturno de Oracle Retail.

  • Si un job aborta y no es un error conocido, se debe exigir al área que esta reportando que cree un caso referente al problema donde adjunten los logs del error.
  • Si un job aborta y al revisar el log se observan mensajes referentes a conexión (por ejemplo: timeout, no conectado a oracle, no more data t oread from socket, etc) los mismos deben ser re-ejecutados.
  • Si un job aborta y no es por error de conexión, se debe evaluar si al ser re-ejecutado aún tendrá disponible la información que utiliza como entrada para su procesamiento. (Por ejemplo el job batch_saimptlogi)
  • Si un job aborta debido a que dejó registros rechazados, se deben respaldar los archivos rechazados (.rej) comprimidos en un archivo zip al ticket de soporte que fue creado para reportar el error.
  • Si un job aborta y no es un error conocido, se deben evaluar las siguientes premisas:
    1. ¿Qué hace el job y cuál es el impacto de dejarlo para el día siguiente? (apoyarse en el operation guide de Oracle Retail)
    2. Validar el código fuente hasta identificar en qué punto está fallando; en caso de que sea por unos datos inválidos, los mismos deben ser respaldados en una tabla temporal y el job re-ejecutado solo con la información correcta para dar continuidad a los batch nocturnos. La información respalda en una tabla temporal(dentro del esquema de base de datos de la persona de guardia, ejemplo: juanrodriguez.tabla_numerocaso, abarreto.tran_data_numerocaso) debe ser documentada en su respectivo ticket de soporte e incluir el ultimo archivo de log de ejecución del job
    3. Revisión dentro de oracle support con el mensaje de error que aparece en el log de UC4.
    4. En caso de no conseguir el error y después de haber agotado las opciones anteriores, se debe llamar al backup de guardia y pedir apoyo para solucionar el mismo, si aun así no se consigue solución se debe llamar al líder de Equipo para definir las acciones a seguir.
  • Antes de las 6 de la mañana se debe enviar un correo con el status del Oracle Retail Batch indicando los acontecimientos del mismo y los números de tickets que fueron abiertos.
  • Una vez finalizado el batch de Ventas se debe responder al correo anterior y anexar el status del mismo