Oracle Linux 7.9にOracle Enterprise Manager 13.5を導入する

# 1. はじめに
本記事では、Oracle Linux 7.9にOracle Enterprise Manager 13.5(以下OEM)を導入する手順を記載します。
ここで導入するOEMは、OTNの範囲での作業、かつ検証目的のため、以下については記載していません。
* OSやDBのパラメーターチューニング
* Oracle DatabaseやOEMのパッチ適用方法

# 2. 前提条件
本記事は下記のハードウェア・ソフトウェアを前提としています。

## 2.1. ハードウェア
* HW : Virtual Box仮想マシン
* CPU : 6Core
* Mem : 16GB
* HDD : 80GB(OS), 200GB(DB)
:::note info
OEMのデプロイメント・サイズは小を想定
:::

## 2.2. ソフトウェア
* OS : Oracle Linux 7.9 (Virtual BOX)
* DB : Oracle Database 19c Enterprise Edition
* OEM : Oracle Enterprise Manager 13.5
:::note info
OEMのリポジトリを格納するデータベースはOracle Database Enterprise Editionが必須です。
下記のデータベース・パーティション化の要件を参照下さい。
[[13.5] Cloud Control基本インストレーション・ガイド - EM前提条件キットによって実行されるリポジトリ前提条件チェック](https://docs.oracle.com/cd/F45244_01/embsc/overview-em-prerequisite-kit.html#GUID-FA18E37E-E275-4E32-A3D9-9EFE083008DF "EM前提条件キットによって実行されるリポジトリ前提条件チェック")
:::

## 2.3. 動作環境
* 名前解決はDNSサーバーを使用し、設定も完了しているものとします。
:::note info
DNSサーバーが存在しない場合、hostsファイルにて自サーバー名の名前解決を設定してください。この手順はここでは省略します。
:::

## 2.4. ソフトウェア入手先
ソフトウェアは下記から入手できます(要アカウント)
* [Oracle Linux 7.9](https://edelivery.oracle.com/ "Oracle Software Delivery Cloud")
  * V1009690-01.iso (Oracle Linux Release 7 Update 9 for x86 (64bit))
* [Oracle Database 19c](https://www.oracle.com/jp/database/technologies/oracle-database-software-downloads.html#19c "Oracle Database ソフトウェア・ダウンロード")
  * LINUX.X64_193000_db_home.zip
* [Oracle Enterprise Manager 13c Release 5 for Linux x86-64](https://www.oracle.com/enterprise-manager/downloads/cloud-control-downloads.html "Oracle Enterprise Manager Downloads")
  * em13500_linux64.bin
  * em13500_linux64-2.zip
  * em13500_linux64-3.zip
  * em13500_linux64-4.zip
  * em13500_linux64-5.zip
* [Oracle Database Template for Installing Oracle Enterprise Manager Cloud Control 13c Release 5](https://www.oracle.com/enterprise-manager/downloads/cloud-control-downloads.html "19.11 SI DB Templates")
  * 19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip

# 3. 仮想マシンの作成
仮想マシンは次のように作成します。※ 詳細は省略します。
* 仮想マシン名 : oem135
* タイプ : Linux
* バージョン : Oracle (64-bit)
* プロセッサー : 6CPU
* メモリーサイズ : 16GB (16,384 MB)
* ストレージ : 80GB(OS), 200GB(DB)

# 4. Oracle Linux 7.9 のインストール
Oracle Linux 7.9のインストールは次のように行います。 
※ 詳細は省略します。太字はデフォルトから変更する箇所です。
1. Oracle Linux 7.9 → Install Oracle Linux 7.9
2. インストール時に使用する言語 → **日本語**
3. インストールの概要
   1. 地域設定
      1. 日付と時刻 → アジア/東京
      2. キーボード → 日本語
      3. 言語サポート → 日本語
   2. ソフトウェア
      1. インストールソース → ローカルメディア
      2. ソフトウェアの選択 → **サーバー(GUI使用)**
   3. システム
      1. インストール先 → パーティションを自分で構成する
**sda1 : /boot (xfs, 1GiB)**
**sda2 : swap (16GiB)**
**sda3 : / (xfs, 63GiB)**
      2. KDUMP → Kdumpが有効になります
      3. ネットワークとホスト名 → 接続していません
      4. セキュリティーポリシー → プロファイルが設定されていません
4. ユーザーの設定
ROOTパスワード : 適宜設定
ユーザーの作成 : 適宜設定
5. 再起動後の初期セットアップ
   1. LICENSING
      1. LICENSE INFROMATION → **ライセンスに同意**
   2. システム
      1. Subscription Manager → このシステムは現在登録されていません

# 5. Oracle Linux 7.9 の設定
本章の設定では、指定がない限り全てrootユーザーで実行します。

## 5-1. ネットワーク設定
nmcliコマンドを使用して、ネットワーク設定を行います。設定内容は次の通りです。
|#|設定項目|設定値|
|-:|--|--|
|1|IPアドレス|192.168.2.2/24|
|2|DNSサーバー|192.168.2.3|
|3|DNS名|example.com|

```bash
nmcli connection modify enp0s3 connection.autoconnect yes
nmcli connection modify enp0s3 ipv4.addresses 192.168.2.2/24
nmcli connection modify enp0s3 ipv4.dns 192.168.2.3
nmcli connection modify enp0s3 ipv4.method manual
nmcli connection modify enp0s3 ipv4.dns-search example.com
ifup enp0s3
```
IPアドレスが正しく設定されているか確認します。
```bash
ip addr show dev enp0s3
```

## 5-2. ホスト名設定
ホスト名を設定します。
```bash
hostnamectl set-hostname oem135.example.com
```
コマンド実行後、ホスト名が設定されたことを確認します。
```bash
uname -n
```

## 5-3. SELinux設定
SELinuxを無効化するため、rootユーザーで/etc/selinux/configファイルを下記のように編集します。
```diff:/etc/selinux/config
- 7 SELINUX=enforcing
+ 7 SELINUX=disabled 
```
その後、OSを再起動します。
```bash
shutdown -r now
```
再起動後に下記コマンドを実行し、SELinuxが無効化されていること(Disabledと表示される)を確認します。
```bash
getenforce
```

## 5-4. SSH設定(sshd_config)
sshサーバーの設定を行います。sshの接続が遅い場合、本設定を試してください。
```diff:/etc/ssh/sshd_config
- 38 #PermitRootLogin yes
+ 38 PermitRootLogin no
- 115 #UseDNS yes
+ 115 UseDNS no
```
設定後、sshdサービスを再起動します。
```bash
systemctl restart sshd.service
```

## 5-5. SSH設定(ssh_config)
sshクライアントの設定を行います。sshの接続が遅い場合、本設定を試してください。
```diff:/etc/ssh/ssh_config
- 59          GSSAPIAuthentication yes
+ 59          GSSAPIAuthentication no
```

## 5-6. firewalldの無効化
firewalldを無効化(masked)します。
```bash
systemctl stop    firewalld.service
systemctl disable firewalld.service
systemctl mask    firewalld.service
```
設定後、下記コマンドで無効化された(maskedと表示される)ことを確認します。
```bash
systemctl list-unit-files firewalld.service
```

## 5-7. ローカルyumの構成
Oracle DatabaseやOEMで必要なパッケージをDVDから導入するため、ローカルのリポジトリを定義します。
```file:/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///media
gpgcheck=0
gpgkey=file:///media/RPM-GPG-KEY
enabled=1
```
ローカルリポジトリが利用可能であることを確認します。
```bash
mount /dev/cdrom /media
yum --disablerepo=* --enablerepo=local list
```

## 5-8. 必須パッケージの導入
Oracle Enterprise ManagerのコンポーネントであるOMS(Oracle Management Server)、管理エージェント(OMA : Oracle Management Agent)とリポジトリとなるOracle Database 19c Enterprise Editionの導入で必要なパッケージを導入します。

### 5-8-1. Oracle Management Server 用のパッケージ導入
```bash
yum --disablerepo=* --enablerepo=local -y install binutils
yum --disablerepo=* --enablerepo=local -y install compat-libcap1
yum --disablerepo=* --enablerepo=local -y install compat-libstdc++-33.x86_64
yum --disablerepo=* --enablerepo=local -y install compat-libstdc++-33.i686
yum --disablerepo=* --enablerepo=local -y install gcc
yum --disablerepo=* --enablerepo=local -y install gcc-c++
yum --disablerepo=* --enablerepo=local -y install glibc.x86_64
yum --disablerepo=* --enablerepo=local -y install glibc.i686
yum --disablerepo=* --enablerepo=local -y install glibc-devel.x86_64
yum --disablerepo=* --enablerepo=local -y install glibc-devel.i686
yum --disablerepo=* --enablerepo=local -y install libaio.x86_64
yum --disablerepo=* --enablerepo=local -y install libaio-devel.x86_64
yum --disablerepo=* --enablerepo=local -y install libgcc.x86_64
yum --disablerepo=* --enablerepo=local -y install libgcc.i686
yum --disablerepo=* --enablerepo=local -y install libstdc++.x86_64
yum --disablerepo=* --enablerepo=local -y install libstdc++.i686
yum --disablerepo=* --enablerepo=local -y install libstdc++-devel.x86_64
yum --disablerepo=* --enablerepo=local -y install dejavu-serif-fonts
yum --disablerepo=* --enablerepo=local -y install ksh
yum --disablerepo=* --enablerepo=local -y install make
yum --disablerepo=* --enablerepo=local -y install sysstat
yum --disablerepo=* --enablerepo=local -y install numactl.x86_64
yum --disablerepo=* --enablerepo=local -y install numactl-devel.x86_64
yum --disablerepo=* --enablerepo=local -y install motif.x86_64
yum --disablerepo=* --enablerepo=local -y install motif-devel.x86_64
yum --disablerepo=* --enablerepo=local -y install redhat-lsb.x86_64
yum --disablerepo=* --enablerepo=local -y install redhat-lsb-core.x86_64
yum --disablerepo=* --enablerepo=local -y install openssl.x86_64
```
:::note
glibc-devel.i686はOEMマニュアルに導入が必要な旨の記載はありません。未導入の場合、OEMインストールの前提条件チェックで警告が表示されるため、ここで導入します。
:::
### 5-8-2. Oracle Management Agent 用のパッケージ導入
```bash
yum --disablerepo=* --enablerepo=local -y install make
yum --disablerepo=* --enablerepo=local -y install binutils
yum --disablerepo=* --enablerepo=local -y install gcc
yum --disablerepo=* --enablerepo=local -y install libaio
yum --disablerepo=* --enablerepo=local -y install glibc-common
yum --disablerepo=* --enablerepo=local -y install libstdc++
yum --disablerepo=* --enablerepo=local -y install sysstat
```

### 5-8-3. Oracle Database Enterprise Edition 19c 用のパッケージ導入
```bash
yum --disablerepo=* --enablerepo=local -y install bc
yum --disablerepo=* --enablerepo=local -y install binutils
yum --disablerepo=* --enablerepo=local -y install compat-libcap1
yum --disablerepo=* --enablerepo=local -y install compat-libstdc++-33
yum --disablerepo=* --enablerepo=local -y install elfutils-libelf
yum --disablerepo=* --enablerepo=local -y install elfutils-libelf-devel
yum --disablerepo=* --enablerepo=local -y install fontconfig-devel
yum --disablerepo=* --enablerepo=local -y install glibc
yum --disablerepo=* --enablerepo=local -y install glibc-devel
yum --disablerepo=* --enablerepo=local -y install ksh
yum --disablerepo=* --enablerepo=local -y install libaio
yum --disablerepo=* --enablerepo=local -y install libaio-devel
yum --disablerepo=* --enablerepo=local -y install libXrender
yum --disablerepo=* --enablerepo=local -y install libXrender-devel
yum --disablerepo=* --enablerepo=local -y install libX11
yum --disablerepo=* --enablerepo=local -y install libXau
yum --disablerepo=* --enablerepo=local -y install libXi
yum --disablerepo=* --enablerepo=local -y install libXtst
yum --disablerepo=* --enablerepo=local -y install libgcc
yum --disablerepo=* --enablerepo=local -y install libstdc++
yum --disablerepo=* --enablerepo=local -y install libstdc++-devel
yum --disablerepo=* --enablerepo=local -y install libxcb
yum --disablerepo=* --enablerepo=local -y install make
yum --disablerepo=* --enablerepo=local -y install policycoreutils
yum --disablerepo=* --enablerepo=local -y install policycoreutils-python
yum --disablerepo=* --enablerepo=local -y install smartmontools
yum --disablerepo=* --enablerepo=local -y install sysstat
```

### 5-8-4. 導入パッケージの確認
下記コマンドを実行し、必要なパッケージが導入されているかを確認します。
```bash
rpm -qa | sort
```
:::note
OMS, OMA, Database19cで必要なパッケージは、下記マニュアルから確認できます。
[[13.5] Cloud Control基本インストレーション・ガイド - Oracle Management Service用のパッケージ要件
](https://docs.oracle.com/cd/F45244_01/embsc/package-kernel-parameter-and-library-requirements-enterprise-manager-cloud-control.html#GUID-874AED88-DC4A-466D-BC2D-7CB4E579D629 "Oracle Management Service用のパッケージ要件")[[13.5] Cloud Control基本インストレーション・ガイド - Oracle Management Agent用のパッケージ要件
](https://docs.oracle.com/cd/F45244_01/embsc/package-kernel-parameter-and-library-requirements-enterprise-manager-cloud-control.html#GUID-3BB45A80-47C2-4AA5-929A-7523861E9A2C "Oracle Management Agent用のパッケージ要件
")[[19c] Databaseインストレーション・ガイドfor Linux - x86-64でサポートされているOracle Linux 7のディストリビューション](https://docs.oracle.com/cd/F19136_01/ladbi/supported-oracle-linux-7-distributions-for-x86-64.html#GUID-3E82890D-2552-4924-B458-70FFF02315F7 "x86-64でサポートされているOracle Linux 7のディストリビューション")
:::

## 5-9. ユーザー、グループの作成
oracleユーザーとoracleユーザーの主グループであるoinstall, 補助グループであるdba, oper, backupdba, dgdba, kmdba, racdbaを作成します。

### 5-9-1. グループの作成
```bash
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54330 racdba
```

### 5-9-2. ユーザーの作成
```bash
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
```

### 5-9-3. ユーザー・パスワードの設定
```bash
passwd oracle
```

### 5-9-4. oracleユーザーのumask設定
```bash
echo "umask 022" >> ~oracle/.bash_profile
cat ~oracle/.bash_profile
```

### 5-9-5. ユーザー・グループの確認
```bash
id -a oracle
```
:::note
上記ユーザー・グループの作成で使用しているユーザーID, グループIDは下記マニュアルを参考にしています。
[[19c] Databaseインストレーション・ガイドfor Linux - オペレーティング・システム権限のグループの作成](https://docs.oracle.com/cd/F19136_01/ladbi/creating-operating-system-privileges-groups.html#GUID-164A7218-166D-4B58-9A86-88149E8FCB83 "オペレーティング・システム権限のグループの作成")
[[19c] Databaseインストレーション・ガイドfor Linux - オペレーティング・システムのOracleインストール・ユーザー・アカウントの作成](https://docs.oracle.com/cd/F19136_01/ladbi/creating-operating-system-oracle-installation-user-accounts.html#GUID-4DA71FFA-AB5B-49AA-B21D-92C952C8A3FC "オペレーティング・システムのOracleインストール・ユーザー・アカウントの作成")
:::

## 5-10. カーネル・パラメーターの設定
カーネル・パラメーターをマニュアルに沿って設定します。ここで設定する値は、マニュアルの値をそのまま使用します。

### 5-10-1. カーネル・パラメーター・ファイルの設定
OMS, Oracle Databaseの動作に必要なカーネル・パラメーターの値を設定します。マニュアルに記載されているカーネル・パラメーターで、OMS, Oracle Databaseに共通な設定項目のうち、採用しないカーネル・パラメーターの値はコメントします(kernel.shmmaxやnet.ipv4.ip_local_port_range)。

```file:/etc/sysctl.d/99-oem-oracledb.conf
# OMS kernel parameter
### kernel.shmmax = 4294967295
net.ipv4.ip_local_port_range = 11000 65000

# Oracle Database kernel parameter
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.shmmni = 4096
kernel.panic_on_oops = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
### net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
```

### 5-10-2. カーネル・パラメーター反映
```bash
sysctl --system
```

### 5-10-3. カーネル・パラメーター値確認
```bash
sysctl -a | sort
```
:::note
カーネル・パラメーターの設定値は、下記マニュアルを参考にしています。
[[13.5] Cloud Control基本インストレーション・ガイド - Enterprise Manager Cloud Controlのカーネル・パラメーター要件](https://docs.oracle.com/cd/F45244_01/embsc/package-kernel-parameter-and-library-requirements-enterprise-manager-cloud-control.html#GUID-1846A32D-84D7-4255-BB38-DDEB03AFB76D "Enterprise Manager Cloud Controlのカーネル・パラメーター要件")
[[19c] データベース・インストレーション・ガイドfor Linux - Linuxのカーネル・パラメーターの構成](https://docs.oracle.com/cd/F19136_01/ladbi/configuring-kernel-parameters-for-linux.html#GUID-6127884D-FB27-45FA-9498-B2540632CBD5 "Linuxのカーネル・パラメーターの構成")
:::
:::note
kernel.shmallを設定する際、メモリー・ページ・サイズは4KiB(4096Byte)としています。
:::

## 5-11. Oracleソフトウェア・インストール・ユーザーのリソース制限設定
Oracleソフトウェア・インストール・ユーザーとは、ここではoracleユーザーを指します。oracleユーザーのリソース制限を設定します。

### 5-11-1. Oracleソフトウェア・インストール・ユーザーのリソース制限設定手順
```file:/etc/security/limits.d/oracle.conf
oracle soft nofile  1024
oracle hard nofile  65536
oracle soft nproc   4098
oracle hard nproc   16384
oracle soft stack   10240
oracle hard stack   32768
oracle hard memlock 15099500
oracle soft memlock 15099500
```

### 5-11-2. Oracleソフトウェア・インストール・ユーザーのリソース制限設定確認
下記コマンドをoracleユーザーで実行します。

```bash
# ソフト・リミットの確認
ulimit -aS
# ハード・リミットの確認
ulimit -aH
```

:::note
リソース制限の設定値は、下記マニュアルを参考にしています。
[[19c] データベース・インストレーション・ガイドfor Linux - Oracleソフトウェア・インストール・ユーザーのリソース制限の確認](https://docs.oracle.com/cd/F19136_01/ladbi/checking-resource-limits-for-oracle-software-installation-users.html#GUID-293874BD-8069-470F-BEBF-A77C06618D5A "Oracleソフトウェア・インストール・ユーザーのリソース制限の確認")
:::

## 5-12. 透過的なHugePagesの無効化
推奨設定である、透過的なHugePagesを無効化します。

### 5-12-1. 透過的なHugePagesの無効化設定
```diff:/etc/default/grub
- 6  GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
+ 6  GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never"
```
上記設定後、grub2-mkconfigコマンドで反映後、OSを再起動します。

```bash
# BIOS版
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI版
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
shutdown -r now
```

### 5-12-2. 透過的なHugePagesの無効化確認
再起動後、透過的なHugePagesが無効化(always madvise [never] と表示)されることを確認します。
```bash
cat /sys/kernel/mm/transparent_hugepage/enabled
```
:::note
透過的なHugePagesの無効化設定は、下記マニュアルを参考にしています。
[[19c] データベース管理者リファレンスfor Linux and UNIX System-Based Operating Systems - A.7.6 透過的なHugePagesの無効化](https://docs.oracle.com/cd/F19136_01/unxar/administering-oracle-database-on-linux.html#GUID-02E9147D-D565-4AF8-B12A-8E6E9F74BEEA "A.7.6 透過的なHugePagesの無効化")
[Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7 - 3.4.6. Optimizing Database Storage using Automatic System Tuning](https://access.redhat.com/documentation/en-us/reference_architectures/2017/html-single/deploying_oracle_database_12c_release_2_on_red_hat_enterprise_linux_7/index "3.4.6. Optimizing Database Storage using Automatic System Tuning")
:::
:::note
HugePagesの設定は、Oracle Enterprise Manager導入後に設定します。
:::

## 5-13. DB用ディスクの作成
DB用ディスク /dev/sdb にパーティションを作成し、xfsでフォーマットします。

### 5-13-1. パーティションの作成
partedでパーティションを作成します。/dev/sdb全体を1つのパーティションとして使用します。
```bash
parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb -- mkpart primary 1 -1
```

### 5-13-2. xfsファイルシステムの作成
/dev/sdb1上にxfsファイルシステムを作成します。
```bash
mkfs.xfs /dev/sdb1
```

## 5-14. ディレクトリーの作成
Oracle Enterprise managerを構成するにあたり、必要なディレクトリーを作成し、権限を付与します。
```bash
mkdir -p /u01/app/oracle/oradata
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
ls -lR /u01
```

## 5-15. /etc/fstab設定
/etc/fstabを設定します。
```bash
printf "%-42s%-24s%-8s%-16s%-2s%-2s\n" $(blkid /dev/sdb1 | gawk '{print $2}' | tr -d '"') /u01/app/oracle/oradata xfs defaults 0 0 >> /etc/fstab
printf "%-42s%-24s%-8s%-16s%2s%2s\n" /dev/cdrom /media iso9660 defaults,noauto,ro 0 0 >> /etc/fstab
cat /etc/fstab
```
その後、/u01/app/oracle/oradataをマウントし、権限を変更します。
```bash
mount /u01/app/oracle/oradata
df -k
chown oracle:oinstall /u01/app/oracle/oradata
ls -ld /u01/app/oracle/oradata
```

# 6. Oracle Database 19c のインストール
本章の設定では、指定がない限り全てoracleユーザーで実行します。

## 6-1. Oracle Database 19c Enterprise Edition を展開
ORACLE_HOME(/u01/app/oracle/product/19.3.0/dbhome_1)ディレクトリーを作成し、Oracle Database　Enterprise Edition 19cを展開します。

```bash
mkdir -p /u01/app/oracle/oradata/lib

###ここで、LINUX.X64_193000_db_home.zip をsftp等で/u01/app/oracle/oradata/libに格納します。
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
unzip /u01/app/oracle/oradata/lib/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
rm /u01/app/oracle/oradata/lib/LINUX.X64_193000_db_home.zip
```
## 6-2. Oracle Database 19c Enterprise Editionの導入
下記コマンドでインストーラーを起動し、OUIのウィザードに沿ってインストールします。
※ 詳細は省略します。太字はデフォルトから変更する箇所です。
```bash
/u01/app/oracle/product/19.3.0/dbhome_1/runInstaller
```
1. 構成オプションの選択 → **ソフトウェアのみの設定**
2. データベース・インストール・オプションの設定 → 単一インスタンス・データベースのインストール
3. データベース・エディションの選択 → Enterprise Edition
4. インストール場所の設定
   1. Oracleベース → /u01/app/oracle
5. インベントリの作成 :
   1. インベントリ・ディレクトリー → /u01/app/oraInventory
   2. oraInventoryグループ名 → oinstall
6. 権限のあるオペレーティング・システム・グループ
   1. データベース管理者(OSDBA)グループ → dba
   2. データベース・オペレータ(OSOPER)グループ(オプション) → oper
   3. データベースのバックアップおよびリカバリ(OSDBACKUPDBA)グループ → backupdba
   4. Data Guard管理者(OSDGDBA)グループ → dgdba
   5. 暗号化鍵管理(OSKMDBA)グループ → kmdba
   6. Real Application Cluster管理(OSRACDBA)グループ → racdba
7. rootスクリプトの実行構成 → 無効
8. サマリー : **レスポンス・ファイルの保存 (/home/oracle/db.rsp)**
9. 構成スクリプトの実行 (ここだけrootユーザーで実行)
```bash
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/dbhome_1/root.sh
```

## 6-3. oracleユーザーの環境変数を設定
oracleユーザーの環境変数を設定するため、.bash_profileに下記の行を追記します。
```file:/home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=${PATH}:${ORACLE_HOME}/bin:${ORACLE_HOME}/jdk/bin
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
export LANG=ja_JP.UTF-8
```
.bash_profileに設定後、下記コマンドで.bash_profileを読み込みます。
```bash
. /home/oracle/.bash_profile
```
# 7. リポジトリー・データベースの作成
DBCAを使用してOEMのリポジトリー用データベースを作成します。通常のDBCAでのデータベース作成と異なるのは、Oracle社から提供されているテンプレートを使用し、インストール時間を短縮します。
本章の設定では、指定がない限り全てoracleユーザーで実行します。

## 7-1. 事前構成済 データベース・テンプレートを展開
事前に準備したテンプレート・ファイル(19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip)を、/u01/app/oracle/oradata/libに格納後、${ORACLE_HOME}/assistants/dbca/templatesディレクトリーに展開します。

```bash
###ここで、19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip をsftp等で/u01/app/oracle/oradata/libに格納します。
ls ${ORACLE_HOME}/assistants/dbca/templates
unzip /u01/app/oracle/oradata/lib/19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip \
  -d ${ORACLE_HOME}/assistants/dbca/templates
ls ${ORACLE_HOME}/assistants/dbca/templates
rm -f /u01/app/oracle/oradata/lib/19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip
```

## 7-2. リポジトリー・データベースの作成
下記コマンドでDBCAを起動し、ウィザードに沿ってインストールします。
※ 詳細は省略します。太字はデフォルトから変更する箇所です。
```bash
${ORACLE_HOME}/bin/dbca
```
1. データベース操作の選択 → データベースの作成
2. データベース作成モードの選択 → **拡張構成**
3. データベース・デプロイメント・タイプの選択
   1. データベース・タイプ → Oracle単一インスタンス・データベース
   2. データベースのテンプレート → **19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Small_deployment.dbc**
4. データべースIDの詳細の指定
   1. グローバル・データベース名 → **oem135db.example.com**
   2. SID → **oem135db**
5. データベース記憶域オプションの選択 → **データベース記憶域属性に次を使用**
   1. データベース・ファイルの記憶域タイプ → ファイルシステム
   2. データベース・ファイルの位置 → {ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}
   3. Oracle Managed Filesの使用(OMF) → 無効
6. 高速リカバリ・オプションの選択
   1. 高速リカバリ領域の指定 → 無効
   2. アーカイブ有効化 → 無効
7. ネットワーク構成詳細の指定
   1. 新規リスナーの作成 → **有効**
      1. リスナー名 → **LISTENER**
      2. リスナー・ポート → **1521**
8. Oracle Data Vault構成オプションの選択
   1. Oracle Database Valutの構成 → 無効
   2. Oracle Label Securityの構成 → 無効
9. 構成オプションの指定
   1. メモリー → 自動共有メモリー管理を使用
      1. SGAサイズ → **4096 MB**
      2. PGAサイズ → **1024 MB**
   2. サイズ指定
      1. オペレーティング・システム・ユーザー・プロセスの最大数 → 300
   3. キャラクターセット → Unicode(AL32UTF8)を使用
      1. 各国語文字セット → AL16UTF16 - Unicode UTF-16汎用キャラクタ・セット
      2. デフォルト言語 → **日本語**
      3. デフォルト地域 → **日本**
   4. 接続モード → 専用サーバー・モード
   5. サンプル・スキーマ
      1. データベースにサンプル・スキーマを追加 → 無効
10. 管理オプションの指定
    1. Enterprise Manager (EM) Database Expressの構成 → **無効**
    2. Enterprise Manager (EM) Cloud Controlへの登録 → 無効
11. データベース・ユーザー資格証明の指定 → **適宜設定**
12. データベース作成オプションの選択
    1. データベースの作成 : 有効
       1. 後処理データベース作成ファイルスクリプト → {ORACLE_HOME}/assistants/dbca/templates/shpool_19_11_0_0_0_Database_SQL_for_EM13_5_0_0_0.sql
    2.  データベース・テンプレートとして保存 → 無効
    3.  データベース作成スクリプトの生成 → **有効**
       1. 宛先ディレクトリー → {ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/scripts
13. サマリー → **レスポンス・ファイルの保存 (/home/oracle/dbca.rsp)**

## 7-3. oracleユーザーの環境変数設定
oracleユーザーの環境変数を設定するため、.bash_profileに下記の行を追記します。
```file:/home/oracle/.bash_profile
export ORACLE_SID=oem135db
```
.bash_profileに設定後、下記コマンドで.bash_profileを読み込みます。
```bash
. /home/oracle/.bash_profile
```

## 7-4. データベース・テンプレートのzipファイル削除

```bash
rm /u01/app/oracle/oradata/lib/19_11_0_0_0_Database_Template_for_EM13_5_0_0_0_Linux_x64.zip
ls -l /u01/app/oracle/oradata/lib
```
:::note
Oracle DatabaseのRelease Updateパッチを適用する場合、OPatchの最新化と合わせて7-3.の後で実施します。
:::

# 8. Oracle Enterprise Manager 13.5の導入
Oracle Enterprise manager 13.5を導入します。
本章の設定では、指定がない限り全てoracleユーザーで実行します。

## 8-1. インストーラーの配置
事前に準備したインストーラー(em13500_linux64.bin, em13500_linux64-2.zip, em13500_linux64-3.zip, em13500_linux64-4.zip, em13500_linux64-5.zip)を、/u01/app/oracle/oradata/libに格納します。zipファイルは**展開しません**。

```bash
###ここで、以下の合計5ファイルをsftp等で/u01/app/oracle/oradata/libに格納します。
###em13500_linux64.bin
###em13500_linux64-2.zip
###em13500_linux64-3.zip
###em13500_linux64-4.zip
###em13500_linux64-5.zip 
chmod u+x /u01/app/oracle/oradata/lib/em13500_linux64.bin
ls -l /u01/app/oracle/oradata/lib/em13500_linux64.bin
```

## 8-2. Oracle Enterprise Managerの導入
下記コマンドでインストーラ(OUI)を起動し、ウィザードに沿ってインストールします。
※ 詳細は省略します。太字はデフォルトから変更する箇所です。

```bash
/u01/app/oracle/oradata/lib/em13500_linux64.bin
```
1. インストール・タイプ
   1. Enterprise Managerシステムの新規作成 → Advanced Install
2. ソフトウェアの更新 → **スキップ**
3. 前提条件のチェック → ステータス全てが成功であることを確認
4. インストールの詳細 :
   1. ミドルウェア・ホームの場所 → **/u01/app/oracle/product/em13c/oraclehome**
   2. エージェント・ベース・ディレクトリ → **/u01/app/oracle/product/em13c/agentbasedir**
   3. ホスト名 → oem135.example.com
5. プラグインの選択
   1. Oracle Cloud Framework → 選択
   2. Oracle Database → 選択
   3. Oracle Exadata → 選択
   4. Oracle Fusion Middleware → 選択
   5. Systems Infrastructure → 選択
   6. 上記以外 → 未選択
6. WebLogic Server構成の詳細
   1. WebLogicドメイン名 → GCDomain
   2. WebLogicユーザー名 → weblogic
   3. WebLogicパスワード → **適宜設定**
   4. ノード・マネージャ・ユーザー名 → nodemanager
   5. ノード・マネージャのパスワード → **適宜設定**
   6. OMSインスタンスベースの場所 → **/u01/app/oracle/product/em13c/gc_inst**
7. データベース接続の詳細
   1. データベース・ホスト名 → oem135.example.com
   2. ポート → **1521**
   3. サービス/SID → **oem135db**
   4. SYSパスワード →  **oem135dbのsysパスワード**
   5. デプロイメント・サイズ → SMALL
8. Database Prerequisite Checks → 全てのステータスがSucceededであることを確認
9. Enterprise Manager構成詳細 :
   1. SYSMANパスワード → **適宜設定**
   2. エージェント登録パスワード → **適宜設定**
10. Enterprise Manager共有場所の詳細
    1. Oracleソフトウェア・ライブラリの構成 → 有効
       1. ソフトウェア・ライブラリの場所 → /u01/app/oracle/product/em13c/swlib
11. ポート構成の詳細
    1. Enterprise Manager Upload Http Port (4889-4898) → 4889
    2. OHS Http SSL Port (9899,9851-9900) → 9851
    3. Managed Server Http Port (7201-7300) → 7202
    4. Oracle Management Agent Port (3872,1830-1849) → 3872
    5. Enterprise Manager Central Console Http Port (7788-7798) → 7788
    6. Node Manager Http SSL Port (7401-7500) → 7403
    7. OHS Http Port (9788, 9751-9800) → 9788
    8. Admin Server Http SSL Port (7101-7200) → 7102
    9. Managed Server Http SSL Port (7301-7400) → 7301
    10. Enterprise Manager Upload Http SSL Port (1159, 4899-4908) → 4903
    11. Enterprise Manager Central Console Http SSL Port (7799-7809)  → 7803
12. 確認 : オペレーションなし
13. 構成スクリプトの実行 (ここだけrootユーザーで実行)
```bash
/u01/app/oracle/product/em13c/oraclehome/allroot.sh
```
:::note  
使用する環境に依存しますが、私の環境では、8vCore / 16GB Memでインストールに1時間10分くらいかかりました。
:::
:::note
この環境の場合Cloud Controlへのアクセスは、https://192.168.2.2:7803/em/ になります。FireFoxの使用を推奨します。
:::

## 8-3. インストーラーの削除
```bash
rm /u01/app/oracle/oradata/lib/em13500_linux64.bin
rm /u01/app/oracle/oradata/lib/em13500_linux64-[2-5].zip
ls -l /u01/app/oracle/oradata/lib
rmdir /u01/app/oracle/oradata/lib
```
:::note
Oracle Enterprise Managerのパッチを適用する場合、OPatch, OMSPatcherの最新化と合わせて8-3.の後で実施します。
:::

## 8-4. HugePagesの設定
Oracle Database, Oracle Management Server, Oracle Management Agentが起動している状態で、必要なHugePagesのサイズを確認し、カーネルパラメーターに登録します。HugePagesのサイズは下記コマンドを実行して推奨値を算出します(oracleユーザーで実行します)。
```bash
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`
NUM_PG=1
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"`
do
   MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
   if [ $MIN_PG -gt 0 ]; then
      NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
   fi
done
echo $NUM_PG
```
ここで出力された値(仮に2053とします)を、/etc/sysctl.d/99-oem-oracledb.confに追記します(rootユーザーで実施)。
```diff:/etc/sysctl.d/99-oem-oracledb.conf
+ 18
+ 19 # HugePages
+ 20 vm.nr_hugepages = 2053
```

:::note
HugePagesのサイズは、hugepages_settings.shというスクリプトで推奨値を計算できます。
本スクリプトはMy Oracle Support 401749.1から入手可能ですが、今回はOTNの範囲で作成のため、以下マニュアルを流用します。
[[12cR1] データベース管理者リファレンスfor Linux and UNIX System-Based Operating Systems - G.1.2 LinuxでのHugePagesの構成](https://docs.oracle.com/cd/E57425_01/121/UNXAR/appi_vlm.htm#CACFIHHA "G.1.2 LinuxでのHugePagesの構成")
このマニュアル内では、カーネル・バージョンが3.8までしか対応していませんが(Oracle Linux 7.9のデフォルトは5.4)、いくつかのサイトを確認するに、カーネル・バージョンが3.8と5.4の時で算出方法に変更ないと判断し、上記コマンドの算出としています。
:::

# 9. Oracle Enterprise Manager の初期設定
Oracle Enterprise Managerを起動する仮想マシンを頻繁に起動/停止を行う場合、仮想マシン起動時にOEMが自動的に起動してほしくない場合があります。それを制御するため、OMS, OMAの自動起動を抑止し、OEMの手動起動・停止スクリプトを記載します。
本章の設定では、指定がない限り全てoracleユーザーで実行します。

## 9-1. OS起動時のOMS/OMA自動起動抑止
OS起動時にOMS/OMAの自動起動を抑止する場合、下記の操作を行います。
本操作はrootユーザーで実行します。
```bash
chkconfig gcstartup off
chkconfig --list gcstartup 
```
## 9-2. Oracle Enterprise Manager起動スクリプト(手動実行用)
Oracle Enterprise Manager起動スクリプト(oem135_start_oem.sh)を次の内容で保存します。

```bash
#!/bin/bash
# リスナーの起動
lsnrctl start LISTENER

# リポジトリ・データベースの起動
sqlplus / as sysdba << _EOF_
  startup
_EOF_

# Oracle Management Serverの起動
pushd /u01/app/oracle/product/em13c/oraclehome/bin
/u01/app/oracle/product/em13c/oraclehome/bin/emctl start oms
/u01/app/oracle/product/em13c/oraclehome/bin/emctl status oms
popd

# Oracle Management Agentの起動
pushd /u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin
/u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin/emctl start agent
/u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin/emctl status agent
popd

# OEMアクセス先出力
echo "https://192.168.2.2:7803/em/login.jsp"
```

## 9-3. Oracle Enterprise Manager停止スクリプト(手動実行用)
Oracle Enterprise Manager停止スクリプト(oem135_stop_oem.sh)を次の内容で保存します。

```bash
#!/bin/bash
# Oracle Management Agentの停止
pushd /u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin
/u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin/emctl stop agent
/u01/app/oracle/product/em13c/agentbasedir/agent_inst/bin/emctl status agent
popd

# Oracle Management Serverの停止
pushd /u01/app/oracle/product/em13c/oraclehome/bin
/u01/app/oracle/product/em13c/oraclehome/bin/emctl stop oms -all
/u01/app/oracle/product/em13c/oraclehome/bin/emctl status oms
popd

# リポジトリ・データベースの停止
sqlplus / as sysdba << _EOF_
  shutdown immediate
_EOF_

# リスナーの停止
lsnrctl stop LISTENER
```