OSqlEditからAutonomousDB(ATP)に接続

OSqlEditからAutonomousDB(ATP)に接続する手順を記します。通常のオンプレミスのサーバー上のOracle DBへのOSqlEditでの接続は慣れているが、AutonomousDBは初めて接続するという方向けの記事になります。

# 前提条件
* 接続先のAutonomousDBとしては、VPNの外にあるパターンを扱います。AutonomousDBのタイプとしては、ATP(Autonomous Transaction Processing)で試していますがADWでも同じです。
* Oracle Clientはすでに導入済みを想定
* OsqlEditはVersion 10.1.3.2
* Oracle ClientはVersion 19.10.0
* ATPは19c(Always Free環境)

# 手順サマリ
* OCIコンソールのDB接続からクライアント資格証明(ウォレット)のダウンロード
* 環境変数TNS_ADMINで指定するフォルダに配置
* slqnet.oraを書き換える
* プロキシ設定が必要な場合tnsnames.oraも書き換える
* OsqlEditに接続情報を入力して接続

# 手順詳細
### OCIコンソールのDB接続からクライアント資格証明(ウォレット)のダウンロード

OCIコンソールからATPのページまで行き、[DB接続]ボタン押下→[ウォレットのダウンロード]ボタンを押下の順でウォレットのダウンロードをします。
この際、ウォレットのパスワード入力が求められますのでパスワードを入力後ダウンロードしてください。
zip形式でウォレットファイル群がダウンロードされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85051/02ef40d6-308c-3ebb-945e-ea6e2620eadf.png)

### 環境変数TNS_ADMINで指定するフォルダにウォレットファイル群を配置

自分の場合はTNS_ADMINの環境変数を下記フォルダに指定しているので、
C:\OracleClient\tns_admin
こちらの配下にzipファイルを解凍したものを配置します。
（$ORACLE_HOME/network/adminである人が多いかと思います。）

TNS_ADMINの環境変数の設定は下記画面から実施。この画面自体はWindows 10のタスクバーの検索マークのところで、”環境変数”などと書いて検索するとここにたどり着く候補がでてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85051/6286e1cd-fabd-6234-5625-2a65a7ebb2e7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85051/1a23635b-912d-b80e-099a-10d7422a4ff5.png)


### slqnet.oraを書き換える
配置したウォレットファイル群の中にsqlnet.oraがあるので、その中身を書き換えます

書き換え前

```
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes
```

書き換え後

```
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="C:\OracleClient\tns_admin")))
SSL_SERVER_DN_MATCH=yes
SQLNET.USE_HTTPS_PROXY=on
```

WALLET_LOCATIONのDIRECTORY=にフルパスを指定しています。
またプロキシ設定用にSQLNET.USE_HTTPS_PROXY=onを追加しています。

### プロキシ設定が必要な場合tnsnames.oraも書き換える

sqlnet.oraにSQLNET.USE_HTTPS_PROXY=onを追記して、tnsnames.oraにもプロキシ用の設定を追加します。接続定義のaddressセクションにhttps_proxyおよびhttps_proxy_portパラメータを追加します。

（追加前）

```
atpfree_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxx_atpfree_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
```

（追加後）

```
atpfree_high = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=www-proxy.xxxxx.com)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxx_atpfree_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
```

### OsqlEditに接続情報を入力して接続

OsqlEditのログイン情報は下記のような形で、ここではadminユーザーで接続になっています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85051/373af8d1-955d-2272-0d20-e0ee034e09fc.png)

接続できたら成功です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85051/befa1474-af01-e391-9966-8d1af1a6b2a2.png)

# 参考マニュアル
共有Exadata InfrastructureでのOracle Autonomous Databaseの使用
 - クライアント・アプリケーションを使用したAutonomous Databaseの接続
 [リンク](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/connect-preparing.html#GUID-3667EC68-930E-4566-95B3-DFA24203A8FF)