lunes, 23 de diciembre de 2019

Regalo de Navidad: Oracle SQL Developer 19.4 !!!


Oracle SQL Developer 19.4 ya está disponible para ser descargado, según anunció el equipo de herramientas de base de datos Oracle en su cuenta de twitter el sábado.

Tanto SQL Developer como SQLcl pueden ser descargados aquí.

Algunos links útiles:

Para consultas y dudas, recomendamos usar el foro de SQL Developer en Oracle Community.


Asimismo, las versiones 19.4 de Data ModelerORDS (esta última incluyendo SQL Developer Web) también se encuentran disponibles. La version Web de SQL Developer permite:


  • Ejecución de consultas y scripts (hoja de trabajo).
  • Asistentes para crear y editar objetos de esquema.
  • Crear diagramas de bases de datos (Modeler).
  • Performance Hub (monitoreo de SQL en tiempo real y ASH).
  • Importación de datos (a tablas nuevas y existentes) desde CSV y Excel.
  • Informes para sesiones, alertas, inicios de sesión, parámetros y SQL superior.
  • Una página de administración para crear y habilitar usuarios REST.

Felices Fiestas !!!



Desde este blog le deseo a todos los lectores una feliz Navidad y un excelente Año Nuevo! Nos vemos nuevamente en el 2020, compartiendo experiencias y conocimiento sobre Oracle!!!


jueves, 12 de diciembre de 2019

Oracle VirtualBox 6.1 Disponible


Oracle anunció ayer en el blog de virtualización la disponibilidad de la versión 6.1 de Virtualbox, la herramienta de virtualización gratuita de Oracle.

La misma cuenta con varias mejoras y nuevas funcionalidades, entre la que se destaca sin duda la posibilidad de importar en forma local una instancia disponible en Oracle Cloud Infrastructure, lo cual se menciona en el blog de Simon Coter.

VirtualBox se puede descargar en forma gratuita desde el sitio web de Virtualbox, y adicionalmente existen los siguientes recursos:


miércoles, 11 de diciembre de 2019

Oracle Open World se muda de San Francisco a Las Vegas

Según publicó en el día de ayer CNBC, Oracle decidió mover su evento anual Oracle Open World, que se realiza desde hace 23 años en San Francisco, a la ciudad de Las Vegas, mas precisamente al Caesar Forum.



El evento reúne anualmente a unos 50.000 participantes y mas de 10.000 miembros del staff de Oracle y las compañías anunciantes y sponsors, por lo que se calcula una demanda de mas de 60.000 plazas de hotel durante una estadía promedio de cinco días.

El acuerdo sería por tres años, por lo que los Open World de 2021, 2021 y 2022 serán en Las Vegas. Las razones del cambio son el alto costo de la hotelería en San Francisco (lo cual es muy cierto!!!), y las malas condiciones de mantenimiento de las calles en la zona del Moscone Center, la sede histórica de OOW en San Francisco (eufemismo que se refiere a la abundancia de homeless y vagabundos).



Yo tenía ganas de participar del próximo OOW y de paso conocer San Francisco, pero parece que tendré que conformarme con volver a visitar a "la ciudad del pecado".






viernes, 6 de diciembre de 2019

Machine Learning, Spatial y Graph ya no requieren licencias adicionales


En el día de ayer William Hardie (vicepresidente de Oracle) anunció en su blog que estas tres características de Oracle Database no requieren licencias adicionales y pueden ser usadas en todas las ediciones de Oracle Database (Standard Edition 2, Enterprise Edition , Cloud, etc.) sin ningún costo extra, en las versiones de Oracle actualmente soportadas (Oracle 11g R2, 12c y 12c R2, 18c y 19c).

Esto se puede confirmar en la documentación oficial, donde se pueden ver los mismos disponibles sin ningún costo adicional:





jueves, 28 de noviembre de 2019

Manejo de Errores en operaciones de DML masivo - SAVE EXCEPTIONS

Como vimos en el artículo anterior, se puede evitar que una sentencia de DML aborte su ejecución en caso de errores mediante el uso de la cláusula LOG ERRORS.  Lo que veremos a continuación es cómo obtener un comportamiento similar mediante el uso de la opción SAVE EXCEPTIONS de FORALL.

