MacBook で   SQLcl を使用して Walletなしの TLS認証で Oracle Autonomous Databaseに接続してみてみた

Oracle SQL Developerコマンド・ライン(SQLcl)は、SQL*Plus と SQL Developerの機能を組み合わせたOracle Database用のコマンドライン・インタフェースです。SQLclを使用して、ウォレットなしで TLS認証を使用して Autonomous Databaseに接続できます。SQLclは、インライン編集、ステートメントのコンプリート、コマンド呼び出しなど豊富な機能を提供します。
ということで、Macbooke へ SQLclを使用して、WalletなしでTLS認証を使用してAutonomous Databaseに接続してみてみます。



# ■ 環境イメージ
今回、FastConnect でオンプレミスと Oracle Cloud Infrastructure(OCI)を接続し、Macbook から Autonomous Database へ SQLcl 接続します。
![構成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b5cc6c49-958d-16bf-9d6c-25104871474e.jpeg)
![ADB.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b8f42382-f1e8-9e6b-81a1-6c72421437ef.jpeg)


# ■ macOSでのJDKのインストール
SQLclを実行するには、Oracle Java 11以降のバージョンをインストールする必要があります。Javaバージョンが11未満の場合、SQLcl実行は失敗し、次のエラー・メッセージが表示されます。

**・sqlcl 実行**
```
oracle@macbook ~ % sql /nolg

	Warning: Found incompatible $ORACLE_HOME for database version 19
	         Thick driver unavailable for use.
	
	
	Error: SQLcl requires Java 11 and above to run.
	       Found Java version .
	       Please set JAVA_HOME to appropriate version.
```
**・ macOSのデフォルトのJDKバージョンの確認**
```
oracle@macbook ~ % java -version
    The operation couldn’t be completed. Unable to locate a Java Runtime.
    Please visit http://www.java.com for information on installing Java.
```


## ● JDK Development Kit 22 downloads
macOSにJDKをインストールするには、必要な ARM64 DMG Installer ファイルを、[Java Downloads](https://www.oracle.com/java/technologies/downloads/#jdk17-mac)からダウンロードします
![03_JDK-Download01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/7e297ee0-c9ca-c87a-cd59-039338b59291.jpeg)



## ● JDK Development Kit 22 Install
**1) Installer 実行**
ダウンロードした dmgファイルをクリック
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8ae35465-432b-829e-930d-3241fcfdac16.png)


**2) JDK インストーラー画面**
[続ける]をクリック
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e593d32f-7e4b-f13e-3a4d-891721fd467c.jpeg)


**3) インストール先画面**
[続ける]をクリック
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/847ec4ad-54dd-ed99-a28a-b977e518927d.jpeg)

**4) インストールの種類画面**
[インストール]をクリック
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e24d8c7c-daf7-202b-5d99-598d8d8cf39a.jpeg)


**5) インストール中画面**
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f08d8880-e80d-b913-bd67-baf52e1353c2.jpeg)

**6) インストール完了画面**
[閉じる]をクリック
![17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5358e3d9-cdba-d707-8dca-ff06a9fd450b.jpeg)



## ● JDK Install 確認
次のコマンドでインストールしたJAVA Versionを確認
```
oracle@macbook ~ % java -version
	java version "22" 2024-03-19
	Java(TM) SE Runtime Environment (build 22+36-2370)
	Java HotSpot(TM) 64-Bit Server VM (build 22+36-2370, mixed mode, sharing)
```

# ■ SQLcl インストール
## ● SQLcl ダウンロード
[SQLcl Downloads](https://www.oracle.com/eg/database/sqldeveloper/technologies/sqlcl/download/)から SQLclをダウンロード
 ![02_SQLcl01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/09d82520-407b-45ff-f492-068705bf7180.jpeg)


## ● SQLcl インストール
**1) Install Directory 作成**
```
oracle@macbook ~ % mkdir ~/oracle
```
**2) SQLcl Zipファイル配置**
```
oracle@macbook ~ % ls -l ~/oracle
	-rw-r--r--@  1 oracle  staff  70205047 Apr 13 07:05 sqlcl-23.4.0.023.2321.zip
```
**3) SQLcl Zipファイル解凍**
```
oracle@macbook ~ % cd ~/oracle
oracle@macbook oracle % unzip sqlcl-23.4.0.023.2321.zip
oracle@macbook oracle % ls -l
	drwxr-xr-x@ 10 oracle  staff       320 Apr 13 07:19 sqlcl
	-rw-r--r--@  1 oracle  staff  70205047 Apr 13 07:05 sqlcl-23.4.0.023.2321.zip
oracle@oracle-mac ~ % ls -l ~/oracle/sqlcl
  -rw-r--r--@  1 oracle  staff    44 Jan 23 23:23 23.4.0.023.2321
  -rw-rw-rw-@  1 oracle  staff   216 Jan 23 23:25 LICENSE.txt
  -rw-rw-rw-@  1 oracle  staff   192 Jan 23 23:25 NOTICES.txt
  -rw-rw-rw-@  1 oracle  staff   348 Jan 23 23:25 THIRD-PARTY-LICENSES.txt
  drwxr-xr-x@  7 oracle  staff   224 Apr 13 07:18 bin
  drwxr-xr-x@ 90 oracle  staff  2880 Jan 23 23:25 lib
  drwxr-xr-x@  4 oracle  staff   128 Apr 13 07:19 network
```

