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:
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
(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.