Oracle Database 23c を試す

# Oracle Database 23c Developer Releaseとは
　Oracle Database 23c の Developer Release がダウンロードできるようになりました。従来の Express Edition に相当するバージョンになります。いくつかリソース使用量の制約はありますが、それ以外はすべての機能を使えるバージョンになります。
　制約に関するマニュアルは[こちら](https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/licensing-restrictions.html)に記載されています。

ダウンロードは[こちら](https://www.oracle.com/database/technologies/free-downloads.html)からできます。同じページに、Preinstall RPMs for RHEL and CentOS もありますのでこちらもダウンロードすると便利です。

# インストール
　[インストレーションガイド](https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/index.html)を熟読しても良いのですが、Pre Install RPM をインストールするのが最も簡単です。この検証は Red Hat Enterprise Linux 8 Update 7 で実行しています。

Pre Install RPM をインストールしようとするといくつか追加パッケージを要求されます。
```SHELL:
# rpm -ivh oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
warning: oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
error: Failed dependencies:
        compat-openssl10 is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
        glibc-devel is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
        ksh is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
        libnsl is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
        make is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
        sysstat is needed by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64

```

依存パッケージをインストールしてからRPMパッケージをインストールします。

```SHELL:
# rpm -ivh oracle-database-free-23c-1.0-1.el8.x86_64.rpm
warning: oracle-database-free-23c-1.0-1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracle-database-free-23c-1.0-1   ################################# [100%]
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database Free, optionally modify the parameters in '/etc/sysconfig/oracle-free-23c.conf'
```

この時点でカーネル・パラメーターや管理用 OS ユーザーである oracle ユーザーは作成されています。

```SHELL:
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
# sysctl -a | grep shmmax
kernel.shmmax = 4398046511104
# sysctl -a | grep sem
kernel.sem = 250        32000   100     128
kernel.sem_next_id = -1
```

Pre Install RPM の指示にしたがってデータベースを構築します。root ユーザーで「/etc/init.d/oracle-free-23c configure」コマンドを実行します。実行中にデータベース・ユーザー SYS/SYSTEM/PDBADMIN ユーザーの共通パスワードを２回入力します。

```SHELL:
# /etc/init.d/oracle-free-23c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. 
Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts: <パスワードの入力>
Confirm the password: <パスワードの再入力>
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database FREE.
Enter SYS user password:
***********
Enter SYSTEM user password:
**********
Enter PDBADMIN User Password:
*************
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
33% complete
36% complete
39% complete
43% complete
Completing Database Creation
47% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/FREE.
Database Information:
Global Database Name:FREE
System Identifier(SID):FREE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log" for further details.

Connect to Oracle Database using one of the connect strings:
     Pluggable database: rel87-1/FREEPDB1
     Multitenant container database: rel87-1
```

エラーが発生せずにコマンドが完了したらセットアップは終了です。


# 利用開始
Pre Install RPM の設定で oracle ユーザーは自動的に作成されますが、環境変数までは設定してくれないので $HOME/.bash_profile 等に設定します。

```SHELL:
$ cat .bash_profile
export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree/
export PATH=${PATH}:${ORACLE_HOME}/bin
export NLS_LANG=Japanese_Japan.AL32UTF8
export ORACLE_SID=FREE
```

デフォルトのリスナー（LISTENER）が起動し、tnsnames.ora には FREE の接続子が追加されています。

```SHELL:
$ cat $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/23c/dbhomeFree/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

FREE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rel87-1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FREE)
    )
  )

LISTENER_FREE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = rel87-1)(PORT = 1521))
```

SQL*Plus を使って接続します。

```SQL:
$ sqlplus / as sysdba

SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 火 4月 4 17:57:15 2023
Version 23.2.0.0.0

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

Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
に接続されました。
SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
BANNER_FULL
--------------------------------------------------------------------------------
BANNER_LEGACY
--------------------------------------------------------------------------------
    CON_ID
----------
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
         0
```

デフォルトで FREEPDB1 という PDB が作成されています。

``` SQL:
SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 FREEPDB1                       READ WRITE NO
```

Author: Noriyoshi Shinoda / Date: April 4, 2023