lunes, 17 de agosto de 2020

Oracle Cloud Infrastructure - Creando una Base de Datos JSON Autónoma

El anuncio del jueves 13/08 sobre Oracle Autonomous JSON Database (sobre el cual informé en este artículo) generó mucho interés en la comunidad de base de datos Oracle, ya que amplía las dos ofertas existentes (Autonomous Transaction Processing y Autonomous Data Warehouse) con un nuevo tipo de almacenamiento optimizado para documentos JSON.

A continuación vamos a ver los pasos requeridos para crear una base de datos autónoma JSON y conectarnos a la misma.


Creando una Base de Datos JSON Autónoma

El primer paso es navegar hasta las opción de "Autonomous JSON Database", dentro de la sección "Oracle Database" del menú principal de la consola de Oracle Cloud:



En la ventana siguiente, debemos verificar en qué compartimiento queremos crear la base de datos, y a continuación seleccionar la opción "Create Autonomous Database" que nos lleva al asistente para crear la base de datos:


El asistente posee varias secciones, en la primera podemos:
  • Verificar el nombre del compartimiento.
  • Ingresar el nombre "Visible" y el nombre "real" de nuestra nueva base de datos.
  • Seleccionar el tipo de base de datos autónoma a crear (como seleccionamos la opción habiendo entrado inicialmente desde la parte "Autonomous JSON Database, la misma aparece pre-seleccionada).

Luego podremos elegir:
  • Si usar infraestructura dedicada (un servidor exadata "privado") o compartida (nuestra DB estará ubicada en un servidor exadata con otras DB de otros clientes de Oracle.
  • La versión de la base de datos Oracle (por el momento, solo ofrece Oracle 19c).
  • Cantidad de procesadores y espacio de almacenamiento.
  • La opción de Auto Escalar para aumentar la capacidad de procesamiento y almacenamiento en forma automática.


A continuación debemos ingresar la contraseña para el usuario Admin de nuestra base de datos:
 

Y por último, podemos elegir:
  • Permitir el acceso público a nuestra DB (opción por defecto) o configurar la misma para que se encuentre ubicada en una VCN de nuestra cuenta, teniendo que configurar los permisos necesarios.
  • Usar una licencia de Oracle o usar una licencia ya existente (esta opción no se encuentra disponible para JSON Autonomous Database).

Por último, seleccionamos el botón "Create Autonomous Database" (como se muestra en la imagen anterior) y el proceso de creación de la instancia se inicia en forma automática, como vemos a continuación:



Conectándonos a una Base de Datos JSON Autónoma desde SQL Developer

Una vez finalizado el proceso de provisionamiento de nuestra base de datos JSON autónoma, podemos conectarnos a ella desde cualquier computadora con acceso a internet. Este proceso es similar al de cualquier otra instancia de Oracle Autonomous Database (ATP o ADW).

En primer lugar, desde la consola de Oracle Cloud, vamos a seleccionar la opción "DB Connection":

En esta pantalla podremos elegir el tipo de Wallet que queremos descargar, la opción por defecto es descargar el Wallet de la Instancia, lo cual hacemos presionando el botón "Download Wallet":


A continuación deberemos ingresar una contraseña para el Wallet (algunas herramientas lo requieren para acceder al mismo):


Una vez que descargamos el Wallet, solo tenemos que abrir el SQL Developer y configurar la conexión, con los siguientes detalles

  • En "Usuario" y "Contraseña", utilizar el usuario "Admin", y la contraseña definida para el mismo en la tercera parte del asistente de creación de la DB.
  • En la opción "Tipo de Conexión", seleccionar "Cartera de Cloud" (Cloud Wallet).
  • En la opción "Archivo de Configuración", seleccionar el archivo de Wallet que acabamos de descargar.
  • En la opción "Servicio" seleccionar uno de los servicios ya definidos, normalmente utilizaremos el servicio que finaliza en  TP (Transaction Processing)

Una vez que probamos la conexión, podemos guardarla y conectarnos a la misma, ejecutando una query para comprobar que la conexión funciona correctamente:



viernes, 14 de agosto de 2020

Oracle Presentó "Oracle Autonomous JSON Database"

Hace pocas horas Oracle anunció la disponibilidad de un nuevo servicio de Base Datos autónomo llamado "Oracle Autonomous JSON Database" como parte de Oracle Cloud Infrastructure. El anuncio, en el blog de JSON de Oracle, fue realizado por Beda Hammerschmidt.



Oracle Autonomous JSON Database es un servicio orientado a desarrolladores que desean acceso a una base de datos JSON potente y económica mediante una API NoSQL. El servicio posee todas las características de MongoDB, en una plataforma Cloud altamente probada, con la elasticidad de OCI, soporte al estándar Full ACID y funcionalidad SQL.


El servicio "Autonomous JSON Database" proporciona una gran cantidad de funciones que no se encuentran en bases de datos NoSQL menos maduras:

  • Algoritmos de aprendizaje automático integrados (Machine Learning).
  • Consultas y tipos de datos Spatial.
  • Características de seguridad avanzadas como control de acceso detallado.
  • Lenguaje procedural (PL/SQL) del lado del servidor.
  • Entorno de desarrollo Low Code (Oracle APEX).
  • Transacciones ACID sin límites de tiempo o tamaño de transacción.
  • Joins y / o agregaciones de recopilación cruzada simples y rápidas.
  • Índices de búsqueda inteligentes en documentos JSON completos.

Como el 25/08 estaré presentando en Groundbreakers Tour LATAM 2020 sobre Oracle 20c y las mejoras en JSON (pueden ver los detalles aquí) seguramente en los próximos días voy a estar investigando esta nueva opción de Oracle Cloud y publicando un tutorial sobre la misma




Oracle Cloud Infrastructure - Conectandose a una DB en la nube con SQL Developer

En los artículos anteriores ( "Oracle Cloud Infrastructure - Creando Compartimiento y Red Virtual (VCN)" y "Oracle Cloud Infrastructure - Creando una VM con Oracle 20c") vimos cómo configurar un compartimiento y una VCN, y posteriormente crear una VM con Oracle Database en OCI.

En este artículo vamos a explicar cómo conectarse con SQL Developer a nuestra instancia de base de datos Oracle en la nube.


Configurando la VCN para aceptar conexiones

El primer paso consiste en navegar en la consola de OCI dentro de "Core Infrastructure", seleccionado Networking y luego la opción de Virtual Cloud Networks:


A continuación debemos seleccionar la VCN donde se encuentra nuestra VM con la instancia de Base de Datos Oracle:


Una vez en la red, debemos seleccionar la sub-red pública:


Y a continuación la "Lista de Seguridad" de la misma:


En el paso siguiente, vamos a habilitar una regla de ingreso para permitir conexiones entrantes desde nuestra computadora, presionando en la opción "Add Ingress Rules":


Se abrirá una pantalla donde deberemos ingresar:

  • El rango de IP desde donde la subred aceptará las conexiones (pueden obtener su IP pública fácilmente, ingresando al sitio "myip.es".
  • El protocolo (dejar TCP).
  • El puerto al que se desea conectar (habilitaremos solo el 1521, donde escucha por defecto el Listener de Oracle).
  • Un nombre para la regla, el cual facilita su identificación.


Al presionar finalizar la carga de la nueva regla, volvemos a la pantalla anterior, donde podemos verificar la misma:


Datos de Conexión de la VM e Instancia

En el artículo anterior, ya habíamos obtenido la IP pública de nuestra VM, para poder conectarnos vamos a requerir también el nombre de servicio de la base de datos. Para ello navegaremos hasta la sección de DB Systems en la consola de OCI hasta llegar a nuestra VM y la instancia de base de datos. Una vez en la misma, presionaremos la opción "DB Connection":

Una ventana se abrirá, donde podremos copiar los detalles de conexión a nuestra instancia. Para ello presionaremos en la opción "Copy":

Esto nos copia al portapapeles la cadena de conexión a nuestra instancia, con el formato "<servidor>:<puerto>/<servicio>", nosotros usaremos el puerto y el servicio en el próximo paso.


Configurar SQL Developer

A continuación solo nos resta configurar SQL Developer para acceder a nuestra DB. Para ello, crearemos una nueva conexión (no de tipo Cloud, sino una "normal") y completaremos los siguientes datos:

  • Usuario: Sys o System (creados al momento de configurar la DB) o alguno que hayamos creado posteriormente.
  • Contraseña: La correspondiente al usuario ingresado
  • Nombre de Host: No usaremos el nombre sino la IP pública que obtuvimos en el artículo anterior.
  • Puerto: 1521 (el mismo que configuramos para aceptar conexiones entrantes)
  • Nombre de Servicio: El nombre que obtuvimos en el punto anterior.


Podemos asegurarnos que todo esta OK presionando en el botón "Probar", si el mensaje de estado es "Correcto" podemos guardar nuestra conexión presionando "Guardar".

Una vez guardada la conexión, nos conectamos a la misma y ya podemos consultar nuestra base de datos:





martes, 11 de agosto de 2020

Oracle Cloud Infrastructure - Creando una VM con Oracle 20c

En el artículo anterior "Oracle Cloud Infrastructure - Creando Compartimiento y Red Virtual (VCN)" configuramos un compartimiento y una red virtual (VCN) como pasos iniciales para crear una máquina virtual (VM) con Oracle Database en Oracle Cloud Infrastructure. A continuación veremos los pasos requeridos para configurar una VM en OCI con una instancia de Oracle Database.


Creando una VM con Oracle Database

El primer paso consiste en seleccionar la opción "Bare Metal, VM and Exadata" (también conocida como DB Systems) dentro de la sección "Oracle Database" del menú principal de la consola de Oracle Cloud Infrastructure:



Una vez en la página de DB Systems de Oracle Database, podemos ver los sistemas de DB que tenemos configurados en el compartimiento seleccionado (en este caso, lo haremos en el Compartimiento "Blog" que creamos en el artículo anterior). A continuación debemos presionar en "Create DB System" para crear nuestra VM con Oracle DB:



Creando la VM

En la primer página dentro del asistente de creación de DB System, vamos a configurar la VM donde se ejecutará nuestra instancia de Oracle DB. Lo primero que debemos hacer es :

  • Confirmar el Compartimiento a utilizar
  • Ingresar un nombre para la máquina virtual (es un nombre "amigable", no el nombre del servidor).
  • Seleccionar en que Availability Domain de la región estará ubicada la VM
  • Elegir entre VM, Bare Metal (servidor físico) o Exadata
  • Elegir el tamaño ("Shape") de la VM a crear, en este caso para instalar Oracle 20c es requerido que sea de tipo VM.Standard2.1.

Podemos cambiar el shape de la VM presionando en "Change Shape" (como se ve en la imagen anterior) y seleccionando la deseada de la lista disponible:


Luego, debemos elegir:
  • Edición de Oracle Database a utilizar, desde Standard a la versión de Ultra Performance, en nuestro caso nos alcanza con una versión Enterprise.
  • Definir de qué manera queremos manejar el almacenamiento. Para una instalación más rápida nos alcanza con usar la version de "Logical Volume Management".
  • El tamaño de almacenamiento, el cual inicia en 256 Gb., lo cual es más que suficiente para esta prueba.


Luego, deberemos ingresar:
  • Una clave pública de SSH, para poder conectarnos al equipo. Puede elegirse entre ingresar la clave (como hice en este caso) o subir un archivo de clave pública. Si no saben cómo generar una clave, pueden consultar la herramienta PuttyGen. Debemos guardar la clave privada en un lugar seguro, será requerida para conectarnos a la VM. 
  • Elegir entre usar una licencia provista por Oracle (lo cual implica un costo), o ingresar los detalles de una licencia Oracle que ya hayamos adquirido

La última parte de la creación de la VM requiere seleccionar:

  • La VCN (Virtual Cloud Network) donde residirá la VM. Vamos a usar la VCN creada en el artículo anterior.
  • La subred dentro de la VCN. Ya que queremos acceder a la VM en forma directa desde Internet, vamos a ubicarla en la subnet pública, pero en condiciones normales los equipos de tipo DB system suelen estar ubicados en la subred privada.
  • El nombre de Host (servidor) de la VM.
Una vez ingresados los datos, presionamos "Next" para culminar la configuración de la VM y pasar a configurar la Instancia de Oracle:


Configurando la instancia de Oracle Database

En esta página vamos a definir la características de la instancia de Oracle que crearemos dentro de la VM configurada en el punto anterior. 

Lo primero que debemos seleccionar es:

  • Nombre de la base de datos contenedor (CDB).
  • Versión de la base de datos. En este caso, no me dejó elegir Oracle 20c, es probable que sea debido a que ya tengo configurada otra VM con Oracle 20c y esa versión está disponible sólo como preview.
  • Nombre de la PDB que usaremos para crear nuestros esquemas, tablas, etc. Esto no es obligatorio (podemos crear la PDB posteriormente, como en cualquier instancia de Oracle).
  • Contraseña del usuario SYS (tambien usada para SYSTEM).

A continuación sólo resta seleccionar el tipo de uso que le daremos a la DB (procesamiento de transacciones o Data Warehouse) y presionar el botón "Create DB System" para crear la VM con la instancia:

Al seleccionar "Create DB System" la consola vuelve a la página de DB Systems, y nos muestra el estado del proceso de provisionamiento de la VM con la instancia. Este proceso puede demorar entre 10 y 30 minutos:


Al finalizar el proceso, el estado de la VM aparecerá como "Available" (disponible). Podemos ver los detalles del sistema si seleccionamos en el nombre de la misma:

Al ver los detalles de la VM tenemos acceso a toda la información de la VM y la base de datos creada:


Al seleccionar "Nodes" en la parte inferior izquierda del detalle de la VM (como se ve en la imagen anterior) podemos ver las características del nodo, incluyendo la dirección IP pública que usaremos para conectarnos a la VM:

Con esto queda finalizado el proceso de creación de la VM con una instancia Oracle.


Probar a la Base de Datos

Podemos probar en forma rápida de conectarnos a la VM y una vez en ella, conectarnos a la DB. Para ello debemos:


  1. Configurar Putty u otra herramienta que permita conexiones SSH, para conectarnos con la VM. Para ello usaremos:
    • La IP pública del punto anterior
    • El usuario de Linux "opc" (disponible por defecto en todas las VM de OCI).
    • El archivo de clave privada correspondiente a la clave pública que usamos al configurar la VM.
  2. Una vez conectamos con "opc" cambiar al usuario "oracle" usando el siguiente comando:
            sudo su - oracle


Una vez conectados como "oracle", podemos hacer lo que deseemos con nuestra instancia!


Oracle Cloud Infrastructure - Creando Compartimiento y Red Virtual (VCN)

El martes 25/8 estaré presentando en el Groundbreakers Tour LATAM 2020 en forma virtual, una charla sobre las mejoras en JSON que ofrece Oracle 20c. Cuando planifiqué la charla a principios de año, Oracle 20c ya estaba disponible para probarla en Oracle Cloud, así que pensé que pronto lo estaría para instalaciones On Premise.... pero no tuve en cuenta la pandemia de COVID-19.

Por lo que para poder probar y presentar las mejoras en forma práctica, tuve que crear una VM en Oracle Cloud con Oracle Database 20c. Esto se puede hacer usando la prueba gratuita de 20 días de Oracle Cloud, tal cual describí el año pasado en el artículo "Oracle Cloud Free Tier - Oracle Cloud disponible en forma gratuita!".

Aproveché para documentar el proceso de creación de la VM y compartirlo en un par de artículos. En este artículo veremos como crear un compartimiento para "aislar" los recursos que vamos a crear en esta prueba de los otros recursos ya existentes en nuestra cuenta de Oracle Cloud, y en el siguiente  artículo veremos la creación de la VM con Oracle.


Creación de Compartimiento

Los contenedores on "espacios" dentro de nuestra cuenta de Oracle Cloud. Para llegar a la sección de Compartimientos, debemos seleccionar la opción "Identity" dentro de la parte "Governance and Administration" del menu principal de la consola de Oracle Cloud, y elegir la opción "Compartments"



Una vez en la sección "Compartments", podemos ver los compartimientos ya existentes, y presionando en "Create Compartment" pasamos al asistente para crear un nuevo compartimiento:


En el asistente, debemos completar el Nombre y Descripción del compartimiento a crear, y definir dentro de que compartimiento lo vamos a crear. Adicionalmente podemos definir etiquetas que nos ayuden a identificar el compartimiento y controlar los costos del mismo por diversas categorías, y luego presionamos la opción "Create Compartment":


Y a continuación ya tenemos el compartimiento disponible en nuestra cuenta de Oracle Cloud:



Creación de VCN (Virtual Cloud Network)

Una vez que tenemos un compartimiento creado, podemos crear una Red Virtual para asociar todos los recursos que vamos a crear en nuestro compartimiento, poder acceder a los mismos y a otros recursos de OCI. Para ello, tenemos que seleccionar la opción "Networking" dentro de la parte "Core Infrastructure" del menu principal de la consola de Oracle Cloud, y elegir la opción "Virtual Cloud Networks":



En la página de Virtual Cloud Networks, debemos asegurarnos que estamos en el compartimiento deseado en la sección inferior izquierda, y a continuación se debe seleccionar la opción "Start VCN Wizard" para iniciar el asistente de creación de una VCN con todos sus sub-componentes.


El asistente nos permite elegir entre dos configuraciones pre-establecidas. Utilizaremos la opción "VCN with Internet Connectivity" 


En la primer pantalla, deberemos ingresar el nombre de la VCN y confirmar que el compartimiento seleccionado sea el correcto. El resto de las opciones de configuración podemos dejarlas tal cual ofrece el asistente, y presionar "Next":


En la segunda pantalla, podemos revisar los detalles de la red que se va a crear, y dar comienzo a la creación de la misma presionando "Create":




A los pocos segundos veremos que todos los componentes han sido creados, y podemos finalizar el asistente seleccionando "View Virtual Cloud Network":
 


A continuación, veremos los detalles de red que hemos creado, con todos sus componentes:




En el próximo artículo veremos como crear una VM con Oracle Database dentro del compartimiento creado en la primer parte de este articulo, utilizando la VCN que recién creamos.