# ■ SQLcl動作確認
## ● 環境変数設定
**1) .bash_profile設定**
```
oracle@macbook oracle % cat ~/.bash_profile

	export PATH=/Users/oracle/bin:$PATH

	export ORACLE_HOME=/Users/oracle/oracle/sqlcl
	export TNS_ADMIN=$ORACLE_HOME/network/admin
	export PATH=$ORACLE_HOME/bin:$PATH
	export LD_LIBRARY_PATH=$ORACLE_HOME
	export ORACLE_SID=ADB
```

**2) .bash_profile 実行**
```
oracle@macbook ~ % source ~/.bash_profile
oracle@macbook ~ % env | grep ORA
    ORACLE_HOME=/Users/oracle/oracle/sqlcl
    ORACLE_SID=ADB
```

## ● tnsnames.ora設定
**1) Autonomous Database画面**
OCIコンソールから 対象の Autonomous Database画面の[データベース接続]をクリック
![ADB接続01-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f02293df-003d-bed6-a77a-928ccd99083e.jpeg)



**2) データベース接続画面**
接続文字列をコピーします
![ADB接続.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/03023022-ab9a-5feb-2e76-be122581280c.jpeg)

**3) tnsnames.ora設定**
今回の Oracle Clientは、FastConnect接続されたオンプレミス環境なので、Autonomous Database の プライベート・エンドポイントIP を設定します。
DNS, /etc/hosts等でホスト名解決できる場合は、プライベート・エンドポイントURLを設定します。
```
oracle@macbook oracle % cat $ORACLE_HOME/network/admin/tnsnames.ora

ADB =
	(description= (retry_count=20)(retry_delay=3)
		(address=(protocol=tcps)(port=1521)
		(host=10.0.0.2))
		(connect_data=(service_name=adb_tp.adb.oraclecloud.com))
		(security=(ssl_server_dn_match=no)))
```

```
oracle@macbook oracle % sql admin/<Password>@ADB

	Warning: Found incompatible $ORACLE_HOME for database version 19
			Thick driver unavailable for use.



	SQLcl: 日 4月 14 21:23:02 2024のリリース23.4 Production

	Copyright (c) 1982, 2024, Oracle.  All rights reserved.

	Last Successful login time: 日 4月  14 2024 21:23:03 +09:00

	接続先:
	Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
	Version 19.23.0.1.0

SQL> select * from v$instance;

   INSTANCE_NUMBER INSTANCE_NAME    HOST_NAME    VERSION       VERSION_LEGACY    VERSION_FULL    STARTUP_TIME    STATUS    PARALLEL       THREAD# ARCHIVER    LOG_SWITCH_WAIT    LOGINS     SHUTDOWN_PENDING    DATABASE_STATUS    INSTANCE_ROLE       ACTIVE_STATE    BLOCKED       CON_ID INSTANCE_MODE    EDITION    FAMILY    DATABASE_TYPE
__________________ ________________ ____________ _____________ _________________ _______________ _______________ _________ ___________ __________ ___________ __________________ __________ ___________________ __________________ ___________________ _______________ __________ _________ ________________ __________ _________ ________________
                 2 adb2                          19.0.0.0.0    19.0.0.0.0        19.23.0.1.0     24-04-06        OPEN      YES                  2 STARTED                        ALLOWED    NO                  ACTIVE             PRIMARY_INSTANCE    NORMAL          NO                 0 REGULAR          EE                   RAC


```



# ■ 参考
　・ [Installation of the JDK on macOS](https://docs.oracle.com/en/java/javase/22/install/installation-jdk-macos.html#GUID-E8A251B6-D9A9-4276-ABC8-CC0DAD62EA33)
　・ [Java Downloads](https://www.oracle.com/java/technologies/downloads/#jdk17-mac)
　・ [SQLcl Downloads](https://www.oracle.com/eg/database/sqldeveloper/technologies/sqlcl/download/)
　・ [Oracle SQLclを使用した接続](https://docs.oracle.com/ja-jp/iaas/autonomous-database/doc/connect-oracle-sqlcl.html)
　・ [WalletなしでOracle SQLcl Cloudを接続](https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/serverless/adbsb/connect-sqlcl-tls.html)
　・ [SQLclのFAQ](https://www.google.com/search?q=SQL*Plus+SQLcl&oq=SQL*Plus+SQLcl&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQIRigAdIBCDM5NTFqMGo0qAIAsAIB&sourceid=chrome&ie=UTF-8)
　・ [Oracle SQLclの使用](https://docs.oracle.com/cd/F40600_01/sqcug/working-sqlcl.html#GUID-DB0D123B-AFA1-4C5A-AB2A-A7B59863C9B9)
　・ [Oracle JDK 22 Certified System Configurations](https://www.oracle.com/java/technologies/javase/products-doc-jdk22certconfig.html)