Blog

Noticias

Lanzamiento de Ora2Pg 23.2

Antananarivo, Madagascar – 8 de octubre de 2022

Lanzamiento de Ora2Pg 23.2

Tras su lanzamiento oficial, ya puede descargarse la versión 23.2 de Ora2Pg, una herramienta gratuita y fiable para la migración de bases de datos Oracle a PostgreSQL.

Esta versión corrige varios problemas reportados en los últimos ocho meses y añade nuevas importantes características y mejoras.

  • Añade la exportación del particionamiento de MySQL KEY y LINEAR KEY, traducido como particionamiento HASH.
  • Permite la exportación de objetos cuyo nombre contiene el signo de dólar.
  • Añade la exportación de restricciones CHECK para MySQL a partir de la versión 8.0.
  • Añade la exportación de índices funcionales y de expresión desde MYSQL.
  • Añade la exportación de columnas virtuales de MySQL.
  • Elimina los valores de escala y precisión de un elemento numérico si el valor de la escala es mayor que el de la precisión. PostgreSQL no admite atributos decimales/numéricos en los que el valor de la escala es explícitamente superior a la precisión.
  • Añade la opción de línea de comandos --drop_if_exists para añadir una sentencia que elimine los objetos existentes antes de su creación. Corresponde con la directiva de configuración DROP_IF_EXISTS.
  • Añade la opción -C | --cdc_file que permite cambiar el nombre del archivo predefinido utilizado para almacenar/leer el SCN de cada tabla durante la exportación. Por defecto es TABLES_SCN.log en el directorio actual. Se trata del archivo escrito por la opción --cdc_ready.
  • Añade un proceso múltiple para contar filas en las tablas de PostgreSQL (TEST_COUNT) utilizando la opción de línea de comandos -P.
  • Añade soporte para procedimientos de PostgreSQL 14 con parámetros de salida.
  • Establece la versión 14 de PostgreSQL como base de datos de destino por defecto.

Nuevas directivas de configuración:

  • Añade la directiva de configuración MVIEW_AS_TABLE y la opción de línea de comandos --mview_as_table para definir la vista materializada que se exportará como tabla. El valor por defecto es ninguna. El valor debe ser una lista de nombres de vistas materializadas o regexp separados por espacios o comas. Si el nombre del objeto es una vista materializada y el tipo de exportación es TABLE, la vista se exportará como una sentencia de creación de tabla. Si el tipo de exportación es COPY o INSERT, se exportarán los datos correspondientes.
  • Añade la variable de configuración FDW_IMPORT_SCHEMA para cambiar el nombre del esquema en el que se crearán las tablas foráneas para la migración de datos. Si se utilizan varias instancias de ora2pg para la migración de datos a través del conector de datos externo, puede ser necesario cambiar el nombre del esquema para cada instancia. Por defecto: ora2pg_fdw_import
  • Añade la directiva de configuración TRANSFORM_VALUE para utilizar una expresión al extraer datos de Oracle. Por ejemplo  TRANSFORM_VALUE CLOB_TABLE[CHARDATA:translate("CHARDATA", chr(0), ' ')] que sustituye todos los char(0) de una cadena de Oracle por un carácter de espacio.
  • Añade la directiva de configuración EXCLUDE_COLUMNS. A diferencia de MODIFY_STRUCT que se utiliza para redefinir la estructura de una tabla, esta directiva permite especificar una lista de columnas por tabla que deben ser excluidas de la exportación. Por ejemplo: EXCLUDE_COLUMNS T1(nocol1,nocol2) T2(nocol1,nocol2)
  • Añade una nueva directiva de configuración EXPORT_GTT para exportar la tabla temporal global de Oracle utilizando la sintaxis reconocida por la extensión pgtt. Para más información, consulten https://github.com/darold/pgtt. Por defecto, no se exportan las tablas temporales globales, ya que no son admitidas de forma nativa por PostgreSQL.
  • Añade la nueva opción de configuración NO_EXCLUDED_TABLE. Por defecto, Ora2Pg excluye de la exportación algunas tablas desechables de Oracle que nunca deberían incluirse en una exportación. Este comportamiento genera muchas expresiones REGEXP_LIKE que ralentizan la exportación a la hora de consultar las tablas. Para desactivar dicho comportamiento es necesario habilitar esta directiva, y excluir o limpiar posteriormente las tablas no deseadas. La regexp utilizada para excluir la tabla se define en el array @EXCLUDED_TABLES de lib/Ora2Pg.pm. Hay que tener en cuenta que este comportamiento es independiente de la directiva de configuración EXCLUDE.

Compatibilidad con versiones anteriores:

  • Fuerza la reescritura de todas las fechas inválidas que comienzan con el año cero 0000 en 1970-01-01 cuando se trata de un valor por defecto y NULL para los datos. El comportamiento anterior consistía en reemplazar únicamente la fecha 0000-00-00.
  • Hasta ahora se producían muchas llamadas no traducidas a TRUNC(date) puesto que Ora2Pg no podía detectar si el parámetro era una fecha o un número. El problema es que Oracle también tiene TRUNC(number) y Ora2Pg procura no aplicar la transformación en caso de duda. En la mayoría de las migraciones se encuentran muy pocos TRUNC(number) por lo que ahora todas las llamadas a TRUNC() se convertirán en date_trunc(). Aunque es necesario reescribir los falsos positivos, el trabajo debería ser netamente inferior respecto a la situación actual.