EC2-RDS（Oracle）間でSQLPlusを実行する手順

# 概要
EC2（Windows、Linux）とRDS（Oracle）でSQLPlusを実行するための環境構築。

# 前提
EC2とRDSが構築済みであること。

# 目次
## EC2とRDSの接続セットアップ
## Windowsバージョン
- EC2にOracleClientインストール
- 環境変数設定
- tnsnames.ora設定
- コマンド実行

## Linuxバージョン
- EC2にOracleClientインストール
- 環境変数設定
- tnsnames.ora設定
- コマンド実行

# EC2とRDSの接続セットアップ
1.マネジメントコンソールで[RDS]のコンソール画面を開き、DB名をクリックして[アクション▼]から[EC2接続のセットアップ]をクリックする。

2.[EC2インスタンス]で接続先のEC2インスタンスを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/9538d319-fa57-dc16-3ff2-4c72628fc2e1.png)


3.設定内容を確認し、問題なければ[セットアップ]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/4e5fe315-6663-1af0-39e7-29cf392cf6e9.png)

# Windowsバージョン
## EC2にOracleClientインストール
1.以下URLからOracle ClientのインストーラとMicrosoft Visual Studioをダウンロードし、EC2上の任意のフォルダにコピーして展開する。

▼ダウンロードサイトURL

https://www.oracle.com/jp/database/technologies/instant-client/winx64-64-downloads.html

▼Basicパッケージ

https://download.oracle.com/otn_software/nt/instantclient/219000/instantclient-basic-windows.x64-21.9.0.0.0dbru.zip

▼SQLPlusパッケージ

https://download.oracle.com/otn_software/nt/instantclient/219000/instantclient-sqlplus-windows.x64-21.9.0.0.0dbru.zip

▼ツールパッケージ

https://download.oracle.com/otn_software/nt/instantclient/219000/instantclient-tools-windows.x64-21.9.0.0.0dbru.zip

▼ODBCパッケージ

https://download.oracle.com/otn_software/nt/instantclient/219000/instantclient-odbc-windows.x64-21.9.0.0.0dbru.zip

▼SDKパッケージ

https://download.oracle.com/otn_software/nt/instantclient/219000/instantclient-sdk-windows.x64-21.9.0.0.0dbru.zip

▼Microsoft Visual Studio

https://learn.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170

2.ダウンロードしたファイルを、EC2上の任意のフォルダに移動する。（例ではデスクトップ配下に[oracle]フォルダ-[instantclient_21_9]を作成し、そこに格納）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/35021ab7-9ac8-35ab-af74-db05468e0d37.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/f31d65dc-3cd3-c1b0-0363-f69957bc382b.png)

3.[oracle]フォルダ-[instantclient_21_9]配下が、以下パスになるようにフォルダ作成する。

C:\oracle\instantclient_21_9\network\admin

4.環境変数設定を開き、TNS_ADMIN、Path、NLS_LANGを記載する。記載内容は以下の通り。
▼TNS_ADMIN、NLS_LANG
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/bd666f3a-76c4-53a5-cc73-4292b1c3fc2f.png)

▼Path
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/926954b1-fb0f-84b9-a58b-d4bac75ecd4b.png)



5.コマンドプロンプトを管理者権限で実行して、cdコマンドでbasicフォルダを配置したパスにディレクトリを移動し、odbc_install JA　を実行してODBCをインストールする。実行コマンド例は以下の通り。