Construyendo el ambiente para las pruebas

El primer paso consiste en construir un ambiente de pruebas con algunas tablas donde podamos probar las distintas formas que Oracle provee para capturar errores en una sentencia de tipo DML sin abortar la ejecución de la misma, para lo cual utilizaremos el mismo script que en el artículo anterior, obteniendo estos resultados:



En este artículo nos vamos a saltear la generación de los errores, como hicimos en los UPDATE del artículo anterior, viendo directamente de qué forma podemos usar BULK COLLECT y FORALL con SAVE EXCEPTIONS para detectar errores y no abortar la ejecución de la sentencia DML

Usando SAVE EXCEPTIONS

Esta cláusula nos permite guardar las excepciones detectadas en operaciones de DML ejecutadas con FORALL. La sintaxis es la siguiente:


Al utilizar la clausula SAVE EXCEPTIONS, Oracle guarda las mismas y podemos continuar ejecutando las operaciones de DML, accediendo posteriormente a las excepciones encontradas para mostrar o loguear las mismas.

Vamos a utilizar el siguiente script para actualizar la tabla tActualizame en forma similar a como lo hicimos con UPDATE ... LOG ERRORS, pero usando FORALL y SAVE EXCEPTIONS.

Al ejecutar el script, obtenemos el siguiente resultado:



Como habrán visto en el script, la sintaxis es mas complicada, ya que estamos leyendo los datos de la tabla, almacenando la version deseada en una colección y luego actualizando la tabla con los datos de la colección.

La ventaja de este enfoque es que el mismo permite continuar la operación cuando el error se debe a una clave duplicada, lo cual podemos comprobar con el siguiente script, el cual genera este resultado:


La desventaja de este enfoque que utiliza PL/SQL en este caso está en la performance, ya que los tiempos de ejecución promedio de las operaciones DML usando solo SQL, como vimos en el artículo anterior, se mantenían en torno a 1.2 segundos, mientras que las pruebas con BILK COLLECT y FORALL ... SAVE EXCEPTIONS dieron resultados superiores a los 3 segundos (aunque permitieron capturar errores de clave duplicada).





viernes, 15 de noviembre de 2019

Manejo de Errores en operaciones de DML masivo - LOG ERRORS

Siguiendo una pregunta en la comunidad de Oracle (update in bulk) surgió una conversación con Jonathan Lewis sobre la frecuente recomendación de no hacer en PL/SQL lo que se puede hacer en SQL, en la cual Jonathan incluyó un artículo suyo donde demuestra un caso donde PL/SQL tiene mejor performance que SQL puro.

A raíz de la discusión, consideré interesante realizar una prueba donde poder comprobar el funcionamiento de la cláusula "LOG ERRORS" de las sentencias DML, disponibles a partir de Oracle 10g, comparada con el uso de "SAVE EXCEPTIONS" en una construcción FORALL.

En este primer artículo vamos a ver como funciona LOG ERRORS.

Construyendo el ambiente para las pruebas

El primer paso consiste en construir un ambiente de pruebas con algunas tablas donde podamos probar las distintas formas que Oracle provee para capturar errores en una sentencia de tipo DML sin abortar la ejecución de la misma.

El siguiente script permite crear la tabla con la que vamos a trabajar, al ejecutarlo obtenemos estos resultados:




El paso siguiente consiste en probar de actualizar todas las filas, y en algunos casos generar errores. Para ello vamos a ejecutar un segundo script, el cual contiene tres sentencias UPDATE

  • La primer sentencia le intenta asignar el valor 'FILA 0000001' a la descripción en todas las filas en que el ID es múltiplo de 13.000, causando un error por violación de la Unique Key.
  • La segunda sentencia le intenta asignar el valor 1000000 a OtrosDatos en todas las filas en que el ID es múltiplo de 17.000, causando un error por violación de la Check Constraint.
  • La tercer sentencia le intenta asignar el valor 11 a TipoID en todas las filas en que el ID es múltiplo de 19.000, causando un error por violación de la Foreign Key.

El resultado obtenido es el siguiente:



Como se ve en la imagen, las tres sentencias UPDATE fallaron por diversos motivos, y ninguna fila fue modificada, aunque solo 17 filas en total tenían problemas.

