jueves, 11 de julio de 2024

Reducir el tamaño de tablespace BIGFILE en Oracle 23ai

Hace unas semanas, en el artículo "Tablespaces BIGFILE por Defecto en Oracle 23ai" discutimos un cambio en Oracle Database 23ai, donde los tablespaces creados por los usuarios son por defecto de tipo BIGFILE. Ahora vamos a ver una importante mejora en Oracle 23ai que nos permite reducir el tamaño de los tablespaces BIGFILE cuando se ha liberado espacio en los mismo, por más que el espacio no esté al final del tablespace, como ocurría anteriormente.


Preparación del Escenario


Llenando el Tablespace

En este caso, nos conectamos a una base de datos Oracle 23ai y creamos un tablespace de tipo BIGFILE con la siguiente sintaxis:

CREATE TABLESPACE SHRINKTBSP DATAFILE 'SHRINK_.dbf' SIZE 10M AUTOEXTEND ON;

Como explicamos en el articulo mencionado anteriormente, en Oracle 23ai no es necesario especificar BIGFILE al momento de crear tablespace ya que por defecto es el nuevo formato. Esto lo podemos validar rápidamente con la siguiente consulta:

SELECT t.tablespace_name, t.bigfile, d.blocks FROM dba_tablespaces t JOIN dba_data_files d ON d.tablespace_name = t.tablespace_name WHERE t.tablespace_name = 'SHRINKTBSP';

Podemos ver que el tamaño del tablespace es de 1280 bloques de 8 kilobytes. 

A continuación, vamos a crear una tabla "t1" con un tamaño considerable, para ello haremos un producto cartesiano sobre la vista DBA_SEGMENTS del diccionario de datos:

CREATE TABLE t1 TABLESPACE SHRINKTBSP AS SELECT s.* FROM dba_segments s CROSS JOIN dba_segments x;

Esta tabla ocupa aproximadamente 2,5 gigabytes. Luego creamos una segunda tabla llamada "t2" con un script similar pero con un tamaño menor, cercano a los 200 megabytes:

CREATE TABLE t2 TABLESPACE SHRINKTBSP AS SELECT s.* FROM dba_segments s CROSS JOIN dba_sequences q;

Una vez creadas ambas tablas, vamos a consultar nuevamente el tamaño total del tablespace (agregamos al número de bloques el tamaño en megabytes):

SELECT t.tablespace_name, t.bigfile, d.blocks, ROUND(d.bytes / 1024 / 1024 ) AS MBytes FROM dba_tablespaces t JOIN dba_data_files d ON d.tablespace_name = t.tablespace_name WHERE t.tablespace_name = 'SHRINKTBSP';

Podemos ver que el tablespace creció de 10 megabytes a más de 3000. De ese espacio, podemos ver cuanto se encuentra libre con la siguiente sentencia:

SELECT f.tablespace_name, ROUND(f.bytes / 1024 / 1024 ) AS MBytes
FROM dba_free_space f
WHERE f.tablespace_name = 'SHRINKTBSP';

Rápidamente podemos confirmar que de los 3000 MB del tablespace, sólo algo mas de 50 se encuentran libres y el resto ocupado.


Liberando Espacio en el Tablespace

A continuación, vamos a liberar espacio en el tablespace al truncar la tabla "t1" (la cual fue creada primero):

TRUNCATE TABLE t1;

Esta operación elimina los datos de la tabla "t1", dejando unos 2500 megabytes de espacio libre en el medio del datafile. Podemos verificar esto ejecutando nuevamente las consultas que nos muestran el tamaño del tablespace (que no varió) y el espacio libre en el mismo:

Vemos que ahora tenemos seis chunks de espacio libre en vez de dos, los cuales suman más de 2500 megabytes.

Y por último, corroboramos a nivel sistema operativo el tamaño del datafile:


Achicando el Tablespace con SHRINK


Estimando el Espacio Libre

El primer paso para "recuperar" ese espacio libre y achicar el tablespace, es estimar el espacio que puede ser recuperado. Para ello utilizamos la siguiente sentencia:

execute dbms_space.shrink_tablespace('SHRINKTBSP',shrink_mode => DBMS_SPACE.TS_MODE_ANALYZE);

El informe nos indica que el tablespace tiene un único objeto que ocupa 0,2 gigabytes que es movible, esto significa que pueden ser movidos desde el final del archivo al principio del mismo, para luego poder achicar el tablespace. El tamaño actual es de 2.5 gigabytes, y el tamaño estimado final puede ser reducido a menos de medio gigabyte (0,46).

Esto en la práctica implica mover todos los datos de la tabla "t2" del lugar actual en el tablespace al lugar que quedó libre al truncar la tabla "t1", achicando luego el tablespace. Si hubiera objetos que no pueden ser movidos, eso es informado en este paso.


