jueves, 16 de diciembre de 2021
Un par de mejoras a Oracle Autonomous Database
viernes, 8 de octubre de 2021
Instalación de Oracle 21c XE en Windows
El siguiente artículo nos va a guiar a lo largo del proceso de instalar Oracle Database 21c XE en un equipo con sistema operativo Windows. En mi caso la instalación la realicé sobre Windows 10 Pro de 64 bits.
Antes de comenzar, vamos a revisar los requerimientos y pasos previos.
Requerimientos de Software
Sistema Operativo:
- Windows 10 x64 - Pro, Pro for Workstations, Enterprise o Education.
- Windows Server 2012 R2 x64 - Standard, Datacenter, Essentials o Foundation.
- Windows Server 2016 x64 - Standard, Datacenter o Essentials.
- Windows Server 2019 x64 - Standard, Datacenter o Essentials.
[Agregado 2021-10-26] El servidor (si es Window Server) no puede ser un servidor de dominio.
Virtualización:
- Oracle VM Server
- Microsoft Hyper-V
Usuario:
Debe ser un usuario con permisos de Administrador. En caso de ser un usuario de dominio, debe estar conectado a la red.
Requerimientos de Hardware
Oracle 21c XE tiene los siguientes requerimientos de hardware:
- 8.5 Gb de espacio en disco mas 2Gb para almacenamiento temporal.
- 2 Gb de memoria RAM
Pasos Previos a la Instalación
Antes de comenzar la instalación, es necesario asegurarse que no exista otra instancia de Oracle XE instalada en el equipo (ya sea de la versión 21c o de versiones anteriores).
Instalación de Oracle
Ejecutar el archivo "setup.exe" de la carpeta temporal donde de descomprimieron los archivos de instalación de Oracle 21c XE, dando comienzo a la instalación:
Luego de presionar "Siguiente" y aceptar los términos de la licencia, seleccionar la carpeta donde se instalará el producto. En mi caso prefiero hacerlo siempre en una carpeta "Oracle" antes que en la carpeta predeterminada que incluye el nombre del usuario que realiza la instalación:
A continuación, se presenta un pantalla de confirmación para dar inicio a la instalación:
Una vez presionada la opción "Instalar" se da comienzo a la instalación:
Durante el proceso de instalación, es probable que el asistente del Firewall de Windows solicite autorizar el acceso a los procesos de Oracle XE a la red, para lo cual debemos seleccionar "Permitir Acceso":
Al finalizar la instalación, veremos una pantalla de resumen con los datos de la instalación realizada. Es importante recordar los datos mostrados en la misma para poder conectarnos posteriormente a la base de datos y a Enterprise Manager:
Una vez finalizado, la base de datos se encuentra activa y ya podemos conectarnos a ella, o acceder a la misma mediante Enterprise Manager Database Express, como podemos ver a continuación:
Oracle Database 21c XE ya está disponible en Windows
Sólo tres semanas después que la edición XE de Oracle Database 21c fuera liberada para el sistema operativo Linux, Oracle anunció la disponibilidad de la misma para sistemas operativos Windows.
Para consultar los detalles de Oracle 21c XE (nuevas características, limitaciones, etc.) pueden consultar el artículo "Oracle 21c XE ya está disponible para Linux" en este blog.
Oracle XE es ideal para entornos de desarrollo y para pequeñas implementaciones productivas que no deseen afrontar los costos de licenciamiento de las versiones con soporte.
La versión 21c ya se encuentra disponible para Oracle Linux 64 bit (tanto OL7 como OL8) y Windows y puede ser descargada aquí.
El anuncio oficial fue realizado en el blog de Oracle Database por William Hardie, vice presidente de desarrollo de Oracle Database Product.
Información Adicional:
- Guía de Instalación (Windows).
- Guía de Instalación (Linux).
- Preguntas Frecuentes.
- Información de Licenciamiento.
- Soporte de la Comunidad.
Nota:
En un rato voy a estar publicando un artículo con los detalles de la instalación.
Oracle Database 21c disponible on-premise para Windows
Menos de dos meses luego de liberarse la versión de Linux de Oracle Database21c, Oracle anunció la disponibilidad de la misma para servidores con sistema operativo Windows.
Esta versión puede descargarse desde la página de descargas de Oracle Database donde se encuentran los links para descargar Oracle 21.3 y los diversos componentes relacionados (Gateways, cliente de 32 bit y de 64 bit, etc.).
La documentación de Oracle Database 21c se encuentra disponible aquí, incluyendo la guía de instalación para Windows.
Para conocer algunas de las mejoras disponibles en Oracle 21, pueden ver los artículos que ya publiqué al respecto:
- ¿Qué hay de nuevo en Oracle 21c?
- Oracle 21c - Usando Expresiones en Parámetros de Inicialización.
- Oracle 21c - Mejoras al iterador FOR LOOP - Parte #1.
- Oracle 21c - Mejoras al iterador FOR LOOP - Parte #2.
- Oracle 21c - Mejoras a Expresiones Calificadas.
viernes, 24 de septiembre de 2021
Instalación de Oracle 21c XE en Oracle Linux
El siguiente artículo nos va a guiar a lo largo del proceso de instalar Oracle Database 21c XE en un equipo con Oracle Linux. En mi caso la instalación la realicé sobre Oracle Linux 7, pero las diferencias con Oracle Linux 8 son mínimas.
Instalación de Oracle
El primer paso consiste en descargar el software (elegir la opción acorde a la versión de Oracle Linux disponible) del sitio de descargas de Oracle Database 21c XE. En nuestro ejemplo utilizaremos el rpm correspondiente a Oracle Linux 7 (ya que tengo una maquina virtual con Oracle Linux 7.9).
El paso siguiente es preparar el entorno e instalar el software adicional requerido por Oracle 21c, y hacer las configuraciones de sistema operativo necesarias para Oracle Database. No es necesario hacer todas estas tareas en forma manual, ya que Oracle provee un paquete RPM que se encarga de todo eso. Sólo tenemos que ejecutar lo siguiente conectados con el usuario "root":
yum install -y oracle-database-preinstall-21c
Una vez configurado el entorno de forma correcta, podemos hacer la instalación de Oracle Database 21c XE usando el paquete rpm que descargamos, ejecutando el siguiente comando con el usuario root:
yum -y localinstall oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm
Cuando el proceso concluye, significa que ya tenemos el software instalado correctamente, y solo nos queda pendiente crear la instancia de base de datos.
Nota: para instalar en Oracle Linux 8, se usa el comando "dnf" en vez de "yum".
Creación de Instancia y base de datos
El paso siguiente, una vez instalado el software, es crear y configurar la instancia de Oracle Database (las versiones XE permiten una sola instancia por servidor). Si lo desea, previamente puede editar el archivo "/etc/sysconfig/oracle-xe-21c.conf" para hacer ajustes previos a la instalación, como ser:
- Configurar el puerto donde se ejecuta el Listener
- Definir el set de Caracteres
- Definir la ubicación de los archivos de base de datos
La creación de la instancia de Oracle XE se hace ejecutando lo siguiente con el usuario root:
/etc/init.d/oracle-xe-21c configure
El proceso de instalación nos va a solicitar la contraseña a utilizar para los usuarios SYS y SYSTEM y luego en unos minutos creará la instancia de base de datos y la iniciará:
Una vez finalizado, la base de datos se encuentra activa y ya podemos conectarnos a ella, o acceder a la misma mediante Enterprise Manager Database Express, como podemos ver a continuación:
martes, 21 de septiembre de 2021
Oracle 21c XE ya está disponible para Linux
Después de una larga espera causada por la pandemia de COVID-19 , Oracle liberó la edición XE (eXpress Edition) de su última versión de base de datos Oracle 21c, la cual es completamente gratuita y posee algunas de las características de la edición Enterprise, como ser:
- MultiTenant: Permite tener múltiples bases de datos dentro de una base de datos contenedora, proporcionando aislamiento, agilidad y economías de escala.
- In Memory: Permite realizar análisis en tiempo real, inteligencia empresarial e informes al mantener sus datos importantes en el almacén de columnas en memoria de la base de datos Oracle.
- Particionamiento: Mejora el rendimiento y simplifica la administración de las base de datos.
- Análisis avanzado: Permite obtener información valiosa y generar predicciones a partir de los datos almacenados mediante Data Mining SQL, programación R y la interfaz de usuario de Oracle Data Miner.
- Seguridad avanzada: Proteje los datos confidenciales en la fuente con capas de seguridad que incluyen el cifrado transparente de datos y la redacción de datos de Oracle.
Asimismo, Oracle Database 21c XE tiene, como todas las versiones XE, algunas limitaciones de recursos:
- 2 CPU para procesamiento
- 2 GB de RAM (PGA+ SGA combinadas)
- 12G GB de almacenamiento de datos de usuarios (puede usarse compresión)
- El número de PDBs (plugable databases) que anteriormente estaba limitado a tres, ahora puede alcanzar las 252 PDB (igual que la Enterprise Edition)
Oracle XE es ideal para entornos de desarrollo y para pequeñas implementaciones productivas que no deseen afrontar los costos de licenciamiento de las versiones con soporte.
La versión 21c ya se encuentra disponible para Oracle Linux 64 bit (tanto OL7 como OL8) y puede ser descargada aquí. En el mismo lugar se pueden descargar los paquetes de preinstalación que simplifican la configuración del sistema operativo para realizar la instalación en forma mas ágil.
El anuncio oficial fue realizado en el blog de Oracle Database por Gerald Venzl, Product Manager de Oracle XE.
Información Adicional:
- Guía de Instalación (Linux).
- Preguntas Frecuentes.
- Información de Licenciamiento.
- Soporte de la Comunidad.
Muy pronto estará disponible la misma para entornos Windows 64 bit.
miércoles, 1 de septiembre de 2021
Oracle 21c - ORACLE_HOME de Sólo Lectura por Defecto
Oracle 18c introdujo el concepto de ORACLE_HOME de solo lectura, como pueden ver en el artículo "Oracle 18c - ORACLE_HOME de Solo Lectura" publicado en 2018.
Esta funcionalidad era optativa en Oracle 18c y 19c, pero a partir de Oracle 21c, si bien sigue siendo optativa, es la opción por defecto, por lo que luego de instalar Oracle 21c es probable que tengamos que refrescar los conceptos de ORACLE_HOME como fueron explicado previamente en el blog.
A raíz del cambio, es bueno conocer la ubicación de los distintos archivos que anteriormente se encontraban en el directorio ORACLE_HOME y ahora se encuentran ubicados en nuevos lugares, a continuación veremos los utilizados mas frecuentemente:
|
Directorio |
Read-Only Oracle Home (Oracle 21c y posterior) |
Read/Write Oracle Home (antes de Oracle 21c) |
|
ORACLE_HOME |
/u01/app/oracle/product/21.0.0/dbhome_1 |
/u01/app/oracle/product/19.0.0/dbhome_1 |
|
ORACLE_BASE |
/u01/app/oracle/ |
/u01/app/oracle/ |
|
ORACLE_BASE_HOME |
ORACLE_BASE/homes/HOME_NAME |
ORACLE_HOME |
|
ORACLE_BASE_CONFIG |
ORACLE_BASE |
ORACLE_HOME |
|
network |
ORACLE_BASE_HOME/network/admin |
ORACLE_HOME/network/admin |
|
dbs |
ORACLE_BASE_CONFIG/dbs |
ORACLE_HOME/dbs |
|
hs |
ORACLE_BASE_HOME/hs/admin |
ORACLE_HOME/hs/admin |
Ante cualquier duda, consulten la documentación oficial o el articulo sobre ORACLE:HOME de solo lectura en Oracle 18c en este blog.
martes, 31 de agosto de 2021
Zero Downtime Migration 21.2 ya está disponible
En el mes de marzo anunciaba la disponibilidad de Zero Downtime Migration 21c en el artículo "Migración a Oracle Cloud sin interrupción de servicio con Zero Downtime Migration 21c", hoy tengo la oportunidad de mencionar que la version 21.2 de ZDM ha sido liberada (pueden ver el artículo original en el blog de Oracle Maximum Availability Architecture) e incluye importantes mejoras.
¿Que hay de Nuevo?
Nuevos Orígenes de Datos
Migración Cross-Platform
"Direct Data Transfer" disponible para Migración Física
Uso de Backups Existentes
Mejoras adicionales
- Remapeo o Creacion Automatica de Tablespaces
- Estimación de Tamaño de Migracion (para Data Pump) mediante Estadisticas.
Mas Información
lunes, 16 de agosto de 2021
Oracle Database 21c disponible on-premise para Linux
Si bien Oracle 21c fue anunciada en diciembre de 2020 (ver el artículo "Oracle 21c ya está disponible en Oracle Cloud") y desde esa fecha se encuentra disponible en la plataforma Oracle Cloud Infrastructure desde esa fecha, recién la semana pasada es posible descargar e instalar la misma en servidores propios, en este caso los que utilicen sistema operativo Linux, tal como fue anunciado en el blog de Oracle Database.
La misma se puede descargar desde la página de descargas de Oracle Database donde se encuentran los links para descargar Oracle 21.3.
Para conocer algunas de las mejoras disponibles en Oracle 21, pueden ver los artículos que ya publique al respecto:
- ¿Qué hay de nuevo en Oracle 21c?
- Oracle 21c - Usando Expresiones en Parámetros de Inicialización.
- Oracle 21c - Mejoras al iterador FOR LOOP - Parte #1.
- Oracle 21c - Mejoras al iterador FOR LOOP - Parte #2.
- Oracle 21c - Mejoras a Expresiones Calificadas.
jueves, 25 de marzo de 2021
Migración a Oracle Cloud sin interrupción de servicio con Zero Downtime Migration 21c
En el día de ayer Oracle anunció la disponibilidad de Oracle ZDM (Zero Downtime Migration), una herramienta que permite migrar bases de datos Oracle (de diversas versiones) desde un Datacenter hacia diversos servicios de Oracle Database disponibles en Oracle Cloud, en este caso sin tiempos de downtime!
Esta ultima versión de Oracle Zero Downtime Migration ahora permite realizar migraciones lógicas sin Downtime, lo que se suma a la opción preexistente de realizar migraciones físicas.La nueva versión de la herramienta Oracle ZDM ahora es más pequeña y compacta. Los usuarios ya notarán la diferencia al descargar los binarios (menos de 800 MB). La instalación e implementación de ZDM también se ha optimizado permitiendo iniciar rápidamente el proceso de migración.
El punto de acceso para Oracle ZDM se encuentra disponible en este link. En el mismo se puede acceder a la documentación oficial, la información sobre las nuevas características de la versión 21c, así como a los links de descarga
A continuación mencionamos los puntos mas importantes de esta nueva versión
Migración Lógica
Desde la primera versión de ZDM es posible realizar una migración sin downtime (es decir, sin necesidad de detener el funcionamiento de la base de datos) mediante una copia física de la base de datos (como ser backup con RMAN) La versión 21c de ZDM ofrece la opción de realizar una migración lógica a Oracle Cloud en ocho sencillos pasos, que se pueden programar y monitorear según sea necesario. Estos pasos son:
- Descargar / Instalar ZDM e inicial la migración.
- Conectarse a un repositorio de backups (almacenamiento compartido entre Origen y Destino).
- ZDM configura Golden Gate para comenzar a registrar las transacciones realizadas en la base de datos.
- ZDM comienza un job de Data Pump Export en la base de datos origen.
- ZDM inicializa la base de datos destino y da comienzo a un job de Data Pump Import.
- ZDM configura Golden Gate en el destino y comienza a aplicar los cambios ocurridos en la base de datos de origen.
- Al terminar de sincronizar los datos, ZDM hace un switch a la base de datos destino.
- ZDM culmina el proceso de migración.
Se pueden realizar dos tipos de migraciones lógicas (online y offline) y cada una de ellas tiene a su vez dos opciones:
- Migración Lógica Offline
- Metodología basada en Data Pump y Database Links
- Metodología basada en Data Pump y Backup Location
- Migración lógica Online
- Metodología basada en GoldenGate, Data Pump y Database Links
- Metodología basada en GoldenGate, Data Pump y Backup Location
Soporte de Exadata
Oracle ZDM 21c incluye Exadata Database Machine como nuevo destino de migración. Ahora es posible migrar bases de datos actuales a un servidor Exadata on Premise, aprovechando la automatización completa y el poder de ZDM. La migración a Exadata On-Premises solo se puede realizar a través del flujo de trabajo de migración física de ZDM.
Soporte de Autonomous Database
Oracle ZDM 21c ahora puede migrar bases de datos directamente a Autonomous Database utilizando cualquiera de los flujos de trabajo de migración lógica. Los objetivos admitidos son:
- Autonomous Transaction Processing (ATP) ya sea en modo compartido como dedicado.
- Autonomous Data Warehouse (ADW) ya sea en modo compartido como dedicado.
- Autonomous Database en Exadata Cloud at Client
Soporte de migración de no CDB a CDB
Con ZDM ahora es posible migrar de bases de datos no CDB a CDB tanto en migración física como lógica, brindando más flexibilidad de migración a través de un proceso de migración simplificado que incluye la conversión de no CDB a PDB y, por lo tanto, una selección más amplia de objetivos en la nube.
Asesor previo a la migración
Un asesor previo a la migración evalúa la base de datos de origen para determinar la compatibilidad de funciones se encuentra disponible en el flujo de trabajo de migración lógica. Esto permite prepararse mejor para su migración de base de datos.
Soporte para enlaces de bases de datos
La migración lógica de la base de datos ofrece la posibilidad de establecer Database Links entre el origen y el destino, evitando así la necesidad de una ubicación de respaldo como parte del flujo de trabajo de la migración. El soporte para enlaces de bases de datos es opcional, ya que también puede aprovechar una ubicación de respaldo como Object Storage, NFS o Recovery Appliance para su migración. La migración basada en enlaces de base de datos no es compatible con Autonomous Database Dedicated.
martes, 9 de marzo de 2021
Oracle 21c - Mejoras a Expresiones Calificadas
A partir de Oracle 21c se agregan tres nuevos tipos opciones de iterador para su uso en expresiones calificadas. El uso de expresiones calificadas mejora la claridad de los programas y la productividad del programador. Las mismas se encuentran disponibles desde Oracle 18c, incorporando nuevas funcionalidades en Oracle 21c.
Algunas de estas mejoras están asociadas a otras mejoras PL/SQL, como ser las del iterador FOR .. LOOP que vimos en los dos artículos anteriores (parte #1 y parte #2)
Iteradores
Iterador por Indice
DECLARE TYPE TablaT IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;; vTablaT TablaT; BEGIN -- vTablaT := TablaT (FOR i in 2 .. 4 index i * 2 => i * 3); -- END;
Indice=4 Valor=6 Indice=6 Valor=9 Indice=8 Valor=12
Lo que hace el iterador es recorrer la lista de valores declaradas en la cláusula FOR (en nuestro caso, del 2 al 4) y asignarle al indice el resultado de "i * 2", y almacenar el valor "i * 3" en la colección. Como vemos, ambas expresiones pueden usar el valor del iterando "i".
En nuestro ejemplo usamos un array asociativo con valores numéricos, pero los mismos podrían ser de cualquier tipo de datos (varchar, date, etc.). Este iterador acepta la mayoría de las mejoras que se incorporaron en Oracle 21c al iterador FOR .. LOOP, como ser saltear valores, detenerse al llegar a una condición dada, o iterar en saltos distintos de 1, como mostramos a continuación:
DECLARE TYPE TablaT IS TABLE OF DATE INDEX BY PLS_INTEGER;; vTablaT TablaT; BEGIN -- vTablaT := TablaT (FOR i IN 1..10 BY 2 WHEN i > 5 INDEX i => SYSDATE + i); -- END;
Iterador por Secuencia
DECLARE TYPE TablaT IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;; vTablaT TablaT; BEGIN -- vTablaT := TablaT (FOR i in 2 .. 4 SEQUENCE => i * 3); -- END;
Indice=1 Valor=6 Indice=2 Valor=9 Indice=3 Valor=12
La diferencia con el ejemplo anterior es que los índices en este caso se calcularon en forma automática con valores secuenciales comenzando por el 1, mientras que usamos el valor del iterador en la expresión que calcula el valor a almacenar en la colección.
Al igual que el iterador por indice, el iterador por secuencia permite el uso de la mayoría de las mejoras de Oracle 21c realizadas a FOR .. LOOP.
Iterador Básico
DECLARE TYPE TablaT IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;; vTablaT TablaT; BEGIN -- vTablaT := TablaT (FOR i in 2 .. 4 => i * 3); -- END;
Indice=2 Valor=6 Indice=3 Valor=9Indice=4 Valor=12
Notación Posicional para Array Asociativo
Adicionalmente a estos nuevos iteradores, Oracle 21c simplifica aun mas la asignación de valores a un array asociativo cuando no usamos iterador. A continuación veremos la evolución en las últimas versiones de Oracle.
Previo a Oracle 18c
DECLARE TYPE TablaT IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER;
vTablaT TablaT; BEGIN -- vTablaT(1) := 'Diez';
vTablaT(2) := 'Veinte';
vTablaT(3) := 'Treinta';
END; /
Oracle 18c
DECLARE TYPE TablaT IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER;
vTablaT TablaT; BEGIN -- vTablaT := TablaT(1 => 'Diez', 2 => 'Veinte', 3 => 'Treinta'); END; /
Oracle 21c
DECLARE TYPE TablaT IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER;
vTablaT TablaT; BEGIN -- vTablaT := TablaT('Diez', 'Veinte', 'Treinta');
END; /
Como vemos, en Oracle 21c no necesitamos indicar el valor del indice usando la notación posicional, el mismo es generado en forma automática comenzando con 1.
Links
Recomendamos leer la documentación oficial de Oracle para tener un mejor conocimiento de estas nuevas características.
lunes, 8 de marzo de 2021
Oracle 21c - Mejoras al iterador FOR LOOP - Parte #2
Control de Iteraciones de Colecciones
Uso de VALUES OF
DECLARE TYPE TablaT IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER; vTabla TablaT; BEGIN vTabla(15) := 10;
vTabla(40) := 20;
vTabla(68) := 30;
FOR NumVar IN VALUES OF vTabla LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP; END; / Soy el numero 10 Soy el numero 20 Soy el numero 30 PL/SQL procedure successfully completed. SQL>
Uso de INDICES OF
DECLARE TYPE TablaT IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER; vTabla TablaT; BEGIN vTabla(15) := 10;
vTabla(40) := 20;
vTabla(68) := 30;
FOR NumVar IN INDICES OF vTabla LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP; END; / Soy el numero 15 Soy el numero 40 Soy el numero 68 PL/SQL procedure successfully completed. SQL>
Uso de PAIRS OF
DECLARE TYPE TablaT IS TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER; vTabla TablaT; BEGIN vTabla(15) := 'Quince';
vTabla(40) := 'Cuarenta';
vTabla(68) := 'Sesenta y Ocho';
FOR NumVar, TextVar IN PAIRS OF vTabla LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar) || ' que sería ' || TextVar); END LOOP; END; / Soy el numero 15 que sería Quince Soy el numero 40 que sería Cuarenta Soy el numero 68 que sería Sesenta y Ocho
PL/SQL procedure successfully completed. SQL>
viernes, 5 de marzo de 2021
Oracle 21c - Mejoras al iterador FOR LOOP - Parte #1
BEGIN
FOR NumVar IN 10 .. 12 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 10
Soy el numero 11
Soy el numero 12
PL/SQL procedure successfully completed.
SQL>BEGIN
FOR NumVar IN REVERSE 10 .. 12 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 12
Soy el numero 11
Soy el numero 10
PL/SQL procedure successfully completed.
SQL>Lo nuevo en Oracle 21c
Iteración de valor único
BEGIN
FOR NumVar IN 20 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 20
PL/SQL procedure successfully completed.
SQL>BEGIN
FOR NumVar IN 2, REPEAT NumVar * 3 WHILE NumVar < 100 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 2
Soy el numero 6
Soy el numero 18
Soy el numero 54
PL/SQL procedure successfully completed.Iteraciones Múltiples
BEGIN
FOR NumVar IN 2 .. 4, REVERSE 6 .. 8, 15 .. 16 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 2
Soy el numero 3
Soy el numero 4
Soy el numero 8
Soy el numero 7
Soy el numero 6
Soy el numero 15
Soy el numero 16
PL/SQL procedure successfully completed.Iteraciones por rango con salto definido por el usuario
BEGIN
FOR NumVar IN 2 .. 6 BY 2, REVERSE 2 .. 6 BY 2 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 2
Soy el numero 4
Soy el numero 6
Soy el numero 6
Soy el numero 4
Soy el numero 2
PL/SQL procedure successfully completed.Iteraciones por rango con salto decimal definido por el usuario
BEGIN
FOR NumVar NUMBER(4,1) IN 2.3 .. 4.3 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 2.3
Soy el numero 3.3
Soy el numero 4.3
PL/SQL procedure successfully completed.BEGIN
FOR NumVar NUMBER(4,1) IN 2.3 .. 4.3 BY 0.4 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 2.3
Soy el numero 2.7
Soy el numero 3.1
Soy el numero 3.5
Soy el numero 3.9
Soy el numero 4.3
PL/SQL procedure successfully completed.Salteando valores y deteniendo las iteraciones
BEGIN
FOR NumVar IN 3 .. 10 WHEN MOD(NumVar,2) = 0 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 4
Soy el numero 6
Soy el numero 8
Soy el numero 10
PL/SQL procedure successfully completed.BEGIN
FOR NumVar IN 4 .. 20 WHILE NumVar * NumVar < 100 LOOP
dbms_output.put_line('Soy el numero ' || TO_CHAR(NumVar));
END LOOP;
END;
/
Soy el numero 4
Soy el numero 5
Soy el numero 6
Soy el numero 7
Soy el numero 8
Soy el numero 9
PL/SQL procedure successfully completed.Lo que sigue
jueves, 4 de marzo de 2021
Actualización - Características de Oracle 21c incluidas en Oracle 19c
En los últimos días se conocieron algunas de las características de Oracle 21c que fueron incluidas (backported) en Oracle 19c. Esto se debe a que Oracle 19c es la version de Long Term Support actual (para conocer mas en detalle que implica cada ser Long Term Support, pueden ver mi articulo "Innovation Release vs Long Term Support Release"), por lo que gran parte de la base instalada se mantendrá en esa versión por varios años.
A continuación revisaremos aquellas que ya se encuentran disponibles.
SQL Macros
Parte de esta característica de Oracle 21c (SQL Macros para expresiones de tipo tabla) fue incluida en Oracle 19c, en su version 19.6 y posteriores.
Fuente: SQL Macros in Oracle Database 21c
Estadísticas de Optimizador en Tiempo Real
Esta característica de Oracle 21c fue incluida en Oracle 19c, en su version 19.10 y posteriores.
Tablas Blockchain
Fuente: Why Oracle Implement Blockchain in the Database / Blockchain Tables in Oracle Database 21c
Tablas Inmutables
Esta característica de Oracle 21c fue incluida en Oracle 19c, en su version 19.11 y posteriores.
Fuente: Why Oracle Implement Blockchain in the Database
Otras Características que Pueden ser Incluidas en Oracle 19c
La siguiente es una lista de otras características de Oracle 21c que pueden ser incluidas en Oracle 19c en el corto plazo:
- Memoria Persistente.
- Mejoras a InMemory.
- Mejoras a JSON (internamente el tipo de dato OSON ya existe, por lo que no seria complicado inplementarlo).
miércoles, 3 de marzo de 2021
Oracle 21c - Usando Expresiones en Parámetros de Inicialización
En el artículo "¿Qué hay de nuevo en Oracle 21c?" publicado en diciembre del año pasado, mencionamos algunas de las mejoras y nuevas características de Oracle 21. En este y en próximos artículos vamos a ver en detalle lo que Oracle 21c trae de nuevo, comenzando con la posibilidad de usar expresiones en la definición de los parámetros de inicialización (ya sea en initXXX.ora o SPFile).
Usando Variables de Entorno en Parámetros de Inicialización
SQL> ALTER SYSTEM SET db_recovery_file_dest='$RECO' SCOPE=BOTH; System altered. SQL> SHOW PARAMETER db_recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ---------------------------- db_recovery_file_dest string $RECO db_recovery_file_dest_size big integer 250G
SQL> create pfile='/tmp/pfile.txt' from spfile; File created. SQL> host fgrep db_recovery_file_dest /tmp/pfile.txt
*.db_recovery_file_dest='$RECO'
SQL>
Usando otros Parámetros en Parámetros de Inicialización
SQL> show parameter processes NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 db_writer_processes integer 1 gcs_server_processes integer 0 global_txn_processes integer 1 job_queue_processes integer 40 log_archive_max_processes integer 4 processes integer 600 SQL>
SQL> alter system set log_archive_max_processes='processes/10'; System altered. SQL>
SQL> show parameter log_archive_max_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 60
SQL>SQL> create pfile='/tmp/pfile.txt' from spfile; File created. SQL> host fgrep log_archive_max_processes /tmp/pfile.txt
*.log_archive_max_processes=processes/10
SQL>
Consideraciones generales
Estas son algunas consideraciones adicionales cuando usamos expresiones en parámetros de inicialización:
- Las expresiones deben estar dentro de comillas simples al momento de usarlas en una sentencia ALTER SYSTEM or ALTER SESSION.
- Las expresiones pueden ser usadas tanto en archivos de tipo PFile (parámetros estáticos) como en archivos de parámetros dinámicos de tipo SPFile.
- Se pueden usar dos funciones adicionales, MAX y MIN, que permiten elegir el valor mayor o menor (según el caso) entre dos valores. Esto es útil cuando debemos fijar un valor mínimo. Por ejemplo, la expression MIN(40,PROCESSES) devolverá 40 cuando el parámetro PROCESSES es mayor a 40, o el valor de PROCESSES cuando sea menor a 40.
Para mas ejemplos y practica, podemos consultar el artículo "Practice: Using Expressions in Initialization Parameters" en la documentación de Oracle 21, en la sección "Learning Database New Features".




