Logueo de errores en sentencias DML

A partir de Oracle 10g (10.2) es posible "ignorar" cuando una sentencia DML genera un error y continuar con la operación, guardando un detalle de los errores en una tabla para su posterior análisis y/o corrección.

La sintaxis a incluir en las sentencias DML es la siguiente:

LOG ERRORS 
  [ INTO [schema.] table ]
  [ (simple_expression) ]
  [ REJECT LIMIT { integer | UNLIMITED } ]
Las secciones a tener en cuenta son:

  • "INTO [schema.] table": Indica en que tabla guardar los errores. Por defecto, utiliza una tabla ERR$_xxxxx, donde xxxxx son los primeros 25 caracteres del nombre de la tabla sobre la cual se ejecuta la operación. La misma puede crearse utilizando un procedimiento del paquete "DBMS_ERRLOG", tal cual veremos a continuación.
  • "simple_expression": Cualquier expresión que permita o ayude a identificar la operación actual en la tabla de errores, por ejemplo "TO_CHAR(SYSDATE)".
  • "REJECT LIMIT": Permite definir el numero máximo de errores que provocaran que la sentencia DML falle. Se puede usar la opción "UNLIMITED" para que la sentencia se ejecute ignorando todos los errores.


Esta cláusula tiene algunas limitaciones que generaran que la sentencia de DML falle pese a incluir la cláusula , las cuales son:

  • Constraints (Restricciones) de tipo diferidas.
  • Cualquier operación INSERT o MERGE de Direct Path que genere una violación de clave única o indice único.
  • Cualquier operación de actualización UPDATE o MERGE que genere violación de clave única o indice único.

Creación de la tabla de Log de Errores

Como mencionamos al explicar la sintaxis, es necesario que la información sobre los errores generados al ejecutar una sentencia DML con la opción LOG ERRORS se guarden en una tabla. Para ello, podemos usar el procedimiento DBMS_ERRLOG.create_error_log el cual crea una tabla de log para una tabla dada.

En nuestro caso, lo tenemos que ejecutar de la siguiente forma (script):

BEGIN
  DBMS_ERRLOG.create_error_log 
 (dml_table_name => 'tActualizame');
END;
/

Esta sentencia crea una tabla llamada "ERR$_tActualizame", la cual posee las columnas de la tabla original mas las siguientes columnas:


  • ORA_ERR_NUMBER$: Número de Error
  • ORA_ERR_MESG$: Mensaje de error
  • ORA_ERR_ROWID$: ROWID de la fila que provocó el error (en caso de UPDATE o DELETE)
  • ORA_ERR_OPTYP$: Tipo de Operación (U = Update, etc.)
  • ORA_ERR_TAG$: Etiqueta asignada a la operación en la cláusula LOG ERRORS

Probando un UPDATE con distintos errores - Prueba 1

A continuación, vamos a ejecutar un script que contiene una sentencia UPDATE que combina los tres tipos de errores que probamos anteriormente, pero incluyendo una cláusula LOG ERRORS, y luego vamos a consultar el contenido de la tabla "ERR$_tActualizame".

El resultado de ejecutar el mismo es el siguiente:


Lo primero que llama la atención es que la sentencia terminó con un error (ORA-00001) pero igualmente generó información en la tabla de log. El motivo por el cual la sentencia terminó con error esta explicado anteriormente, cuando vimos las limitaciones de la cláusula LOG ERRORS:

"Cualquier operación de actualización UPDATE o MERGE que genere violación de clave única o indice único."

Este comportamiento es el esperado, ya que Oracle no puede comprobar la violación de la restricción antes de aplicar el cambio (ya que depende de la existencia de otras filas a las cuales puede no haber accedido), a diferencia de los casos de Check Constraint o Foreign Key, donde toda la información requerida para validar si la fila cumple o no las condiciones esta disponible en la misma fila.

Probando un UPDATE con distintos errores - Prueba 2

Por lo que tenemos que probar solo con los errores de Check Constraint o Foreign Key, tal cual lo haremos en el siguiente script, obteniendo estos resultados:


Como vemos en la imagen, la sentencia terminó de forma correcta, actualizando 99.990 filas de la tabla, y los diez errores quedaron registrados en la tabla "ERR$_tActualizame".

