Using Oracle Wallet?

Has anyone found a way to set up liquibase to use an oracle wallet?

Interestingly, searching the main liquibase site or the forums came up blank, but google found this in Jira:


https://liquibase.jira.com/browse/CORE-805?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Those instructions appear a little out of date, like “finest” is no longer a valid debug level. Hopefully, we can get a little bet better documentation on this, since my Googlings were sparse.

Here’s how I got this to work:
java -Doracle.net.tns_admin="%TNS_ADMIN%" -Doracle.net.wallet_location=D:\app\wallet -jar lib/liquibase.jar --driver=oracle.jdbc.OracleDriver --classpath=“lib/ojdbc6.jar;lib/oraclepki.jar;lib/osdt_core.jar;lib/osdt_cert.jar” --url=jdbc:oracle:thin:/@CONNECTOR --logLevel=DEBUG --logFile=liquibase.logFile --changeLogFile=changelog.xml --driverPropertiesFile=“D:/code/LiquibaseTest/lib/wallet.ora” updateSQL >> output.sql

I’m launching out of d:\code\LiquibaseTest. From there, I have a lib folder where I dropped the liquibase.jar and ojdbc, plus the libraries that the Wallet use: oraclepki, osdt_core, and ostdt_cert. My Wallet lives in: D:\app\wallet.

The contents of the wallet.ora are:
SQLNET.WALLET_OVERRIDE = TRUE
WALLET_LOCATION =
  (SOURCE =    (METHOD = FILE)
   (METHOD_DATA =      (DIRECTORY = d:\app\wallet)    )  )

So, you want this to be the path to where your Wallet files live. This seems to be redundant to the -Doracle.net.wallet_location, but I needed to have both when I ran this command (I tested a couple different configurations). I also have sqlnet.ora configured with the same information (this is used to launch SQL Plus with the Wallet, and also lives with tnsnames.ora). You can replace the custom driverPropertiesFile that I have with the full path to the sqlnet.ora file so as to not maintain two. So, --driverPropertiesFile="%TNS_ADMIN%/sqlnet.ora" will also work in this example.

CONNECTOR is my configured Wallet connector alias for my credentials. So, I can also do: sqlplus /@CONNECTOR  to get connected (requires sqlnet.ora configuration like above as part of optional Wallet setup).

Lastly, -Doracle.net.tns_admin should be the path to where tnsnames.ora lives, but not including tnsnames.ora (I made that mistake, too). I set this up in an environment variable, which is optional.