Ubuntu 22.0.4 LTSにOracle Database 23c Freeをインストール

## はじめに
Ubuntu 22.0.4TLSにOracle Database 23c Freeをインストールしたときのメモです。
たぶんUbuntuは推奨外ですが、開発全てをUbuntuで実施したかったのと、今後用にメモします。
いろいろトライ＆エラーが発生して、記憶に頼りに書いてるので、多々間違っているところは、あると思います。

## ディスク領域確保
最低15Gは、くいます。参考URL。
- https://qiita.com/ren510dev/items/d8c3f1c8c15157b0df92

## ダウンロード
1. oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
https://yum.oracle.com/repo/OracleLinux/OL8/developer/x86_64/getPackage/oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
2. oracle-database-free-23c-1.0-1.el8.x86_64.rpm
https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23c-1.0-1.el8.x86_64.rpm

## alien
ダウンロードしたディレクトリで以下を実行。
```
$ sudo alien oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
$ sudo alien oracle-database-free-23c-1.0-1.el8.x86_64.rpm
```
すると、以下ファイルが、同じディレクトリにできあがります。
```
$ ls *.deb
oracle-database-free-23c_1.0-2_amd64.deb
oracle-database-preinstall-23c_1.0-1.5_amd64.deb
```

## dpkg
```
$ sudo dpkg -i oracle-database-free-23c_1.0-2_amd64.deb
$ sudo dpkg -i oracle-database-preinstall-23c_1.0-1.5_amd64.deb
```
すると、/opt/oracleにファイルが配置されます。

## グループ作成
```
# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd backupdba
# groupadd dgdba
# groupadd kmdba
```

## ユーザ作成
```
# useradd -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle
# passwd oracle
```

## 環境変数追加
普段使うユーザとoracleユーザに以下を追加。
```
$ vi ~/.bashrc
export ORACLE_SID=FREE
export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=$ORACLE_HOME/bin:$PATH
```

## ファイルパーミッション変更
```
$ sudo chown -R oracle:oinstall /opt/oracle
$ sudo chown root:root /opt/oracle/product/23c/dbhomeFree/bin/oradism
```

## DB作成
oracleユーザでdbca起動
```
oracle$ /opt/oracle/product/23c/dbhomeFree/bin/dbca
```

![Screenshot from 2024-03-19 13-56-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328932/f73f479c-f439-448d-8b74-88b5c1f2537c.png)
上記、試行錯誤のときのキャプチャなので、以下を入力する。
```
グローバル・データベース名：FREE
プラガブル・データベース名：FREEPDB1
```

## リスナ系ファイル配置
/opt/oracle/product/23c/dbhomeFree/network/admin
にリスナ系ファイルを配置する。

```
$ cat listener.ora
DEFAULT_SERVICE_LISTENER = FREE

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
```
```
$ cat tnsnames.ora
FREE =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = FREE)
      )
    )
  )

LISTENER_FREE = 
  (ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))

FREEPDB1 =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = FREEPDB1)
      )
    )
```
```
$ cat sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
```

## 起動＆スキーマ作成＆接続
```
oracle$ sqlplus / as sysdba
sqlplus> startup

sqlplus> alter pluggable database freepdb1 open;
sqlplus> alter session set container = freepdb1;

sqlplus> create user milu identified by milu default tablespace users temporary tablespace temp quota unlimited on users account unlock;
sqlplus> grant connect to milu;
sqlplus> grant create table to milu;
sqlplus> grant create view to milu;
sqlplus> grant create materialized view to milu;
sqlplus> grant resource to milu;
sqlplus> grant unlimited tablespace to milu;
```
```
oracle$ lsnrctl start
```

```
$ sqlplus milu/milu@freepdb1
```

## 参考URL
- https://qiita.com/ren510dev/items/d8c3f1c8c15157b0df92
- https://medium.com/oracledevs/installing-the-oracle-database-23c-free-rpm-package-8cdc829ff94b
- https://qiita.com/nwtba1plt/items/e3df995ef7bd024b9e5a