Performance

Después de realizar varias pruebas, concluimos que el tiempo promedio requerido (en Oracle Live SQL) para ejecutar el UPDATE fue de 1.12 segundos. Veremos en el próximo artículo cuanto requiere el uso de la cláusula SAVE EXCEPTIONS en PL/SQL.


viernes, 1 de noviembre de 2019

Oracle APEX 19.2 Disponible



En el día de hoy fue liberada la versión 19.2 de Oracle APEX, la plataforma de desarrollo Low Code gratuita de Oracle que permite un rápido desarrollo de aplicaciones seguras y escalables con un mínimo de programación.

El anuncio lo hizo Joel Kallman, director de desarrollo de APEX de Oracle, en este artículo en su blog.

Links útiles:

Esta nueva versión incluye muchas nuevas características, entre las cuales se destacan:
  • Faceted Search
  • Popup List of Values (LOV)
  • Shared List of Values (LOV)
  • REST-Enabled Interactive Grid
  • New Team Development
  • Data Loading into Existing Tables
  • Dark Mode Theme Style



Oracle APEX 19.2 es totalmente compatible con los Servicios de Soporte Oracle en todas las ediciones (EE, SE2, SE y SE1) de la base de datos Oracle a partir de 11.2.0.4, en cuanto cuente con un acuerdo válido de Soporte Técnico de la Base de Datos.

jueves, 17 de octubre de 2019

Oracle Cloud Free Tier - Administrando y Desarrollando en una Base de Datos Autónoma

En un artículo anterior, vimos como crear una base de datos autónoma utilizando Oracle Cloud Free Tier. A continuación vamos a ver como usar la consola de Servicio para controlar a dicha base de datos.

Ingresando a Oracle Cloud y viendo las Bases de Datos

Una vez logueados al servicio de Oracle Cloud seleccionamos el menu de la parte superior izquierda y elegimos la opción "Procesamiento de Transacciones Autónomo":


Esta opción del menú nos lleva al visor de bases de datos, el cual nos permite ver rápidamente las bases de datos disponibles en nuestra cuenta (al ser una cuenta Free Tier tenemos el límite de dos bases de datos), su estado general y los recursos que posee cada una (nuevamente, limitados al ser una cuenta Free Tier).


También es posible cambiar los filtros de la sección inferior izquierda, para ver otro tipo de bases de datos (para cambiar a "Almacén de Datos" en vez de "Procesamiento de Transacciones" o ver ambos ) y/o filtrar por el estado de las mismas.

Al seleccionar en el link del nombre de cada una de las bases de datos, pasamos a la página de visión detallada de las mismas:


En esta página podemos ver, en la parte inferior de la página métricas de actividad y consumo de recursos:


Podemos ver también, seleccionado la opción "Copia de Seguridad", un detalle de las copias de seguridad que se hicieron, o ejecutar una copia de seguridad en forma manual (es una base de datos autónoma pero podemos hacer cosas manualmente si lo deseamos!):


Y también podemos ver las acciones que ejecutamos manualmente sobre la base de datos:


Volviendo a la parte superior de la página, vemos una especia de "botonera" que nos permite acceder a algunas funcionalidades adicionales de la administración de una base de datos autónoma, las cuales detallaremos a continuación



Hub de Performance

Muestra diversos gráficos con la actividad reciente de la base de datos en la sección 'ASH Analysis" y también permite hacer monitoreo de sentencias SQL en la sección "SQL Monitoring":


Escalar / Reducir Verticalmente

Esta opción permite aumentar o reducir los recursos asignados a la base de datos. Al ser una base de datos de una cuenta Free, no es posible realizar modificaciones a la configuración:


Acciones

Permite ejecutar varias acciones administrativas en la base de datos, como se puede ver en la imagen siguiente:


Consola de Servicio

Por último, vamos a ver las opciones que nos ofrece la consola de Servicio de las Bases de Datos Autónomas de Oracle Cloud, la cual posee cuatro secciones que veremos a continuación.

Sección "Overview"

La sección de vista previa nos muestra el estado general de la base de datos, incluyendo el porcentaje de espacio utilizado, las sentencias SQL en ejecución, número de OCPU asignadas a la instancia, etc.


Sección "Activity"

