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
yTABLE
utilicen la construcciónNULLIF
. - 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áusulaKEY()
. - 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. EstablecerEXPORT_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ónBLOB_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áusulaON 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 directivaRENAME_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, cuandoRENAME_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, siPREFIX_PARTITION
sigue establecido, simplemente activaráRENAME_PARTITION
. - Establece el valor
START
enMINVALUE
cuando se cicla una secuencia y el valorSTART
es superior aMAXVALUE
.
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:
- Pagina web: https://www.ora2pg.com/
- Descargas: https://github.com/darold/ora2pg/releases
- Desarrollo: https://github.com/darold/ora2pg
- Changelog: https://github.com/darold/ora2pg/blob/master/changelog
- Documentación: https://github.com/darold/ora2pg/blob/master/README
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/