[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-announce
Subject:    Ora2Pg v23.1 released
From:       MigOps via PostgreSQL Announce <announce-noreply () postgresql ! org>
Date:       2022-02-14 16:24:41
Message-ID: 164485588119.23314.11740387334039691363 () wrigleys ! postgresql ! org
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Antananarivo, Madagascar - February 10, 2022

## Ora2Pg

Version 23.1 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 since past four months and
adds some new major features and improvements.

* Add use of greatest() / least() functions from new version of Orafce when
  required to return NULL on NULL input like Oracle.
* ALLOW and EXCLUDE configuration values can now be read from a file.
  This is useful if you have a lot of table to filter.
* Add possibility to use of System Change Number (SCN) for data export or
  data validation by providing a specific SCN.  It can be set at command
  line using the `-S` or `--scn` option. You can give a specific SCN or if =
you
  want to use the current SCN at first connection time set the value to
  'current'.  Example of use:<br />
  &nbsp;&nbsp;&nbsp;&nbsp;`ora2pg -c ora2pg.conf -t COPY --scn 16605281`
<br />
  You can also use the `--scn` option to use the Oracle flashback capabilit=
y by
  specifying a timestamp expression instead of a SCN. For example:<br />
  &nbsp;&nbsp;&nbsp;&nbsp;`ora2pg -c ora2pg.conf -t COPY --scn "TO_TIMESTAM=
P('2021-12-01 00:00:00', 'YYYY-MM-DD HH:MI:SS')"`
<br />
  or for example to only retrieve yesterday's data:<br />
  &nbsp;&nbsp;&nbsp;&nbsp;`ora2pg -c ora2pg.conf -t COPY --scn "SYSDATE - 1=
"`
<br />
* Add json output format to migration assessment.
* Add new TO_CHAR_NOTIMEZONE configuration directive to remove any timezone
  information into the format part of the TO_CHAR() function. Disabled by d=
efault.
  Note that the new default setting breaks backward compatibility, old beha=
vior
  was to always remove the timezone part.
* Add new configuration directive FORCE_IDENTITY_BIGINT. Usually identity
  column must be bigint to correspond to an auto increment sequence so
  Ora2Pg always force it to be a bigint. If, for any reason, you want
  Ora2Pg to respect the DATA_TYPE that was set for identity column then
  disable this directive.
* Allow to export only invalid objects when EXPORT_INVALID is set to 2
* Disable per partition data export when a WHERE clause is define on the
  partitioned table or that a global WHERE clause is defined.

There is also two new options to command ora2pg.

* New command line option `--lo_import`. By default Ora2Pg imports Oracle
  BLOB as bytea, the destination column is created using the bytea data
  type. If you want to use large object instead of bytea, just add the
  --blob_to_lo option to the ora2pg command. It will create the destination
  column with data type Oid and will save the BLOB as a large object using
  the lo_from_bytea() function. The Oid returned by the call to lo_from_byt=
ea()
  is inserted in the destination column instead of a bytea. This option can
  only be used with actions SHOW_COLUMN, TABLE and INSERT, action COPY is n=
ot
  supported.
  If you want to use COPY or have huge size BLOB ( > 1GB ) than can not be
  imported using lo_from_bytea() you can add option `--lo_import` to the
  ora2pg command. This will allow to import data in two passes:

  - 1) Export data using COPY or INSERT will set the Oid destination column
    for BLOB to value 0 and save the BLOB value into a dedicated file. It
    will also create a Shell script to import the BLOB files into the
    database using psql command \lo_import and to update the table Oid
    column to the returned large object Oid. The script is named
    lo_import-TABLENAME.sh
  - 2) Execute all scripts lo_import-TABLENAME.sh after setting the
    environment variables PGDATABASE and optionally PGHOST, PGPORT, PGUSER,
    etc. if they do not correspond to the default values for libpq.
    You might also execute manually a VACUUM FULL on the table to remove
    the bloat created by the table update.
<br />
<br />
  Limitation: the table must have a primary key, it is used to set the
  WHERE clause to update the Oid column after the large object import.
  Importing BLOB using this second method (`--lo_import`) is very slow so it
  should be reserved to rows where the BLOB > 1GB for all other rows use
  the option --blob_to_lo. To filter the rows you can use the WHERE
  configuration directive in ora2pg.conf.

* New command line option `--cdc_ready` to use current SCN per table when
  exporting data and register them into a file named TABLES_SCN.log This
  can be used for Change Data Capture (CDC) tools.