La sección activity nos permite controlar en forma completa que es lo que está ocurriendo en la base de datos a un nivel general (en la solapa "Monitor") tanto en tiempo real como para un momento en particular, así como monitorear las sentencias SQL que se ejecutan en la base de datos


Sección "Administration"

Esta sección permite realizar tareas administrativas, como ser:

  • Descargar Credenciales de Cliente (Wallet): Son requeridas para poder conectarse desde un cliente local (SQL Developer, SQL*Plus, etc) a la base de datos en la nube.
  • Configurar Reglas de Resource Manager: Gestionar las opciones de control de recursos de la base de datos.
  • Cambiar  la contraseña de Administrador.
  • Administrar los usuarios de "Machine Learning" en la base de datos.



Development

Por ultimo, pero probablemente una de las secciones mas importantes, es la de Development. La misma nos da acceso a

  • Oracle APEX (disponible y pre instalado en la base de datos).
  • SQL Developer WEB.
  • RESTful Services.
  • ML (Machine Learning) SQL Notebooks (ver una breve introducción aquí).
  • Descarga de Instant Client.



Oracle APEX

Oracle Application Express (APEX) es una herramienta RAD que se ejecuta en la base de datos Oracle, permitiendo desarrollar aplicaciones WEB de forma segura y rápida y sin necesidad de instalar nada en los clientes.


La misma permite diseñar e implementar aplicaciones web con soporte REST en forma rápida, con una curva de aprendizaje que permite ser productivo muy rápidamente.



SQL Developer (web)

Desde hace unos meses es posible realizar la administración de los esquemas y objetos de una base de datos Oracle en la nube sin necesidad de usar un cliente local (como SQL Developer o SQL*Plus) ya que la nueva versión de Oracle Autonomous Database incluye SQL Developer Web, una IDE web que permite crear usuarios, definir objetos (tablas, índices, vistas, etc) y programar con PL/SQL (crear paquetes, procedimientos, funciones)


lunes, 14 de octubre de 2019

Oracle Cloud Free Tier - Acceso a My Oracle Support (MOS)!

Como mencioné en el artículo "Oracle Cloud Free Tier - Creación y Configuración de Cuenta", al crear una cuenta en Oracle Cloud Free Tier obtenemos acceso a My Oracle Support (conocido como MOS), incluyendo la posibilidad de crear Service Request (SR) para obtener ayuda o solución a problemas detectados en los productos.

El sitio de soporte ofrece una amplia variedad de recursos, como ser:

  • Acceso a documentos técnicos (en la solapa "Knowledge")


  • Descarga de Patches y Actualizaciones (solapa "Patches & Updates")


  • Creación y seguimiento de solicitudes de servicio (solapa "Service Requests")



  • Comprobación de versiones soportadas o certificadas (solapa "Certifications")



Y otras funcionalidades como ser el acceso a recursos de la comunidad, como ser una sección especial dentro del sitio de la comunidad de Oracle reservada a usuarios de MOS (solapa "Community").

My Oracle Support Dashboard

Todo esto es fácilmente accesible desde la solapa "Dashboard", donde podemos configurar aquellas secciones que nos resultan mas útiles o de acceso frecuente para tener rápidamente disponible los recursos que utilizamos con mas frecuencia.

Como recomendación inicial, el componente "Getting Started" del dashboard nos da acceso a los recursos necesarios para comenzar a utilizar el sitio.


Consiguiendo la Acreditación "My Oracle Support"

Dentro de estos recursos, me resultó extremadamente útil realizar la "Acreditación" sobre My Oracle Support. La misma consiste en una serie de videos y una guía de estudios, que permiten completar un examen (gratuito) el cual "acredita" que conocemos las funcionalidades del sitio.

Esta acreditación posee dos niveles, el nivel inicial (Level 1) es genérico sobre el sitio My Oracle Support (pudiendo elegir entre "My Oracle Support", "Cloud Support Portal" y "Oracle Platinum Services"), mientras que en el segundo nivel (Level 2) se puede optar por especializarse en las distintas secciones de acuerdo a los productos Oracle que utilizamos.


Viendo los videos y leyendo la guía, sumado a recorrer el sitio y probar las distintas funcionalidades, me permitió completar la acreditación inicial sobre My Oracle Support y la acreditación de nivel 2 sobre Oracle Database en unos pocos días, lo cual hace mas fácil utilizar el sitio.







