Autonomous Databaseのウォレットファイルをダウンロードして環境に合わせてファイルを修正、配置するシェルスクリプトを書いてみた時のメモ(OCI CLIがセットアップされている前提)
<シェルスクリプトの動作>
1.OCI CLIを使ってAutonomous Databaseのウォレット(Zipファイル)をダウンロード
2.ダウンロードしたZipファイルを解凍
3.sqlnet.oraを環境変数に合わせて書換え
4.解凍したファイル一式を環境変数に合わせて移動
deploy_wallet.sh
#! /bin/bash
# ADBのOCIDとウォレットのパスワードを入力させる
read -p "OCID of ADB: " OCID
read -p "Password for Wallet: " PASSWORD
# 環境変数の表示
echo "TNS_ADMIN:" $TNS_ADMIN
echo "ORACLE_HOME:" $ORACLE_HOME
# /tmpに移動
cd /tmp
# OCI CLIでウォレット(Zipファイル)を/tmp/new_wallet.zipとしてダウンロード
oci db autonomous-database generate-wallet --autonomous-database-id $OCID --file /tmp/new_wallet.zip --password $PASSWORD
# Zipファイル解凍用のディレクトリを作成
mkdir new_wallet
# Zipファイルを/tmp/new_walletに解凍
unzip new_wallet.zip -d ./new_wallet
# /tmp/new_walletに移動
cd new_wallet
# 環境変数TNS_ADMINが設定されている場合
if [ $TNS_ADMIN ]; then
echo "Wallet Location:" $TNS_ADMIN
# sqlnet.oraファイル内のWALLET_LOCATIONのDIRECTORYを$TNS_ADMINの値に変更
sed -i.bak -e "s|?/network/admin|$TNS_ADMIN|" sqlnet.ora
# 解凍したファイル一式を$TNS_ADMINに移動
sudo mv ./* $TNS_ADMIN
# 環境変数TNS_ADMINが設定されていない場合
else
echo "Wallet Location:" $ORACLE_HOME/network/admin
# sqlnet.oraファイル内のWALLET_LOCATIONのDIRECTORYを$ORACLE_HOME/network/adminの値に変更
sed -i.bak -e "s|?|$ORACLE_HOME|" sqlnet.ora
# 解凍したファイル一式を$ORACLE_HOME/network/admin/に移動
sudo mv ./* $ORACLE_HOME/network/admin/
fi
# /tmpに移動
cd /tmp
# /tmp/new_walletを削除
rm -r new_wallet
パーミッションを変更
[opc@tools ~]$ chmod +x deploy_wallet.sh
環境変数TNS_ADMINが設定されている場合の実行ログ
[opc@tools ~]$ ./deploy_wallet.sh
OCID of ADB: ocid1.autonomousdatabase.oc1.ap-tokyo-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Password for Wallet: Oracle#1
TNS_ADMIN: /home/opc/wallet
ORACLE_HOME: /usr/lib/oracle/21/client64/lib
Archive: new_wallet.zip
inflating: ./new_wallet/ewallet.pem
inflating: ./new_wallet/README
inflating: ./new_wallet/cwallet.sso
inflating: ./new_wallet/tnsnames.ora
inflating: ./new_wallet/truststore.jks
inflating: ./new_wallet/ojdbc.properties
inflating: ./new_wallet/sqlnet.ora
inflating: ./new_wallet/ewallet.p12
inflating: ./new_wallet/keystore.jks
Wallet Location: /home/opc/wallet
[opc@tools ~]$
実行結果の確認
[opc@tools ~]$ cd $TNS_ADMIN
[opc@tools wallet]$ ls
cwallet.sso ewallet.pem ojdbc.properties sqlnet.ora tnsnames.ora
ewallet.p12 keystore.jks README sqlnet.ora.bak truststore.jks
[opc@tools wallet]$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/wallet")))
SSL_SERVER_DN_MATCH=yes
[opc@tools wallet]$
環境変数TNS_ADMINが設定されていない場合の実行ログ
[opc@tools ~]$ ./deploy_wallet.sh
OCID of ADB: ocid1.autonomousdatabase.oc1.ap-tokyo-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Password for Wallet: Demo#1Demo#1
TNS_ADMIN:
ORACLE_HOME: /usr/lib/oracle/21/client64/lib
Archive: new_wallet.zip
inflating: ./new_wallet/ewallet.pem
inflating: ./new_wallet/README
inflating: ./new_wallet/cwallet.sso
inflating: ./new_wallet/tnsnames.ora
inflating: ./new_wallet/truststore.jks
inflating: ./new_wallet/ojdbc.properties
inflating: ./new_wallet/sqlnet.ora
inflating: ./new_wallet/ewallet.p12
inflating: ./new_wallet/keystore.jks
Wallet Location: /usr/lib/oracle/21/client64/lib/network/admin
[opc@tools ~]$
実行結果の確認
[opc@tools ~]$ cd $ORACLE_HOME/network/admin
[opc@tools admin]$ ls
cwallet.sso ewallet.pem ojdbc.properties sqlnet.ora tnsnames.ora
ewallet.p12 keystore.jks README sqlnet.ora.bak truststore.jks
[opc@tools admin]$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/usr/lib/oracle/21/client64/lib/network/admin")))
SSL_SERVER_DN_MATCH=yes
[opc@tools admin]