For a complete list of change see [https://github.com/darold/ora2pg/blob/ma=
ster/changelog](https://github.com/darold/ora2pg/blob/master/changelog)

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

## Links  & Credits

I would like to thank all users who submitted patches and users
who reported bugs and feature requests, they are all cited
the ChangeLog file.

Ora2Pg is an open project. Any contribution to build a better tool is
welcome. You just have to send your ideas, features requests or patches
using the GitHub tools or directly to ora2pg@darold.net.

Links:

- Website: [https://www.ora2pg.com/](https://www.ora2pg.com/)
- Download1: [https://github.com/darold/ora2pg/releases](https://github.com=
/darold/ora2pg/releases)
- Download2: [https://sourceforge.net/projects/ora2pg/](https://sourceforge=
.net/projects/ora2pg/)
- Development: [https://github.com/darold/ora2pg](https://github.com/darold=
/ora2pg)
- Changelog: [https://github.com/darold/ora2pg/blob/master/changelog](https=
://github.com/darold/ora2pg/blob/master/changelog)
- Documentation: [https://github.com/darold/ora2pg/blob/master/README](http=
s://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 into
PostgreSQL compatible code.

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

Docs, Download & Support at [http://www.ora2pg.com/](http://www.ora2pg.com/)
[Attachment #5 (text/html)]

<!doctype html>
<html>
  <head>
    <meta name="viewport" content="width=device-width">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Ora2Pg v23.1 released</title>
    <style>

    @media only screen and (max-width: 620px) {
      table[class=body] h1 {
        font-size: 28px !important;
        margin-bottom: 10px !important;
      }
      table[class=body] p,
            table[class=body] ul,
            table[class=body] ol,
            table[class=body] td,
            table[class=body] span,
            table[class=body] a {
        font-size: 16px !important;
      }
      table[class=body] .wrapper,
            table[class=body] .article {
        padding: 10px !important;
      }
      table[class=body] .content {
        padding: 0 !important;
      }
      table[class=body] .container {
        padding: 0 !important;
        width: 100% !important;
      }
      table[class=body] .main {
        border-left-width: 0 !important;
        border-radius: 0 !important;
        border-right-width: 0 !important;
      }
      table[class=body] .btn table {
        width: 100% !important;
      }
      table[class=body] .btn a {
        width: 100% !important;
      }
      table[class=body] .img-responsive {
        height: auto !important;
        max-width: 100% !important;
        width: auto !important;
      }
    }

    @media all {
      .ExternalClass {
        width: 100%;
      }
      .ExternalClass,
            .ExternalClass p,
            .ExternalClass span,
            .ExternalClass font,
            .ExternalClass td,
            .ExternalClass div {
        line-height: 100%;
      }
      .apple-link a {
        color: inherit !important;
        font-family: inherit !important;
        font-size: inherit !important;
        font-weight: inherit !important;
        line-height: inherit !important;
        text-decoration: none !important;
      }
      #MessageViewBody a {
        color: inherit;
        text-decoration: none;
        font-size: inherit;
        font-family: inherit;
        font-weight: inherit;
        line-height: inherit;
      }
      .btn-primary table td:hover {
        background-color: #34495e !important;
      }
      .btn-primary a:hover {
        background-color: #34495e !important;
        border-color: #34495e !important;
      }
    }
    </style>
  </head>
  <body class="" style="background-color: #f6f6f6; font-family: sans-serif; \
-webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; margin: 0; \
padding: 0; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;">  <table \
border="0" cellpadding="0" cellspacing="0" class="body" style="border-collapse: \
separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \
background-color: #f6f6f6;">  <tr>
        <td style="font-family: sans-serif; font-size: 14px; vertical-align: \
top;">&nbsp;</td>  <td class="container" style="font-family: sans-serif; font-size: \
14px; vertical-align: top; display: block; Margin: 0 auto; max-width: 580px; padding: \
                10px; width: 580px;">
          <div class="content" style="box-sizing: border-box; display: block; Margin: \
0 auto; max-width: 580px; padding: 10px;">


            <span class="preheader" style="color: transparent; display: none; height: \
0; max-height: 0; max-width: 0; opacity: 0; overflow: hidden; mso-hide: all; \
visibility: hidden; width: 0;"></span>  <table class="main" style="border-collapse: \
separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background: \
#ffffff; border-radius: 3px;">


              <tr>
                <td class="wrapper" style="font-family: sans-serif; font-size: 14px; \
                vertical-align: top; box-sizing: border-box; padding: 20px;">
                  <table border="0" cellpadding="0" cellspacing="0" \
style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; \
width: 100%;">  <tr>
                      <td style="font-family: sans-serif; font-size: 14px; \
vertical-align: top;">

<div>
<h1 style="color: #000; font-family: sans-serif; line-height: 1.4; margin: 0; \
margin-bottom: 30px; font-size: 25px; font-weight: 300; text-align: center">Ora2Pg \
v23.1 released</h1> </div>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Antananarivo, Madagascar - February 10, 2022</p> <h2 \
style="color: #000; font-family: sans-serif; font-weight: 400; line-height: 1.4; \
margin: 0; margin-bottom: 30px">Ora2Pg</h2> <p style="font-family: sans-serif; \
font-size: 14px; font-weight: normal; margin: 0; margin-bottom: 15px">Version 23.1 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.</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">This release fix several issues reported since past four months \
and adds some new major features and improvements.</p>
<ul style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px">Add \
use of greatest() / least() functions from new version of Orafce when  required to \
return NULL on NULL input like Oracle.</li> <li style="list-style-position: inside; \
margin-left: 5px">ALLOW and EXCLUDE configuration values can now be read from a file. \
This is useful if you have a lot of table to filter.</li> <li \
style="list-style-position: inside; margin-left: 5px">Add possibility to use of \
System Change Number (SCN) for data export or  data validation by providing a \
specific SCN.  It can be set at command  line using the <code>-S</code> or \
<code>--scn</code> option. You can give a specific SCN or if you  want to use the \
current SCN at first connection time set the value to  'current'.  Example of \
use:<br/>  &nbsp;&nbsp;&nbsp;&nbsp;<code>ora2pg -c ora2pg.conf -t COPY --scn \
16605281</code> <br/>
  You can also use the <code>--scn</code> option to use the Oracle flashback \
capability by  specifying a timestamp expression instead of a SCN. For example:<br/>
  &nbsp;&nbsp;&nbsp;&nbsp;<code>ora2pg -c ora2pg.conf -t COPY --scn \
"TO_TIMESTAMP('2021-12-01 00:00:00', 'YYYY-MM-DD HH:MI:SS')"</code> <br/>
  or for example to only retrieve yesterday's data:<br/>
  &nbsp;&nbsp;&nbsp;&nbsp;<code>ora2pg -c ora2pg.conf -t COPY --scn "SYSDATE - \
1"</code> <br/></li>
<li style="list-style-position: inside; margin-left: 5px">Add json output format to \
migration assessment.</li> <li style="list-style-position: inside; margin-left: \
5px">Add new TO_CHAR_NOTIMEZONE configuration directive to remove any timezone  \
information into the format part of the TO_CHAR() function. Disabled by default.  \
Note that the new default setting breaks backward compatibility, old behavior  was to \
always remove the timezone part.</li> <li style="list-style-position: inside; \
margin-left: 5px">Add new configuration directive FORCE_IDENTITY_BIGINT. Usually \
identity  column must be bigint to correspond to an auto increment sequence so
  Ora2Pg always force it to be a bigint. If, for any reason, you want
  Ora2Pg to respect the DATA_TYPE that was set for identity column then
  disable this directive.</li>
<li style="list-style-position: inside; margin-left: 5px">Allow to export only \
invalid objects when EXPORT_INVALID is set to 2</li> <li style="list-style-position: \
inside; margin-left: 5px">Disable per partition data export when a WHERE clause is \
define on the  partitioned table or that a global WHERE clause is defined.</li>
</ul>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">There is also two new options to command ora2pg.</p> <ul \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px">
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">New command line option <code>--lo_import</code>. By default \
Ora2Pg imports Oracle  BLOB as bytea, the destination column is created using the \
bytea data  type. If you want to use large object instead of bytea, just add the
  --blob_to_lo option to the ora2pg command. It will create the destination
  column with data type Oid and will save the BLOB as a large object using
  the lo_from_bytea() function. The Oid returned by the call to lo_from_bytea()
  is inserted in the destination column instead of a bytea. This option can
  only be used with actions SHOW_COLUMN, TABLE and INSERT, action COPY is not
  supported.
  If you want to use COPY or have huge size BLOB ( &gt; 1GB ) than can not be
  imported using lo_from_bytea() you can add option <code>--lo_import</code> to the
  ora2pg command. This will allow to import data in two passes:</p>
</li>
<li style="list-style-position: inside; margin-left: 5px">
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">1) Export data using COPY or INSERT will set the Oid destination \
column  for BLOB to value 0 and save the BLOB value into a dedicated file. It
    will also create a Shell script to import the BLOB files into the
    database using psql command \lo_import and to update the table Oid
    column to the returned large object Oid. The script is named
    lo_import-TABLENAME.sh</p>
</li>
<li style="list-style-position: inside; margin-left: 5px">
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">2) Execute all scripts lo_import-TABLENAME.sh after setting the  \
environment variables PGDATABASE and optionally PGHOST, PGPORT, PGUSER,  etc. if they \
do not correspond to the default values for libpq.  You might also execute manually a \
VACUUM FULL on the table to remove  the bloat created by the table update.
<br/>
<br/>
  Limitation: the table must have a primary key, it is used to set the
  WHERE clause to update the Oid column after the large object import.
  Importing BLOB using this second method (<code>--lo_import</code>) is very slow so \
it  should be reserved to rows where the BLOB &gt; 1GB for all other rows use
  the option --blob_to_lo. To filter the rows you can use the WHERE
  configuration directive in ora2pg.conf.</p>
</li>
<li style="list-style-position: inside; margin-left: 5px">
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">New command line option <code>--cdc_ready</code> to use current \
SCN per table when  exporting data and register them into a file named TABLES_SCN.log \
This  can be used for Change Data Capture (CDC) tools.</p>
</li>
</ul>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">For a complete list of change see <a \
href="https://github.com/darold/ora2pg/blob/master/changelog" style="color: #3498db; \
text-decoration: underline">https://github.com/darold/ora2pg/blob/master/changelog</a></p>
 <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Thanks to all contributors, they are all cited in the changelog \
file.</p> <h2 style="color: #000; font-family: sans-serif; font-weight: 400; \
line-height: 1.4; margin: 0; margin-bottom: 30px">Links  &amp; Credits</h2> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">I would like to thank all users who submitted patches and users \
who reported bugs and feature requests, they are all cited the ChangeLog file.</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Ora2Pg is an open project. Any contribution to build a better \
tool is welcome. You just have to send your ideas, features requests or patches
using the GitHub tools or directly to ora2pg@darold.net.</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Links:</p> <ul style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px"> <li style="list-style-position: \
inside; margin-left: 5px">Website: <a href="https://www.ora2pg.com/" style="color: \
#3498db; text-decoration: underline">https://www.ora2pg.com/</a></li> <li \
style="list-style-position: inside; margin-left: 5px">Download1: <a \
href="https://github.com/darold/ora2pg/releases" style="color: #3498db; \
text-decoration: underline">https://github.com/darold/ora2pg/releases</a></li> <li \
style="list-style-position: inside; margin-left: 5px">Download2: <a \
href="https://sourceforge.net/projects/ora2pg/" style="color: #3498db; \
text-decoration: underline">https://sourceforge.net/projects/ora2pg/</a></li> <li \
style="list-style-position: inside; margin-left: 5px">Development: <a \
href="https://github.com/darold/ora2pg" style="color: #3498db; text-decoration: \
underline">https://github.com/darold/ora2pg</a></li> <li style="list-style-position: \
inside; margin-left: 5px">Changelog: <a \
href="https://github.com/darold/ora2pg/blob/master/changelog" style="color: #3498db; \
text-decoration: underline">https://github.com/darold/ora2pg/blob/master/changelog</a></li>
 <li style="list-style-position: inside; margin-left: 5px">Documentation: <a \
href="https://github.com/darold/ora2pg/blob/master/README" style="color: #3498db; \
text-decoration: underline">https://github.com/darold/ora2pg/blob/master/README</a></li>
 </ul>
<hr/>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"><strong>About Ora2Pg</strong> :</p> <p style="font-family: \
sans-serif; font-size: 14px; font-weight: normal; margin: 0; margin-bottom: \
15px">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 into PostgreSQL \
compatible code.</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: \
normal; margin: 0; margin-bottom: 15px">Ora2Pg works on any platform and is available \
under the GPL v3 licence.</p> <p style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px">Docs, Download &amp; Support at \
<a href="http://www.ora2pg.com/" style="color: #3498db; text-decoration: \
underline">http://www.ora2pg.com/</a></p>

                      </td>
                    </tr>
                  </table>
                </td>
              </tr>

            </table>

            <div class="footer" style="clear: both; Margin-top: 10px; text-align: \
                center; width: 100%;">
              <table border="0" cellpadding="0" cellspacing="0" \
style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; \
width: 100%;">  <tr>
                  <td class="content-block" style="font-family: sans-serif; \
vertical-align: top; padding-bottom: 10px; padding-top: 10px; font-size: 12px; color: \
                #999999; text-align: center;">
                    <span class="apple-link" style="color: #999999; font-size: 12px; \
text-align: center;"> This email was sent to you from MigOps. It was delivered on \
their behalf by the PostgreSQL project. Any questions about the content of the \
message should be sent to MigOps.
</span>
		    <br><br>
You were sent this email as a subscriber of the <em>pgsql-announce</em> mailinglist, \
for the content tag Related Open Source.
To unsubscribe from
further emails, or change which emails you want to receive, please click the personal \
unsubscribe link that you can find in the headers of this email, or visit
<a href="https://lists.postgresql.org/unsubscribe/" style="color: #3498db; \
text-decoration: underline">https://lists.postgresql.org/unsubscribe/</a>.

                  </td>
                </tr>
              </table>
            </div>

          </div>
        </td>
        <td style="font-family: sans-serif; font-size: 14px; vertical-align: \
top;">&nbsp;</td>  </tr>
    </table>
  </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic