Blog

Noticias

Lanzamiento de Ora2Pg 24.0

Montreal, Canadá – 5 de julio de 2023

Ora2Pg

Ha sido lanzada oficialmente, y está disponible para su descarga, la versión 24.0 de Ora2Pg, una herramienta gratuita y confiable para la migración de bases de datos Oracle a PostgreSQL.

Esta versión principal añade soporte oficial para la migración de bases de datos SQL Server a PostgreSQL. También corrige varios problemas reportados en los últimos ocho meses y añade algunas nuevas características y mejoras.

  • Añadida la migración de SQL Server a Ora2Pg. La mayoría de los objetos de SQL Server son compatibles, así como la exportación de datos. La traducción de los procedimientos almacenados de TSQL a plpgsql es complicada debido a la falta de separador de sentencias en TSQL, aunque como siempre Ora2Pg está haciendo todo lo posible para realizar la mayor cantidad de trabajo posible. La evaluación de la migración también es posible con la base de datos SQL Server. Hay algunas directivas de configuración dedicadas añadidas a ora2pg.conf.
  • Habilita el uso de la directiva ALLOW/EXCLUDE con los informes SHOW_* y arroja un error fatal en caso de que se establezcan los filtros globales en ALLOW/EXCLUDE.
  • Añadida sustitución de DBMS_LOCK.SLEEP por pg_sleep.
  • División de los detalles de los costes estimados por función/procedimiento/función de paquete.
  • Añadidos cmin, cmax, ctid a la lista de palabras clave reservadas.
  • Añadido coste por la presencia de ADD CONSTRAINT en el código PLSQL. Necesita estabilidad de nombre de restricción.
  • Permite que los tipos de exportación COPY y TABLE utilicen la construcción NULLIF.
  • Añadido nuevo tipo de exportación SEQUENCE_VALUES para exportar el DDL y establecer los últimos valores de las secuencias en función de los últimos valores actuales de la base de datos Oracle, como en las siguientes sentencias: ALTER SEQUENCE departments_seq START WITH 290;
  • Añadida sustitución de la variable Oracle : varname que se convierte en :'varname' en Postgres.
  • Añadido soporte para MySQL PARTITION BY KEY() con traducción a una tabla particionada HASH utilizando la definición PK/UK de la tabla o las columnas especificadas en la cláusula KEY().
  • Hace que la directiva de configuración EXPORT_INVALID funcione con la exportación de TRIGGER. Hasta ahora los triggers deshabilitados no podían exportarse. Establecer EXPORT_INVALID a 1 forzará la exportación de triggers deshabilitados.
  • Añadido soporte para el valor por defecto generado por MySQL durante la actualización. Por ejemplo CREATE TABLE t1 ( dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); Ora2Pg traducirá esta sintaxis en un trigger en la tabla que forzará el valor de la columna en un evento de actualización.
  • Añadida traducción del tipo de datos ST_GEOMETRY al tipo de datos de geometría PostGis.
  • Se reemplaza ROWNUM en la lista de destino por la cláusula row_number() over ().

Nuevas directivas de configuración:

  • Añadida directiva de configuración CLOB_AS_BLOB para que, en la exportación de datos, los CLOB se traten como BLOB. Cuando está activada, Ora2Pg aplicará el mismo comportamiento tanto a los CLOB como a los BLOB con la configuración BLOB_LIMIT. Esta característica puede ser útil si se dispone de datos CLOB de gran tamaño. Activada por defecto.
  • Añadida la directiva de configuración ST_GEOMETRYTYPE_FUNCTION que permite establecer la función a utilizar para extraer el tipo de geometría de una columna ST_Geometry. Por defecto: ST_GeometryType. Por ejemplo, se debe establecer en sde.ST_GeometryType para ArcSDE.
  • Añadidas cuatro nuevas directivas de configuración que permiten cambiar o preconfigurar las funciones utilizadas para extraer información del objeto ST_Geometry y sus valores.
    • ST_SRID_FUNCTION: Función de Oracle que se utilizará para extraer la srid de la metainformación ST_Geometry. Por defecto: ST_SRID. Por ejemplo debe establecerse en sde.st_srid para ArcSDE.
    • ST_DIMENSION_FUNCTION: Función de Oracle que se utilizará para extraer la dimensión de la metainformación ST_Geometry. Por defecto: ST_DIMENSION. Por ejemplo, debe establecerse como sde.st_dimention para ArcSDE.
    • ST_ASBINARY_FUNCTION: Función de Oracle que se utilizará para convertir un valor ST_Geometry en formato WKB. Por defecto: ST_ASBINARY. Por ejemplo, debe establecerse como sde.st_asbinary para ArcSDE.
    • ST_ASTEXT_FUNCTION: Función de Oracle que se utilizará para convertir un valor ST_Geometry en formato WKT. Por defecto: ST_ASTEXT. Por ejemplo, debe establecerse como sde.st_astext para ArcSDE.
  • Añadida directiva de configuración INSERT_ON_CONFLICT. Cuando está activada, indica a Ora2Pg que añada una cláusula ON CONFLICT DO NOTHING a todas las sentencias INSERT generadas para este tipo de exportación de datos.

Retrocompatibilidad:

  • Cambia el comportamiento de CASE_INSENSITIVE_SEARCH para permitir el uso de una intercalación en lugar de la extensión citext. Para deshabilitar la característica se puede utilizar el valor none. Si la migración no es de MSSQL, esta función estará deshabilitada.
  • Elimina la directiva de configuración PREFIX_PARTITION, ahora reemplazada por la directiva RENAME_PARTITION. El comportamiento anterior era el de construir el nombre de la partición a partir del nombre de la tabla, del nombre de la partición y del nombre de la subpartición, si existía. El problema era que, a menudo, se alcanzaba la longitud máxima para un nombre de objeto, lo cual llevaba a duplicar el nombre de la partición. Ahora, cuando RENAME_PARTITION está activado las tablas de partición serán renombradas siguiendo las siguientes reglas:<tablename>_part<pos> siendo «pos» el número de la partición. Para la subpartición es: <tablename>_part<pos>_subpart<pos> Si se trata de la partición/subpartición por defecto: <tablename>_part_default <tablename>_part<pos>_subpart_default Este cambio anulará la retrocompatibilidad, si PREFIX_PARTITION sigue establecido, simplemente activará RENAME_PARTITION.
  • Establece el valor START en MINVALUE cuando se cicla una secuencia y el valor START es superior a MAXVALUE.

La lista completa de los cambios se encuentra en https://github.com/darold/ora2pg/blob/master/changelog

Enlaces y créditos

Se agradece a todos los usuarios que enviaron parches, reportaron errores o solicitaron características. Todos están citados en el archivo ChangeLog.

Ora2Pg es un proyecto abierto. Se agradece cualquier contribución que nos ayude a mejorar la herramienta. Pueden enviar sus ideas, solicitudes de características o parches a través de las herramientas de GitHub o directamente a  ora2pg@darold.net.

Enlaces:


Información sobre Ora2Pg:

Ora2Pg es una herramienta sencilla y fiable para migrar de Oracle a PostgreSQL. Desarrollada desde 2001, permite exportar la mayoría de los objetos de Oracle a un código compatible con PostgreSQL.

Ora2Pg funciona en cualquier plataforma y está disponible bajo licencia GPL v3.

Documentos, descargas y soporte son disponibles en http://www.ora2pg.com/

Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.