```
cd C:\oracle\instantclient_21_9\instantclient-basic-windows.x64-21.9.0.0.0dbru
```
```
obdc_install JA
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/9a789b91-9ebd-ee5e-3f7f-c2ce15833e69.png)

6.ODBCデータソースを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/0cceaf3b-48d7-5e05-55c9-587c5346b2ed.png)

7.[ユーザーDSN]タブを選択し、[追加]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/33889035-7fbd-a9fe-f8f3-bf588df7a65b.png)

8.Oracle in instantclient_21_9を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/3cfb05dc-e896-cc51-91d2-0524761e39a8.png)

9.以下の通りに入力して、[接続テスト]をクリックする。
データソース名：任意のデータソース名
説明：任意の説明
TNSサービス名：tnsnames.oraファイルの接続名と同じにする、任意の名前。
ユーザID：DBログインユーザ名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/87c31db2-9aaa-194c-4dfa-222a6d190abb.png)

10.DBログインユーザのパスワードを入力し、[OK]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/9c21ad32-43c6-24d0-1192-69a2b8ba4a76.png)

11.[正常に接続できました。]というポップアップが表示されたことを確認し、[OK]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/1bbb73cc-175e-4d31-f554-51201feb25fc.png)

12.[ユーザーDSN]タブに登録したものが表示されていることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/85823935-3e3a-263b-7e7b-467e57530171.png)

13.tnsnames.oraファイルを作成する。記載内容は以下の通り。
・接続名：任意の接続名。
・エンドポイント：RDSのエンドポイント。
・ポート番号：RDSのポート番号。通常は1521。
・DBInstanceIdentifier：RDSのDB識別子。デフォルトはORCL。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/7613ba3a-60d0-7c6c-1637-c77cdc87c369.png)

14.以下コマンドで再度Oracle DBに接続できることを確認する。
・ユーザ名：RDSのDBユーザ名
・パスワード：RDSのDBユーザのパスワード
・接続名：tnsnames.oraで定義した任意の接続名。
```
sqlplus <ユーザ名>/<パスワード>@<接続名>
```



# Linuxバージョン
## EC2にOracleClientインストール
1.以下コマンドを実行して、任意のディレクトリ（今回は/tmp）にrpmファイルをコピーして、以下コマンドを実行する。

▼Basicパッケージ
```
wget https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-basic-21.11.0.0.0-1.el8.x86_64.rpm
```
▼SQLPlusパッケージ
```
wget https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-sqlplus-21.11.0.0.0-1.el8.x86_64.rpm
```
▼ツールパッケージ
```
wget https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-tools-21.11.0.0.0-1.el8.x86_64.rpm
```
▼ODBCパッケージ
```
wget https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-odbc-21.11.0.0.0-1.el8.x86_64.rpm
```
2.以下コマンドを実行し、各パッケージをインストールする。
▼Basicパッケージ
```
sudo dnf install oracle-instantclient-basic-21.11.0.0.0-1.el8.x86_64.rpm
```
▼SQLPlusパッケージ
```
sudo dnf install oracle-instantclient-sqlplus-21.11.0.0.0-1.el8.x86_64.rpm
```
▼ツールパッケージ
```
sudo dnf install oracle-instantclient-tools-21.11.0.0.0-1.el8.x86_64.rpm
```
▼ODBCパッケージ
```
sudo dnf install oracle-instantclient-odbc-21.11.0.0.0-1.el8.x86_64.rpm
```
3.以下コマンドでSQLPlusを起動し、Oracle DBインスタンスに接続する。
※マスターユーザ名・Oracle DB Instance endpoint・DB名は書き換える必要あり。以下参照。AWSサイトより引用。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682297/c8b8eeb8-4461-7429-2551-979f908ce787.png)

※パスワードは別途入力する必要あり。
```
sqlplus <マスターユーザ名>@<Oracle DB Instance endpoint>:1521/<DB名>
```
4.以下SQLコマンドを実行して正常に接続できていることを確認する。
```
SELECT SYSDATE FROM DUAL;
```
5.以下コマンドを実行して、環境変数を登録する。
・ディレクトリ移動&.bash_profile編集
```
$ cd ~/
$ vi .bash_profile
```
・.bash_profile追記
```
echo "export ORACLE_HOME=/usr/lib/oracle/21/client64/lib" >> ~/.bash_profile 
echo "export PATH=${ORACLE_HOME}:${PATH}" >> ~/.bash_profile 
echo "export LD_LIBRARY_PATH=${ORACLE_HOME}" >> ~/.bash_profile
```
・変更内容反映
```
$ source .bash_profile
$ env | sort
```


6.tnsnames.oraファイルを作成する。記載内容は以下の通り。
・接続名：任意の接続名。
・エンドポイント：RDSのエンドポイント。
・ポート番号：RDSのポート番号。通常は1521。
・DBInstanceIdentifier：RDSのDB識別子。デフォルトはORCL。

```
<接続名> =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <エンドポイント>)(PORT = <ポート番号>))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = <DBInstanceIdentifier>)
    )
  )
```

7.以下コマンドで再度Oracle DBに接続できることを確認する。
・ユーザ名：RDSのDBユーザ名
・パスワード：RDSのDBユーザのパスワード
・接続名：tnsnames.oraで定義した任意の接続名。
```
sqlplus <ユーザ名>/<パスワード>@<接続名>
```

# 参考
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html

https://qiita.com/billtench/items/ac58466b693a01ad6464