Release of Ora2Pg v19.0 - Mailing list pgsql-announce

From Gilles Darold
Subject Release of Ora2Pg v19.0
Date
Msg-id 346e9b93-f613-9609-cc11-aa8c184824b2@darold.net
Whole thread Raw
List pgsql-announce
Grenoble, France - August 18th, 2018

**Ora2Pg 19.0 released**

Version 19.0 of Ora2Pg, a free and reliable tool used to migrate an
Oracle database to PostgreSQL, has been officially released and is
publicly available for download.


This release fix several issues reported by users during last year.
It also adds several new features and configuration directives.

New features:

   * Add export of Oracle HASH partitioning when PG_SUPPORTS_PARTITION
     is enabled. This is a PostgreSQL 11 feature.
   * Add SUBTYPE translation into DOMAIN with TYPE and PACKAGE export.
   * Add automatic translation of
       KEEP (DENSE_RANK FIRST|LAST ORDER BY ...) OVER (PARTITION BY ...)
     into
       FIRST|LAST_VALUE(...) OVER (PARTITION BY ... ORDER BY ...).
    * Add PCTFREE to FILLFACTOR conversion when PCTFREE is upper than
      the default value: 10.
   * Replace DELETE clause not followed with FROM (optional in Oracle).
   * Remove Oracle extra clauses in TRUNCATE command.
   * Allow use of NUMBER(*) in DATA_TYPE directive to convert all
     NUMBER(*) into the given type whatever is the length. Ex:
         DATA_TYPE    NUMBER(*):bigint.
   * Add a PARALLEL hint to all Oracle queries used to migrate data.
   * Add export of Identity Columns from Oracle Database 12c.
   * Add translation of UROWID datatype and information in documentation
     about why default corresponding type OID will fail at data import.
   * Remove unwanted and unused keywords from CREATE TABLE statements:
     PARALLEL and COMPRESS.
   * Remove TEMPORARY in DROP statements.
   * Improve speed of escape_copy() function used for data export.
   * Add translation of Oracle functions NUMTOYMINTERVAL() and
     NUMTODSINTERVAL().
   * Add counting of jobs defined in Oracle scheduler in the migration
     assessment feature.
   * Add CSMIG in the list of Oracle default system schema
   * Fully rewrite data export for table with nested user defined types
     DBD::Oracle fetchall_arrayref() is not able to associate complex
     custom types to the returned arrays, changed this call to use
     fetchrow_array() also used to export BLOB.
   * QUERY export will now output translated queries as well as
     untranslated ones. This break backward compatibility, previously
     only translated query was dumped.
   * Auto detect UTF-8 input files to automatically use utf8 encoding.
   * Support translation of MySQL global variables.
   * Add translation of preprocessor in Oracle external table into
     program in foreign table definition. Allow translation of external
     table from file.
   * Add translation to NVL2() Oracle function.
   * Translate CONVERT() MySQL function.
   * Translate some form of GROUP_CONCAT() that was not translated.
   * Remove call to CHARSET in cast() function, replace it by COLLATE
     every where else. This must cover most of the cases but some
     specials use might not, so please reports any issue with this
     behavior.
   * Add -c | --config command line option to ora2pg_scanner to set
     custom configuration file to be used instead of ora2pg default:
     /etc/ora2pg/ora2pg.conf
   * Improve CONNECT BY and OUTER JOIN translation.
   * And lot of MySQL to PostgreSQL improvements.

Several new configuration directives have been added:

   * Add DEFAULT_PARALLELISM_DEGREE to control PARALLEL hint use
     when exporting data from Oracle. Default is disabled.
   * Make documentation about KEEP_PKEY_NAMES more explicit about
     kind of constraints affected by this directive.
   * Add PG_SUPPORTS_IDENTITY configuration directive to enable
     export of Oracle identity columns into PostgreSQL 10 feature.
     If PG_SUPPORTS_IDENTITY is disabled and there is IDENTITY column
     in the Oracle table, they are exported as serial or bigserial
     columns. When it is enabled they are exported as IDENTITY columns
     like:

           CREATE TABLE identity_test_tab (
                   id bigint GENERATED ALWAYS AS IDENTITY,
                   description varchar(30)
           ) ;

     If there is non default sequence option set in Oracle, they will
     be appended after the IDENTITY keyword. Additionally in both cases
     Ora2Pg will create a file AUTOINCREMENT_output.sql with a function
     to update the associated sequences with the restart value set to
     "SELECT max(colname)+1 FROM tablename". Of course this file must
     be imported after data import otherwise sequence will be kept to
     start value.
   * Add DISABLE_UNLOGGED configuration directive. By default Ora2Pg
     export Oracle tables with the NOLOGGING attribute into UNLOGGED
     tables. You may want to fully disable this feature because you
     will lost all data from unlogged table in case of PostgreSQL crash.
     Set it to 1 to export all tables as normal table. When creating a
     new migration project using --init_project, this directive is
     activated by default. This is not the case in the default
     configuration file for backward compatibility.
   * Add FORCE_SECURITY_INVOKER configuration directive. Ora2Pg use
     the function's security privileges set in Oracle and it is often
     defined as SECURITY DEFINER. To override those security privileges
     for all functions and use SECURITY DEFINER instead, enable this
     directive.
   * Add AUTONOMOUS_TRANSACTION in configuration to enable translation
     of autonomous transactions into a wrapper function using dblink
     or pg_background extension. If you don't want to use this feature
     and just want to export the function as a normal one without the
     pragma call, disable this directive.
   * Add documentation about COMMENT_SAVEPOINT configuration directive.
   * Major rewrite in PACKAGE parser to better support global variables
     detection. Global variable that have no default values are now
     always initialized to empty string in file global_variables.conf
     so that we see that they exists. This might not change the global
     behavior.

I especially want to thank Pavel Stehule and Eric Delanoe who spent
lot of time this year to help me to improve the PL/SQL to plpgsql
translation and also Krasiyan Andreev who help a lot to finalize
the MySQL to PostgreSQL migration features.

For a complete list of change see 
https://github.com/darold/ora2pg/blob/master/changelog

Thanks to all contributors, they are all cited in the changelog file.

Useful Links:

     - Website: http://www.ora2pg.com/
     - Download: http://sourceforge.net/projects/ora2pg/
     - Development: https://github.com/darold/ora2pg
     - Changelog: https://github.com/darold/ora2pg/blob/master/changelog
     - Documentation: https://github.com/darold/ora2pg/blob/master/README

About Ora2Pg :

Ora2Pg is an easy and reliable tool to migrate from Oracle to PostgreSQL.
It is developed since 2001 and can export most of the Oracle objects
(table, view, materialized view, tablespace, sequence, indexes, trigger,
grant, function, procedure, package, partition, data, blob and external
table).

Ora2Pg works on any platform and is available under the GPL v3 licence.

Docs, Download & Support at http://www.ora2pg.com/

-- 
Gilles Darold



pgsql-announce by date:

Previous
From: danap
Date:
Subject: Ajqvue v2.0 Released
Next
From: David Fetter
Date:
Subject: == PostgreSQL Weekly News - August 19 2018 ==