OracleLinux7.9+OracleDB 19cセットアップ

## 前提バージョン
OracleLinux7.9+Oracle19c

※OracleLinux 9系は、Oracle19cのインストール途中でエラーになってしまいますので、7.9で実施を推奨します。

## Oracle Linux 7.9 セットアップ（例）
・インストール途中の「ソフトウェア選択」で「サーバ（GUI）」を選択
　※OracleのインストーラがGUI前提のため
・ディスクで「/home」を削除、スワップを「4GB」、残りを「/」に割り当てる
・初期起動後に「ソフトウェア更新」でアップデートを行う
・再起動（アップデート後）

## Oracle19c のインストール
### プレインストール
```
yum install oracle-database-preinstall-19c
```
※必要なソフトのインストール、ユーザなどが作成される

### ディレクトリの作成＋oracleDBのzip展開
・ディレクトリ作成
```
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
```
・OracleDBインストールzip展開
```
cp LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.3.0/dbhome_1/.
cd /u01/app/oracle/product/19.3.0/dbhome_1
unzip LINUX.X64_193000_db_home.zip
```
・オーナ／パーミッション変更
```
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app
```

・oracleユーザのパスワード設定
```
passwd oracle
```

## Oracle19c インストール（GUIにてoracleユーザで実施）
```
su - oracle
cd /u01/app/oracle/product/19.3.0/dbhome_1
./runInstaller
```

以下、インストーラにて（例）
```
・ステップ１
　単一インスタンス・データベースを作成および構成
・ステップ２
　デスクトップ・クラス
・ステップ３
　Oracleベース：/u01/app/oracle
　データベースファイルの位置：/u01/app/oracle/oradata
　データベースのエディション：Standard Edition
　キャラセット：OSロケール（JA16EUC）
　OSDBAグループ：dba
　グローバル・データベース：orcl
　パスワード：入力する
　コンテナ・データベースとして作成：チェックを外す
・ステップ４
　インベントリ・ディレクトリ：/u01/app/oraInventory
　oraInventoryグループ名：oinstall
・ステップ５
　構成スクリプトを自動的に実行：チェックをつける
　rootユーザの資格照明を使用：選択
　　パスワード：入力
・ステップ６
・ステップ７
・ステップ８
　インストーラによって生成された構成スクリプトは・・・「はい」を選択
・ステップ９
　完了
```

### oracleユーザの設定
vi .bash_profile

```
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.JA16EUC
```

source .bash_profile

### ファイアーウォール
```
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
```


### ネットワーク設定
/u01/app/oracle/product/19.3.0/dbhome_1/network/admin

sqlnet.ora（※編集なし）
```
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
```

listener.ora（※localhostをIPに変更）
```
# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xx)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
  ```
tnsnames.ora（※ORCLのlocalhostをIPに変更）
 ```
 # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
```

## 接続
```
sqlplus system@ORCL
※繋がらないときは
sqlplus system@192.168.0.xx:1521/orcl
```

```
 SQL*Plus: Release 19.0.0.0.0 - Production on 土 11月 30 11:08:55 2024
Version 19.3.0.0.0

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

パスワードを入力してください:

Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
```

## 他PCから接続できるようにする
ローカルリスナーの確認
```
SQL> Show parameter local_listener
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      LISTENER_ORCL
```
ローカルリスナーの変更
```
SQL> alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.xx)(PORT=1521))' scope=both;
SQL> alter system register;

SQL> Show parameter local_listener

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      (ADDRESS=(PROTOCOL=TCP)(HOST=1
                                                 92.168.0.xx)(PORT=1521))
```

lsnrctl status
```
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 30-11月-2024 12:48:33

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.xx)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日                    30-11月-2024 12:23:34
稼働時間                  0 日 0 時間 24 分 59 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
ログ・ファイル            /u01/app/oracle/diag/tnslsnr/kvmoracle/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.xx)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=kvmoracle)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orclXDB"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
```

### WindowsPCから接続
tnsnames.ora の編集
```
ol79 =
(DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xx)(PORT = 1521))
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)
  )
)
```

sqlplus system@ol79

```
SQL*Plus: Release 19.0.0.0.0 - Production on 土 11月 30 13:13:50 2024
Version 19.3.0.0.0

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

パスワードを入力してください:
最終正常ログイン時間: 土 11月 30 2024 13:12:18 +09:00


Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
```

### クライアントからの接続で以下エラーが出た場合
```
ORA-12637: パケット受信に失敗しました。
```
sqlnet.ora に以下追加
```
DISABLE_OOB=ON
```