Moviendo los Objetos y Achicando el Tablespace

Para mover los objetos y reducir el tamaño del tablespace, debemos ejecutar la siguiente sentencia:

execute dbms_space.shrink_tablespace('SHRINKTBSP');

A diferencia de la estimación, la cual es una tarea muy rápida que llevó menos de un segundo, el reducir el tablespace implica mover los datos desde el final del datafile al comienzo del mismo, por lo que puede requerir un tiempo de ejecución más elevado.

Podemos ver que el proceso movió unos 200 megabytes de datos desde el final del archivo al comienzo del mismo, y luego redujo en tamaño del archivo pasando de 3 gigabytes a unos 300 megabytes, lo cual confirmamos con el mismo script que usábamos para ver el tamaño del tablespaces:

Como así también a nivel sistema operativo:


Consideraciones

Tablespace SYSAUX

Como en Oracle Database 23ai el tablespace SYSAUX es de tipo BIGFILE, ahora podemos reducir su tamaño en forma sencilla luego de depurar tablas, sin necesidad de mover los objetos entre tablespaces.

Online vs Offline

Por defecto el procedimiento trata de mover todos los objetos ONLINE. Si alguno de los objetos no lo permite, esto genera un error. Usando la opción "TS_MODE_SHRINK_FORCE" podemos hacer que si una operación de mover datos falla en modo online, el proceso reintente la misma en forma offline.

Documentación

Recomendamos leer la documentación sobre el procedimiento DBMS_SPACE.SHRINK_TABLESPACE para entender todas las características de su funcionamiento.

martes, 9 de julio de 2024

APEX 24.1 Patchset Bundle #2 ya está disponible!

Este conjunto de patchs agrupado bajo el número de patch 36695709 fue liberado hace unas pocas horas, y está disponible sólo desde la página de soporte de Oracle en este link. Una vez aplicado el patchset, la versión de APEX es actualizada a 24.1.2

Este patchset será aplicado automáticamente a las instancias de APEX de Oracle Autonomous Database en Oracle Cloud que ya estén usando APEX 24.1.

Se puede consultar la lista de las correcciones incluidas en el patchset bundle en este link.

Oracle APEX 24.1 está disponible desde el 17 de Junio (lo anunciamos en el artículo "APEX 24.1 Disponible en Oracle Cloud y para descargar!!!") y puede ser descargada desde la página de descargas de Oracle APEX.


lunes, 1 de julio de 2024

Resumen de Mejoras del 2º Trimestre de 2024 a Oracle Autonomous Database

Este segundo trimestre fue muy activo a nivel mejoras en Autonomous Database, vamos a ver las mas importantes de ellas.

Mejoras de Abril de 2024

Acceso a Base de Datos Autónoma para Oracle Cloud Operators

Las personas que trabajan en Oracle Cloud (Cloud Operators) no tienen acceso a los datos de una base de datos autónoma. Si se requiere otorgar permisos para que puedan acceder a los esquemas, se puede hacer indicando un tiempo limite, tras el cual el permiso se revoca automáticamente

Para ver más detalles se puede consultar la documentación oficial.


Tablas Externas a Partir de Archivos Apache Iceberg

Se puede utilizar archivos Apache Iceberg, residentes tanto en AWS como en OCI Object Storage, para que sean el origen de tablas externas.

Para ver más detalles se puede consultar la documentación oficial.


Cloud Tables

Se pueden crear Cloud Tables sin que los datos de la misma consuman almacenamiento en la base de datos autónoma, alojando las mismas en OCI Cloud Storage. Esto es muy util para almacenar información de logs, diagnostico, etc. etc.

Para ver más detalles se puede consultar la documentación oficial.


Live Data Sharing con Database Actions

Se puede usar Data Share para compartir datos online con otras bases de datos autónomas de la misma región. Quien consuma estos recursos siempre tiene acceso a la ultima versión confirmada de los datos.

Para ver más detalles se puede consultar la documentación oficial.


Nueva Versión de Oracle Autonomous Database Free Container

Una versión actualizada del contenedor fue publicada, permitiendo acceder a las ultimas actualizaciones. Este contenedor permite correr ADB en un entorno propio, sin necesidad de acceder a Oracle Cloud Infrastructure o ni siquiera a internet.

Para ver más detalles se puede consultar la documentación oficial.


Cloud Link entre Múltiples Regiones

Ahora es posible usar Cloud Linkes entre una base de datos autónoma ubicada en una región, y otras regiones que contengan clones refrescables de la base de datos original.

Para ver más detalles se puede consultar la documentación oficial.


Validar un Próximo Patch Utilizando Workload Auto Replay

Utilizando la funcionalidad de Workload Auto Replay, es posible capturar la carga de trabajo de una base de datos de producción y aplicar la misma a un clon refrescable que tenga aplicado un patch superior. Esto permite validar que cuando se aplique el patch a la base de datos de producción no nos encontraremos con problemas inesperados!

Para ver más detalles se puede consultar la documentación oficial.


Permisos de Clonado

Es posible controlar y limitar las operaciones de clonado de Bases de Datos Autónomas mediante el uso de permisos de IAM (Identity and Access Management). Los nuevos permisos son:

  • CLONE-FULL: Permite sólo el clonado completo de la base de datos.
  • CLONE-METADATA: Permite sólo el clonado de los metadatos de la base de datos.
  • CLONE-REFRESHABLE: Permite sólo el clonado de tipo refrescable.
  • CLONE*: Permite todo tipo de clonado.

Para ver más detalles se puede consultar la documentación oficial.


Actualizaciones a Data Studio

Data Studio incorpora muchos cambios:

  • Panel de carga de datos: Un nuevo panel de carga de datos que muestra resúmenes de los trabajos de carga recientes y su estado y muestra detalles sobre los datos que carga.


Mejoras de Mayo de 2024

Permitir Distintas ACL en un Peer de Disaster Recovery Ubicado en otra Región

Puede modificar de forma independiente las ACL de red en una base de datos Peer de recuperación ante desastres remota.

Para ver más detalles se puede consultar la documentación oficial.


Múltiples Peer de Disaster Recovery en Regiones Distintas

Con el modelo de facturación ECPU es posible crear una o más bases de datos Standby entre regiones para Autonomous Data Guard, y también crear múltiples Peers de recuperación ante desastres utilizando la funcionalidad de Backup entre regiones.

Para ver más detalles se puede consultar la documentación oficial.


Table Format con PAR URLs

Es posible acceder a  URL de PAR (Pre Authenticated Request) con un navegador y ver los datos devueltos en formato de tabla.

Para ver más detalles se puede consultar la documentación oficial.


Acceso IAM para Usuarios de Distintos Tenancy

Es posible acceder a una base datos autónoma con usuarios de distintas Tenancy mediante Identity and Access Management (IAM). Sólo se requiere se requiere información sobre la otra Tenancy (para asignaciones y solicitudes de tokens) y se requiere una política entre ambos arrendamientos para permitir acceso cruzado a la base de datos.


Para ver más detalles se puede consultar la documentación oficial.

Llamadas Externas con Wallet Administrado por el Cliente

Cuando su instancia de base de datos autónoma está en un endpoint privado, puede utilizar una billetera (wallet) administrada por el cliente en los procedimientos UTL_HTTP, DBMS_LDAP, UTL_SMTP o UTL_TCP. También puede utilizar una billetera administrada por el cliente cuando el Scheduler envía notificaciones por correo electrónico (SMTP) para varios eventos relacionados con trabajos del Scheduler.

Para ver más detalles se puede consultar la documentación oficial.


Nueva Documentación: Mejores Prácticas para Conexiones de Baja Latencia

Este documento proporciona información sobre los pasos que puede seguir para reducir la latencia de las conexiones entre una aplicación y una base de datos autónoma.


Oracle Database 23ai Disponible en Always Free

Las instancias Always Free pueden crearse utilizando la última versión de Oracle Database: Oracle Database 23ai. La versión Oracle Database 19c sigue disponible para aquellos que así lo deseen hacer.

Como medida excepcional, si se posee una base de datos Always Free 21c, es posible crear una tercer instancia con la versión 23ai para migrar de la base 21c a la nueva instancia 23ai, tal como se explica en este documento.

Nota: Oracle Database 23ai no está disponible todavía en todas las regiones.


Actualización a Imagen de Contenedor Gratuita de ADB con Oracle Database 23ai

Las versiones de Oracle Database disponibles para Oracle Autonomous Database Free Container Image son: Oracle Database 19c u Oracle Database 23ai.

Para ver más detalles se puede consultar la documentación oficial.


Mejoras de Junio de 2024

Oracle APEX 24.1

La base de datos autónoma utiliza Oracle APEX versión 24.1.


Acceso Público Permitido para ADB en un Endoint Privado

Cuando desee configurar una base de datos autónoma para utilizar un endpoint privado y también desee permitir conexiones desde IP públicas permitidas o VCN públicas, puede seleccionar la opción Permitir acceso público. Esto agrega un endpoint público para una base de datos que está configurada en un punto final privado.

Para ver más detalles se puede consultar la documentación oficial.


TCP Fast Open (TFO) para Conectar Clientes a ADB

Utilice conexiones TCP Fast Open (TFO) cuando su aplicación sea sensible a la latencia de la red y desee disminuir la latencia de la red entre su aplicación y la base de datos. Las conexiones TFO pueden mejorar el rendimiento de las aplicaciones al disminuir la latencia de la red para las conexiones de los clientes.

Para ver más detalles se puede consultar la documentación oficial.


Nueva de Documentación: Cargar Datos desde Google Cloud Storage

Este nuevo documento proporciona un ejemplo para cargar datos en una instancia de base de datos autónoma desde Google Cloud Storage.


Reducción de Almacenamiento para Tablas con Columnas LONG

Las operaciones de reducción de tamaño de la base de datos autónoma se realizarán correctamente para tablas que tengan columnas LONG.

Para ver más detalles se puede consultar la documentación oficial.


Cross Tenancy Autonomous Standby 

Puede agregar una base de datos Standby de Autonomous Data Guard en otro Tenancy. Esto crea una ADB Standby en un Tenancy diferente. Esta base de datos Standby puede estar en la misma región (local) o en una región diferente (entre regiones)

Para ver más detalles se puede consultar la documentación oficial.


Funciones de IA Espacial de Oracle para OML

Oracle Spatial AI es un conjunto de capacidades en OML4Py para detectar patrones y hacer predicciones a partir de datos geoespaciales. Incluye funciones para flujos de trabajo de un extremo a otro, incluidas canalizaciones espaciales de aprendizaje automático.

Para ver más detalles se puede consultar la documentación oficial.


Soporte de YouTube para DBLinks con Conectividad Heterogénea Administrada por Oracle

Utilice la conectividad heterogénea administrada por Oracle de ADB para crear enlaces de bases de datos a YouTube. Cuando utiliza enlaces de bases de datos con conectividad heterogénea administrada por Oracle, la base de datos autónoma y establece la conexión.

Para ver más detalles se puede consultar la documentación oficial.


Mejoras a Data Transform

Data Transforms se actualiza con nuevas características y cambios en las siguientes áreas:

  • Exportar e Importar Objetos: Puede mover objetos de Transformaciones de datos, como proyectos, conexiones, cargas de datos, flujos de datos, flujos de trabajo y programaciones desde un entorno de desarrollo a un entorno de producción.
  • Variables: Ahora puede crear variables y utilizarlas como pasos dentro de flujos de datos y flujos de trabajo.
  • Purgar Trabajos: Data Transforms le permite eliminar trabajos antiguos para mantener el repositorio limpio y optimizar el rendimiento.
  • Cargar vistas en servidores de destino: Además de las tablas, la carga de datos le permite cargar vistas desde el servidor de origen. Las vistas se almacenan como tablas en el servidor de destino.
  • Soporte para el nuevo formato de URL de Object Storage: Data Transforms incluye compatibilidad con el formato URL de Object Storage al crear una conexión de Object Storage.
  • Compatibilidad con OAuth 2.0 para conexiones NetSuite: Ahora puede utilizar la autenticación OAuth 2.0 para conectarse a fuentes de datos de Oracle NetSuite.


Autonomous Database 23ai Disponible para Cuentas Paga

La version 23ai de Oracle Database se encuentra disponible tanto para cuenta Free Tier como para cuentas pagas.


Detalles de uso de Elastic Group

Puede obtener un desglose detallado del uso de Elastic Group en el informe de uso de Oracle Cloud Infrastructure. Esta información también se muestra en la vista OCI_USAGE_DATA.

Para ver más detalles se puede consultar la documentación oficial.


Nueva Documentación: Reducir la Latencia de las Conexiones de Bases de Aatos con Autonomous Data Guard

Este documento proporciona información sobre los pasos a seguir para configurar un entorno Standby Autonomous Data Guard para reducir la latencia de las conexiones de bases de datos cuando se conecta después de una conmutación por error o después de una conmutación (cuando el modo de espera se convierte en el principal).


Mas flexibilidad en "Traiga su Propia Licencia" (BYOL)

Habilite la opción Límite BYOL ECPU para seleccionar la opción de licencia flexible BYOL. Cuando selecciona esta opción, establece un límite de BYOL ECPU para sus licencias BYOL y cualquier uso que supere el valor límite de BYOL ECPU se factura como uso incluido en la licencia.

Para ver más detalles se puede consultar la documentación oficial.


Automatice la creación de credenciales OCI mediante un script de Cloud Shell

Utilice Cloud Shell para ejecutar un script que cree credenciales nativas de OCI y tokens de autenticación en su base de datos autónoma.

Para ver más detalles se puede consultar la documentación oficial.


Como verán, la lista de mejoras es muy extensa! Es por eso que a partir de Julio voy a estar publicando este artículo en forma mensual en vez de trimestral, para que sea más dinámico y poder mantener la información al día!.