Oracle Database 21c Express Editionの紹介(Linux編)

# はじめに
この記事は、[JPOUG Advent Calendar 2021](https://adventar.org/calendars/6527)の8日目の記事です。
7日目はgowatanaさんの記事[Oracle Linux 8 で NVMe over TCP ターゲットを構築してみる。](https://gowatana.blogspot.com/2021/12/ol8-nvme-over-tcp.html)でした。


# Oracle Database Express Edition (XE)とは
Oracle Database Express Editionは、利用可能リソースや機能に制限を設けた形で無償で提供される、Oracle Databaseのエディションのひとつです。11gで初のXEが提供されてから、18c版を経て、21c版の提供が開始されました。

18c版XEが出た頃と違い、21c版XE出荷時点ではOracle CloudのAlways Free環境にて、全体的にXEよりも緩い機能制限で無償でOracle Autonomous Database Cloud Serviceをご利用いただけます。クラウドの利用が可能な場合はこちらのご利用がおすすめですが、オンプレミス環境やIaaS環境上で無償でOracle Databaseを利用したい場合は現在でもXEが有用です。

なお、本記事の情報は基本的にマニュアルや製品情報ページの抜粋です。個別に動作確認した部分などをしばらく追記、変更していきます。


# XE 21cの基本仕様
- 従来と同様、無償です。特段の利用場面の制限もなく、極論本番環境としてご利用いただいても構いません。ただし、従来と同様、サポートサービスとパッチは提供されません。
- 利用ライセンスの詳細については、[ライセンスのマニュアル(英語)](https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/index.html)をご確認ください。
- 18cに続き、Enterprise Editionがベースとなっています。ただし、Enterprise Editionのすべての機能が利用できるわけではありません(次項を参照)。
- 稼働リソースの制限は以下のとおりです。18cと同様です。リソース制限を上回るH/Wリソースの環境へのインストールは可能ですが、下記の範囲でしか稼働しません。
    - 2スレッドまでのCPU
    - 2GBまでのRAM
    - 12GBまでのユーザーデータ


# 利用可能なデータベース・オプション、機能
他のエディションと同様、[ライセンスのマニュアル(英語)](https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87)に、機能ごとに利用可否がわかる形で記載されるようになりました。18c時代に比べて、できること/できないことがよりわかりやすくなっています。ただし、2021/12/8時点では英語版のマニュアルにのみ記載されています。以下は一部のみの紹介です。利用可能となっている機能も、細かい部分で非対応の機能があるのでご注意ください。

- Multitenantに関して、18cで作成可能なPDBは3つまででしたが、21cではEneterprise Editionと同じ252個に拡大されました。　しかし、XEにはDBサイズの制限があるので、現実的に252個の作成は難しいと思われます。
- RAC(Real Application Clusters)やDataGuard, Shardingのような、複数ノードを連携させる機能は利用できません。なお、GoldenGateも利用不可です。
- Enterprise Managerのオプションパックは利用できません。RAT(Real Application Testing)も利用不可です。EM Expressは利用可能ですが、最初はローカルからのアクセスに制限されています(解除可能)。
- Database In-memoryは基本機能が利用可能です。2GBのメモリでインメモリDB? という話はありますが。。。
- セキュリティ関係の機能はTDE(Transparent Data Encryption)をはじめ、大半の機能が利用可能です。
- パラレル処理関連機能は利用できません。
- Spatial and Graphは利用可能です。地理データベースとしてもグラフデータベースとしても利用可能です。
- パーティション機能は利用可能です。
- 圧縮関連の機能は大半の機能が利用可能です。
- Advanced Analyticsは利用可能です。機械学習やデータマイニング、R言語からのアクセスが可能です。
- Advanced Queuing(AQ)や、AQの後継となる21c新機能のTransactional Event Queues(TEQ)はご利用いただけます。これらの機能をうまく使って、マイクロサービスの基盤にXEという選択肢はありかもしれません。
- Enterprise Managerのオプション機能は利用できません。
- APEX(Oracle Application Express)やORDS(Oracle REST Data Services)は同梱されていませんが、別途ダウンロードして利用することが可能です。
- Oracle SQL Developerから利用が可能です。
- データベースのキャラクタセットはAL32UTF8です(DB作成前に変更可能)。Oracle Clientでのキャラクタセット変換は利用できるので、SJISや日本語EUCなどUFT-8以外の文字コードをアプリケーションで利用したい場合でも、デフォルト設定のままでXEの利用は可能です。
- その他目についた利用不可な機能：Resource Manager, SPM(SQL Plan Management), STS(SQL Tuning Set), etc.



# インストール要件
Linux x86–64版をRPM形式で提供しています。
インストール可能ディストリビューションは[マニュアル(英語)](https://docs.oracle.com/en/database/oracle/oracle-database/21/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html#GUID-E5C0A90E-7750-45D9-A8BC-C7319ED934F0)をご確認ください。その他ソフトウェアの稼働要件は以下のとおりです。

- 他のエディション(SE2/EEなど)との共存は不可
- 1OS環境にインストールできるXEはひとつのみ
- 最低1GB以上のRAM、推奨は2GB以上
- インストール先の領域として10GB以上のディスク容量
- 2GBないしメモリ容量の2倍のスワップ領域
- 設定の確認、変更が必要なカーネルパラメータは[マニュアル(英語)](https://docs.oracle.com/en/database/oracle/oracle-database/21/xeinl/requirements.html#GUID-CDC9A725-11A2-4062-BF4D-F7786F0701FC)をご確認ください。


# インストール手順
root権限が必要なのでsudoでroot権限で作業します。

```
$ sudo -s
```

###1. Database Preinstallation RPMをインストール
このRPMは、Oracle Databaseの稼働に必要なRPM類をインストールし、Oracle Databaseを起動できるようカーネルパラメータを変更します。パッケージは手順2のサイトからダウンロードすることも可能です。(Oracle Linuxの場合は自動的にインストールされます)

・Oracle Linux 7系の場合

```
# curl -o oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm
# yum -y localinstall oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm
```

・Oracle Linux 8系の場合

```
# curl -o oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/latest/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
# dnf -y localinstall oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
```

###2.XEのダウンロード
 [ダウンロードサイト](https://www.oracle.com/database/technologies/xe-downloads.html)より、製品をダウンロードします。

###3. XEをyumコマンドでインストール
ファイル名は実際に落としたものに合わせて変更してください。

・Oracle Linux 7系の場合

```
# yum -y localinstall oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm
```

・Oracle Linux 8系の場合

```
# dnf -y localinstall oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
```


###4. 環境変数のセット
oraenvコマンドでOracle Database関連の環境変数を設定します。Oracle Databaseの環境変数の設定対象と方法をご存知の方は、oraenvコマンドを使用せず、ご自身で設定いただいていもかまいません。
XEではインスタンス名は「XE」固定です。ですので、環境変数ORACLE_SIDは「XE」を設定してください。環境変数ORACLE_BASEは「/opt/oracle」、環境変数ORACLE_HOMEは「/opt/oracle/product/21c/dbhomeXE」です。

```
$ export ORACLE_SID=XE 
$ export ORAENV_ASK=NO 
$ . /opt/oracle/product/21c/dbhomeXE/bin/oraenv
```

oraenvコマンド実施の際に聞かれる質問に答えていくと設定が完了します。


# DBの作成
rootユーザーで実施します。以下のコマンドを実施すると管理者のパスワードを聞いてきますので入力すると、DBとリスナーが作成されます。DB作成に関する設定(リスナーのポート番号やDBのキャラクタセットなど)を変更されたい方は/etc/sysconfig/oracle—xe–21c.confファイルを編集してから実施してください。設定の変更の詳細は[マニュアル](https://docs.oracle.com/en/database/oracle/oracle-database/21/xeinl/installing-oracle-database-xe.html#GUID-3F29EE7C-4546-49EE-B894-027EE3E371BF)をご確認ください。表示されたページの中央やや下のあたりに記載があります。

```
# /etc/init.d/oracle-xe-21c configure
```



# DBの起動、停止
起動や停止は以下のコマンドで実施します。SQL*Plusからのstartup, shutdownも可能です。rootユーザーで実施します。

・起動

```
# systemctl start oracle-xe-21c
```

・停止

```
# systemctl start oracle-xe-21c
```

・再起動

```
# systemctl restart oracle-xe-21c
```

# 参考リンク

1.XEの製品情報(英語)
https://www.oracle.com/database/technologies/appdev/xe.html

2.XE発表のブログ(英語)
- Linux版：[Oracle Database 21c XE now generally available](https://blogs.oracle.com/database/post/oracle-database-21c-xe-generally-available)
- Windows版：[Oracle Database 21c and Express Edition (XE) Now Available on Windows](https://blogs.oracle.com/database/post/oracle-database-21c-for-windows)

3.XEのサポート・コミュニティ(掲示板、英語)
https://community.oracle.com/community/groundbreakers/database/developer-tools/oracle_database_express_edition_xe

4.マニュアル(英語)
- [Installation Guide for Linux](https://docs.oracle.com/en/database/oracle/oracle-database/21/xeinl/index.html)
- [Installation Guide for Windows](https://docs.oracle.com/en/database/oracle/oracle-database/21/xeinw/index.html)

5.ライセンス情報(英語)
https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/index.html

6.Oracle Database 21cのマニュアル(サイト閲覧、日本語)
https://docs.oracle.com/cd/F39414_01/books.html

7.Oracle Database 21cのマニュアル(ダウンロード、約1.2GB、日本語)
https://docs.oracle.com/cds/F39414_01.zip

8.[@shakiyam](https://qiita.com/shakiyam)さんによる、21c XEの簡易セットアップ記事(Vagrant + VirtualBox)
https://qiita.com/shakiyam/items/f6fa0c2f27a97ebfc92e

9.21c XEのDockerfile
https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance/dockerfiles/21.3.0

10.21c XE Linux版 試用記事
Kazuhiro YOSHIKAWAさんのブログ[Keep It Simple, Stupid](https://yskwkzhr.blogspot.com/)より、[Oracle Database Express Edition(XE)で21c新機能を試してみる](https://yskwkzhr.blogspot.com/2021/12/trying-out-the-new-21c-features-in-oracle-database-express-edition.html)

# 更新履歴
2021/12/8 公開