【環境構築】OracleEXPRESSをを接続してみる

## 資材入手
Oracle Database Express Edition（XE）をダウンロードする
https://www.oracle.com/jp/database/technologies/appdev/xe.html
ダウンロードファイル：OracleXE213_Win64.zip

## ログインユーザ
<font color=red><b>注意</b></font>
[クイックスタート](
https://www.oracle.com/jp/database/technologies/appdev/xe/quickstart.html)により、「管理者グループの直接メンバーであるユーザー」が必要といわれていますが、win10 proの場合管理者となるドメインユーザまたは管理者なるローカルユーザで試してみていろいろ不都合が発生して進まないです。結局にローカルのAdministratorでインストールを成功しました。またwin11 proの場合、ドメインユーザ＋サーバの管理者グループで問題なくインストール成功になります。


## インストール
zipファイルを解凍する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/74f88b6d-5562-ed94-54da-a9e7db37ee73.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/bd62f3f2-1a3a-570f-3d4f-869877fb423a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/46a43193-0c52-cbdb-a640-35ecc785f3da.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/27ab743c-acbe-c61f-c44b-bcd7ab856d5c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2353d317-eef9-a225-c384-fdb529647868.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/d3ff84d9-16fa-ff2e-9d22-d7e88d0b98fc.png)

インストール成功後、SQLPlusで試します。Oracleのユーザはsystemを利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a711c15a-c5b9-7e7d-3b46-89a7d1d47112.png)

## ドメインユーザ向けの設定
C:\app\Administrator\product\21c\homes\OraDB21Home1\network\admin\sqlnet.ora にSQLNET.AUTHENTICATION_SERVICESの設定をコメントします。インストールはローカルAdministrator、利用時ドメインユーザなので、互いに別々のドメインですが、認証システムが違うから、Windows Native Authentication(NTS)を利用できません。
```properties
# sqlnet.ora Network Configuration File: C:\app\Administrator\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

# SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
```
修正後、Oracleを再起動します。Oracle Instance Managerを利用して、サービスを停止と再起動を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a5174523-6e3c-c2c8-b100-76e640df8820.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/d81267be-6c1d-f5bd-ba42-b7ea93b1b78c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/89fb882a-82a1-7144-41d8-6ae5fe4ccc63.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/f15b7654-ee40-f65e-a970-5105ae164a33.png)
SQLPlusでもう一回確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a711c15a-c5b9-7e7d-3b46-89a7d1d47112.png)

## javaアプリの接続テスト
hellworldのサンプルプログラムをtomcatのwebappsフォルダに入れます。
META-INF/context.xmlにOracleEXPRESSの接続を設定します。

https://github.com/efwGrp/qittaSamples/tree/main/helloworld

```xml
	<Resource
		name			=	"jdbc/efw"
		auth			=	"Container"
		type			=	"javax.sql.DataSource"
		driverClassName	=	"oracle.jdbc.driver.OracleDriver"
		url				=	"jdbc:oracle:thin:@localhost:1521"
		username		=	"system"
		password		=	"password"
		maxTotal		=	"10"
		maxIdle			=	"10"
		maxWaitMillis	=	"10"
	/>
```
OracleEXPRESSに専用データベースまたはスキーマを作成するため、結構手間がかかるため、別途調査しますが、一旦systemユーザで凌ぎます。

インストールフォルダの中からojdbc8.jarまたはojdbc11.jarを見つかります。一つをコピーしてhelloworld/WEB-INF/libに入れます。ほかのいろいろもありますが、「g」はグローバルの意味です。「dms」は、Dynamic Monitoring Service (DMS)　の意味です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/83de061e-4c56-c501-977c-0c5fcd51bcd1.png)
tomcatを起動します。コンソール画面からデータベース起動成功のログを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/f688c318-4651-6617-b1bf-90b7839fa447.png)
dbテスト画面で動作確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/145206f6-6db6-fad4-0852-afd83a966155.png)
※Oracleの場合外だしSQL xmlファイルの記載に。「;」を書いたらSQLエラーになります。ちょっとがかっりです。