jueves, 10 de octubre de 2019

OGB Appreciation Day 2019: Groundbreakers Community mi camino hacia Oracle ACE

Este año nuevamente estamos "festejando" el día de la comunidad Oracle. En su momento se llamaba "OTN" por Oracle Technology Network, un par de años atrás se convirtió en "ODC" por Oracle Development Community (pero generaba confusión, muchos en el mundo Oracle no se consideran "Developers" y el acrónimo era el mismo usado para otros programas de Oracle, como Oracle Database Cloud o Oracle Developer Champions), por lo que ahora la comunidad se llama Oracle Groundbreakers!

¿Qué es el "Appreciation Day"?

El "Appreciation Day", traducible a "día de agradecimiento", es una otra genial idea de Tim Hall, reconocido referente de la comunidad Oracle, el cual en el año 2016 pensó en dedicarle un día al año donde los miembros de la comunidad generan un post sobre productos de Oracle (o en este caso en particular, como lo hago yo, sobre la comunidad ) y usan el hashtag #ThanksOGB para difundir la existencia de Groundbreakers y acercar a nuevos miembros a la comunidad.

¿Por qué la "comunidad Grounbreakers" es mi camino a Oracle ACE?

Mas allá de mi participación en AROUG, de haber participado de OTN / ODC / Grooundbreaker Tour en Argentina desde 2013, de escribir notas en este blog y artículos en el sitio de OTN en Español, creo que el último tiempo la actividad que mas disfruto es participar en los foros de la comunidad de Oracle.



En los foros, y en particular en la sección en español, es posible interactuar con profesionales con basta experiencia en Oracle, con el solo objetivo de colaborar con otros usuarios para resolver problemas o dudas que abarcan a todas las tecnologías Oracle.



En enero de este año, fui reconocido como Oracle ACE Associate, el primer paso dentro del programa Oracle ACE. En el mes de Junio completé los requisitos necesarios para mantenerme dentro del programa, gracias todas las actividades que describí previamente pero principalmente por a mi participación en los foros, y la semana pasada (como comenté en este artículo) fui promovido a Oracle ACE y, quien sabe en un futuro, tal vez pueda convertirme en Oracle ACE Director.

Como involucrarse con la comunidad Oracle

El primer lugar que recomendaría es comenzar por los foros, los cuales forman parte del sitio Oracle Community. Ya sea para consultar sobre un problema o duda, compartir una solución o para ayudar a otros miembros, los foros de la comunidad son un lugar de intercambio de conocimiento que permite ayudar y aprender al mismo tiempo!

Adicionalmente, Oracle posee tres programas para aquellos que, sin ser empleados de Oracle, tienen un compromiso tanto con los productos como con los usuarios/comunidad de Oracle, los cuales son:






viernes, 4 de octubre de 2019

2018-2019 Oracle ACE Award - Ya soy Oracle ACE ♠


En el blog "ACEs in Action" de Oracle publicaron en el día de hoy la lista de miembros del programa Oracle ACE y en la misma me consideraron dentro de la categoría Oracle ACE . La lista completa está disponible aquí.



El programa busca el reconocimiento de individuos que han demostrado habilidades técnicas y fuertes credenciales como entusiastas dentro de la comunidad global de Oracle. Cualquier persona en comunidades de tecnologías Oracle y Aplicaciones es elegible para postularse o ser postulado a uno de los siguientes niveles: Oracle ACE Associate, Oracle ACE, o Oracle ACE Director.

A fines de enero de este año había sido aceptado como Oracle ACE Associate, lo cual publiqué en este artículo, y menos de medio año después (el período de evaluación del programa cierra en mayo) no solo logré cumplir los objetivos de Oracle ACE Associate sino que fui distinguido con la categoría ACE.

Este año en curso espero poder cumplir los objetivos de Oracle ACE, mediante la difusión de artículos tanto en este blog como en el sitio OTN en Español, mediante la participación en la comunidad de Oracle, y participando tanto disertando como colaborando en la organización (como miembro de AROUG) en Groundbreaker Latin American Tour y otros eventos de difusión de la tecnología Oracle.