ODI Disaster Recovery using Autonomous Database with Data Guard

Eloi Lopes
4 min readApr 22, 2022

To configure ODI for Disaster Recovery (DR) we must make sure that the Software (ODI ) and the ODI Repositories (Database schemas stored on autonomous) are properly configured.

We are going to implement this solution:

Pre-requisites

  • Autonomous Database created in Primary Region;
  • Oracle Data Integrator (ODI) Marketplace created on Primary Region;

Enabling Data Guard (DG) on Autonomous Database

It’s very easy to enable data guard on Autonomous Database. You just need to click on Enable under Autonomous Database Details:

Just select the region and compartment where you want to create the Standby Autonomous. In my case, it is UK South (London).

After a couple of minutes, the Standby ADB it’s created in new region:

Configuring ODI for Disaster Recovery

I will start by configuring the ODI primary instance to use Autonomous Database with Data Guard (DG). That means, in case the autonomous database primary instance is down, ODI will connect to the autonomous database in London when the switchover is finished.

Downloading new ADB Wallet

Since the DG is enabled, download the new wallet. Upload the wallet into ODI Instance.

You should have a folder with the wallet name on /u01/oracle/mwh/wallets. In my case, is “wallet_ADWEloiprod”. Unzip the wallet into your folder and replace all files. Also, replace the wallet (zip file) in this directory. Make sure that has the same name. Otherwise, the connection on ODI it will file because can’t find the wallet file.

As you can see the zip file matches with the previous one, in this way the existing connections don’t need to be changed:

Editing the WORKREP

We need to edit the WORKREP connection to update the connecting string. Go to Topology > Repositories > Work Repositories and open the WORKREP. Click on “Connection Information”.

Update the JDBC URL with the new connection string:

Also, double check the property oracle.net.wallet_location is using the correct path to your wallet.

Example for JDBC:

jdbc:oracle:thin:@(description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=<example>_adweloiprod_low.adb.oraclecloud.com))(security=(ssl_server_cert_dn=”CN=adwc.eucom-central-1.oraclecloud.com, OU=Oracle BMCS FRANKFURT, O=Oracle Corporation, L=Redwood City, ST=California, C=US”))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.uk-london-1.oraclecloud.com))(connect_data=(service_name=<example>_adweloiprod_low.adb.oraclecloud.com))(security=(ssl_server_cert_dn=”CN=adwc.eucom-central-1.oraclecloud.com, OU=Oracle BMCS FRANKFURT, O=Oracle Corporation, L=Redwood City, ST=California, C=US”))))

Example for oracle.net.wallet_location:

(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=/u01/oracle/mwh/odi/common/scripts/../../..//wallets/wallet_ADWEloiprod)))

Disconnect and connect again to test the connection.

Testing the Switchover

Before doing the switchover, keep the ODI Instance open.

Go to London region and on ADB Standby instance, click on switchover:

During the switchover you can find some errors on ODI logs:

In my opinion this error is normal, since during the switchover there is some downtime ( ~7 minutes). Once the switchover is done, you can use ODI without any problem. You don’t even need to disconnect and connect again.

Creating ODI Standby Instance

I launched an ODI Marketplace instance using embedded MySQL repository, since what I want is to have a secondary instance to use, in case Frankfurt datacenter is down.

On this instance, I repeated the same configuration (as in primary) for wallet. Just for wallet, you don’t need to configure connections, the repository is the same. Now, I have to create a connection to autonomous, like this one:

IMPORTANT NOTE: After the switchover, if the ODI agent is across different region, then you can experience some slowness. The best option is to have always the ODI agent running in same region as DB.

References

--

--

Eloi Lopes

Opinions expressed are solely my own and do not express the views or opinions of my employer Oracle. https://www.linkedin.com/in/eloilopes/