Oracle Developer Tools for VS Codeの基本操作チュートリアル(バージョン19.3.2対応)

2019年6月20日、Visual Studio Codeを使用してOracle DatabaseのSQLとPL/SQLのコーディングを支援するOracle社公式の拡張機能(Extension)、Oracle Developer Tools for VS Code 19.3.0が初期リリースされました。
本記事では、初期リリース後19.3.1を経て19.3.2にバージョンアップし、19.3.0とは特に接続設定周りで使い方が変わったので、19.3.2をベースに、本拡張機能の簡単な利用方法を説明します。
この拡張機能の、本記事にない利用方法は[Quick Start](https://www.oracle.com/jp/database/technologies/appdev/dotnet/odtvscodequickstart.html)をご確認ください。
また、19.3.0ベースの記事も[こちら](https://qiita.com/nakaie/items/e7dbbd4ee3690cf7c549)に残しています。

# 拡張機能のインストール

筆者のVS Codeは日本語化しているので、英語版をお使いの方は適宜読み替えてください。といっても、Oracle Developer Tools for VS Code自体のメッセージは英語のままです。
前提環境として.NET Coreのバージョン2.1もしくは2.2が必要です。未インストールの方は先に[こちら](https://dotnet.microsoft.com/download/dotnet-core/2.2)をインストールしてください。バージョン3.0以上をお使いの方は、対応バージョンを追加セットアップする必要があります。

1. Ctrl+Shift+Xキーを押して、もしくは拡張機能のアイコンをクリックして、拡張機能のサイドバーを表示させます。
2. 拡張機能サイドバー内の検索欄にて「oracle」で検索し、検索結果の中から「Oracle Developer Tools for VS Code」の「インストール」ボタンをクリックしてインストールします。<BR>
![screenshot_20200822_074012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/38c7797a-403c-b2ef-322b-8bbec1d1ee17.png)
3. インストールが完了したらVS Codeを再起動します。
4. 再起動後、左端のアクティビティバーにデータベースのアイコン(Oracle Explorer)が表示されていればインストール成功です。<BR>
![screenshot_20200822_094127.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/5db710ff-f0bb-1dbb-4edd-1c25155e3857.png)



# データベースへの接続(コマンドパレット)

1. 既存のSQLスクリプトファイルをオープンするか、新規ファイルをオープンします。

2. F1キーもしくはCrtl+Shift+Pキーを押してコマンドパレットを表示させ、一覧から、「Oracle: Connect」を選択します。
![screenshot_20200822_080205.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/79b9f0dc-5b18-514f-2cee-ef1f9864ec0e.png)

3. 言語モードの選択を聞かれた場合は、「Yes」→「Oracle-SQL and PLSQL(oraclesql)」を選択します。
![screenshot_20200822_080557.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/6be086f1-db23-a81f-60ec-d6e7ac021084.png)
![screenshot_20200822_083041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/918f4bac-4033-f9ff-d838-a45ce02ddade.png)

4. 「Select an Oracle Connection from the list」に対して、既存の接続定義が存在する場合はそれを選択することですぐに接続できます。既存の接続定義を選択した場合は、5.は不要です。設定方式次第ではパスワードがこの画面で見えてしまうケースがあるのでご注意ください。
![screenshot_20200823_174624.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/5e8d9132-2036-44e5-083d-db3901f64ff4.png)


5. 「New Connection」を選択した場合は、以下のような設定画面が表示されます。細かい設定方法は後ほど解説します。
![screenshot_20200822_095014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/cb99ca7c-8fc4-b005-9085-10a5be680d25.png)

# データベースの新規接続の作成開始(ORACLE EXPLORER DATABASE)
アクティビティバーのデータベースのアイコン(Oracle Explorer)をクリックしますと、バーの右隣に「ORACLE EXPLORER DATABASE」というサイドバーが表示されます。ここで右上の「＋」のアイコンをクリックすると、コマンドパレット利用時と同様、新規接続の設定画面が表示されます。
![screenshot_20200822_100126.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/df79c8c5-f68c-4bfa-7d7c-a0eeaa9accf8.png)

# 接続設定画面
19.3.0と比べると、GUIベースで設定しやすくなっています。
画面一番上のConnection Type欄にて、以下の4種類の設定が可能になっています。

- Basic : 接続設定に必要な項目を埋める形で接続を作成します。実際にはEZCONNECT形式で接続します。
- TNS Alias : tnsnames.ora内のTNS接続子を選択します。特にAutonomous Databaseに接続する場合はこれを選択します。
- Advanced : EZCONNECTの接続設定を直接記入できる、Basicでの設定が面倒な方に向いた設定画面です。
- ODP.NET Connection String : Oracle Developer Tools for VS CodeはC#やVB.Netのような.Netの開発言語でOracle Databaseに接続するアクセスドライバである、ODP.Netを内部で使用しています。この画面を通じて、C#やVB.Netのコーディングの際に使用する記述にて接続を設定することができます。

### Basic
![screenshot_20200822_143554.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/496f4b2a-e895-b9a1-fd41-72348b45e68f.png)

- Database hostname : 接続先のホスト名を指定します
- Port number : 接続に利用するTCP/IPのポート番号を指定します
- Service name : 接続先のサービス名を指定します
- Role : 通常はデフォルトの「Non-Administrator」を指定します。SYSユーザーなどで管理業務を行う場合は、権限に応じて他の選択肢を選んでください。
- User name : 接続するユーザー名を指定します
- Password : 接続するユーザーのパスワードを指定します
- Save password : チェックすると、接続の際にパスワードの入力が不要になります。セキュリティ上問題のない場合はチェックを入れてください
- Connection name : この接続定義の名前を入力します。初期値は上記の入力値を用いて自動生成されますが、変更は可能です。筆者が試した限りでは、日本語の接続名も利用できました。
- Create Connection : このボタンを押すと接続が作成されます。作成時に接続テストを行います。接続ができない場合はエラーになって接続が作成されません。接続テストに成功すると、ORACLE EXPLORER DATABASEに接続名の欄が追加されます。

### TNS Alias
![screenshot_20200822_150901.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/e94e9cff-e856-f6d9-b19d-01582916fe42.png)

- TNS Admin Location : tnsnames.oraが配置されているフォルダ(ディレクトリ)を指定します。デフォルトのロケーションは、Windowsの場合は%USERPROFILE%\Oracle\network\admin、Linux/Macの場合は~/Oracle/network/adminです。
- TNS Alias : tnsnames.ora内に記述されている、TNS接続子を選択します。
- Use Wallet File : Autonomous Databaseに接続する場合など、ウォレットを必要とする場合はチェックを入れます。画面では、次のWallet File Locationの項目の入力可否がこのチェックに連動しています
- Role以下の項目 : Basicの解説をご参照ください

なお、Macではバージョン19.3.2でのAutonomous Databaseへの接続は不具合でできませんのでご注意ください。次のリリースで修正の予定です(日本語版ドキュメントには記載がありませんが、[英語ドキュメント](https://www.oracle.com/database/technologies/appdev/dotnet/odtvscodequickstart.html)にはこの問題に関する記載がありました)。

### Advanced
![screenshot_20200822_152344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/be268af3-689b-b501-8dac-32a50562ff6e.png)

- Connection String : EZCONNECTないしTNS接続子を指定します
- Role以下の項目 : Basicの解説をご参照ください

### ODP.NET Connection String
![screenshot_20200823_163233.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/ee57fd2f-88f8-e425-067e-46e6870caeea.png)

- Connection String : 「User Id=ユーザー名;Password=パスワード;Data Source=EZCONNECT接続子もしくはTNS接続子」の形式で指定します。
- Connection name以下の項目 : Basicの解説をご参照ください


# ORACLE EXPLORER DATABASE
接続を作成すると、ORACLE EXPLORER DATABASEのサイドバーに作成された接続が表示されます。あいにくここで特段の操作ができるわけではなく、特定のオブジェクトの情報を見ることができるだけです。編集画面でのSQL発行には、あくまでもコマンドパレットからの接続が必要です。右上の丸い矢印のアイコンをクリックすると、表示がリフレッシュされます。
![screenshot_20200823_202058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/e6cfe16a-bfdc-fa83-701d-00b978a66e75.png)


# SQLの実行
1. 未接続の場合は先に接続を行います。
2. スニペットに対応しています。登録が多すぎて、Ctrl+Spaceキーで全表示させると、最初のうちは反応が鈍いです。<BR>![screenshot_20200823_211350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/69aad4bb-9912-c5a7-79ff-8394ab32a078.png)

3. 例文を入力してみます。「admin.」とスキーマ名をタイプした段階で、指定可能なテーブル名一覧が表示されます。<BR>![screenshot_20200823_211709.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/d6eec483-c907-119d-99e5-29a42ee80f50.png)

4. SQL文を選択してから右クリックし、「Execute Query」をクリックするとSQL文が実行されます。SQL文が複数記述されているときにSQLを選択せずに「Execute Query」をクリック場合は、「Execute ALL」をクリックしたのと同じ動作となり、編集ファイル上のすべてのSQL文が実行されます。SQLを1文だけ実行する場合は、最後に「;」がなくても実行可能です。「Execute Query」と「Execute ALL」は、それぞれCtrl+Rキー、Ctrl+Eキーでも動作します。
![screenshot_20200823_211854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/05d5d980-e551-b158-7ccd-0be515d8abc1.png)


5. SELECT結果が新規タブに表示されます。
![screenshot_20200823_212500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/7c20e666-9b99-dd68-ad76-cdf91c7203eb.png)

以下、SELECT結果画面の解説です。

1. 左のアイコンは、SQL文の表示/非表示を切り替えます。中央のアイコンは、SELECT結果の表示/非表示を切り替えます。右のアイコンは、SELECT結果をクリップボードにCSV形式でコピーします。
2. ファイルに保存するフォーマットを選択します。フォーマットはCSVもしくはJSONが選択可能です。
3. どちらのアイコンも、2.で指定した形式でファイルに保存するためのダイアログを表示します。左のアイコンは、フェッチ済みのデータのみ落とすのに対し、右のアイコンは未フェッチ分含め全件を落とします。

# 接続終了

1. コマンドパレットから「Oracle: Disconnect」を選択します。
2. 接続修了確認メッセージに対して「Yes」を選択するとセッションが切断されます。

![screenshot_20200823_215203.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125837/f61056c4-c6b0-917f-3c9e-7aa507226b48.png)