Oracleインストール時のエラー解決「Makeファイル'/home/oracle/database/rdbms/lib/ins_rdbms.mk'のターゲット'irman ioracle idrdactl idrdalsnr idrdaproc'を起動中のエラーです。」

CentOS7にOracle18cをインストール時に
<font color="Red"><b>Makeファイル'/home/oracle/database/rdbms/lib/ins_rdbms.mk'のターゲット'irman ioracle idrdactl idrdalsnr idrdaproc'を起動中のエラーです。詳細は'/tmp/InstallActions2020-10-01_04-31-44PM/installActions2020-10-01_04-31-44PM.log'を参照してください。</b></font>
が発生した時に解決した方法を紹介します。

# 環境

+ OS：CentOS Linux release 7.7.1908

```
[root@CENTOS7 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@CENTOS7 ~]#
```

# 発生したエラー

<font color="Red"><b>Makeファイル'/home/oracle/database/rdbms/lib/ins_rdbms.mk'のターゲット'irman ioracle idrdactl idrdalsnr idrdaproc'を起動中のエラーです。詳細は'/tmp/InstallActions2020-10-01_04-31-44PM/installActions2020-10-01_04-31-44PM.log'を参照してください。</b></font>

```log:/tmp/InstallActions2020-10-01_04-31-44PM/installActions2020-10-01_04-31-44PM.log
INFO:  [2020/10/01 16:31:56] Using oracle.bali.ewt.olaf2.OracleLookAndFeel LookAndFeel
INFO:  [2020/10/01 16:31:58] Loading localized help from jar:file:/home/oracle/database/install/jlib/instdb.jar!/oracle/install/ivw/db/resource/helpset/ja/dbinstaller_help.hs
INFO:  [2020/10/01 16:32:01] セットアップ・ドライバのロード中
INFO:  [2020/10/01 16:32:01] Oracle Database設定ウィザードを起動中...

INFO:  [2020/10/01 16:32:01] Using default oui proxy mapping URL
INFO:  [2020/10/01 16:32:01] Loading proxy mapping from jar:file:/home/oracle/database/install/jlib/installcommons_1.0.0b.jar!/oracle/install/driver/oui/proxy-mappings.properties
INFO:  [2020/10/01 16:32:01] Using class oracle.install.driver.oui.OUISSHSupportManager as proxy for oracle.install.commons.net.support.SSHSupportManager
INFO:  [2020/10/01 16:32:01] Using class oracle.install.driver.oui.OUIOracleServiceRegistry as proxy for oracle.install.commons.base.util.OracleServiceRegistry
INFO:  [2020/10/01 16:32:01] Set proxy mappings to System.properties
INFO:  [2020/10/01 16:32:01] ORACLE_HOME=/home/oracle/database
INFO:  [2020/10/01 16:32:01] fwhome=/home/oracle/database
INFO:  [2020/10/01 16:32:04] Gathering system details...
INFO:  [2020/10/01 16:32:04] Gathering system details...
INFO:  [2020/10/01 16:32:04] セットアップBeanの登録中
INFO:  [2020/10/01 16:32:04] フローの作成中
INFO:  [2020/10/01 16:32:04] Opening bean stores from which the beans can be loaded
～省略～
情報: 
chmod 751 /home/oracle/database/bin/rman

情報: 
chmod 755 /home/oracle/database/bin

情報: 


情報: 
 - Linking Oracle 

情報: 
rm -f /home/oracle/database/rdbms/lib/oracle

情報: 
/home/oracle/database/bin/orald  -o /home/oracle/database/rdbms/lib/oracle -m64 -z noexecstack -Wl,--disable-new-dtags -L/home/oracle/database/rdbms/lib/ -L/home/oracle/database/lib/ -L/home/oracle/database/lib/stubs/   -Wl,-E /home/oracle/database/rdbms/lib/opimai.o /home/oracle/database/rdbms/lib/ssoraed.o /home/oracle/database/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv18 -Wl,--no-whole-archive /home/oracle/database/lib/nautab.o /home/oracle/database/lib/naeet.o /home/oracle/database/lib/naect.o /ho
情報: 
me/oracle/database/lib/naedhs.o /home/oracle/database/rdbms/lib/config.o  -ldmext -lserver18 -lodm18 -lofs -lcell18 -lnnet18 -lskgxp18 -lsnls18 -lnls18  -lcore18 -lsnls18 -lnls18 -lcore18 -lsnls18 -lnls18 -lxml18 -lcore18 -lunls18 -lsnls18 -lnls18 -lcore18 -lnls18 -lclient18  -lvsnst18 -lcommon18 -lgeneric18 -lknlopt -loraolap18 -lskjcx18 -lslax18 -lpls18  -lrt -lplp18 -ldmext -lserver18 -lclient18  -lvsnst18 -lcommon18 -lgeneric18 `if [ -f /home/oracle/database/lib/libavserver18.a ] ; then echo "-lavserver
情報: 
18" ; else echo "-lavstub18"; fi` `if [ -f /home/oracle/database/lib/libavclient18.a ] ; then echo "-lavclient18" ; fi` -lknlopt -lslax18 -lpls18  -lrt -lplp18 -ljavavm18 -lserver18  -lwwg  `cat /home/oracle/database/lib/ldflags`    -lncrypt18 -lnsgr18 -lnzjs18 -ln18 -lnl18 -lngsmshd18 -lnro18 `cat /home/oracle/database/lib/ldflags`    -lncrypt18 -lnsgr18 -lnzjs18 -ln18 -lnl18 -lngsmshd18 -lnnzst18 -lzt18 -lztkg18 -lmm -lsnls18 -lnls18  -lcore18 -lsnls18 -lnls18 -lcore18 -lsnls18 -lnls18 -lxml18 -lcore18 -l
情報: 
unls18 -lsnls18 -lnls18 -lcore18 -lnls18 -lztkg18 `cat /home/oracle/database/lib/ldflags`    -lncrypt18 -lnsgr18 -lnzjs18 -ln18 -lnl18 -lngsmshd18 -lnro18 `cat /home/oracle/database/lib/ldflags`    -lncrypt18 -lnsgr18 -lnzjs18 -ln18 -lnl18 -lngsmshd18 -lnnzst18 -lzt18 -lztkg18   -lsnls18 -lnls18  -lcore18 -lsnls18 -lnls18 -lcore18 -lsnls18 -lnls18 -lxml18 -lcore18 -lunls18 -lsnls18 -lnls18 -lcore18 -lnls18 `if /usr/bin/ar tv /home/oracle/database/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; th
情報: 
en echo " " ; else echo "-lordsdo18 -lserver18"; fi` -L/home/oracle/database/ctx/lib/ -lctxc18 -lctx18 -lzx18 -lgx18 -lctx18 -lzx18 -lgx18 -lordimt -lclscest18 -loevm -lclsra18 -ldbcfg18 -lhasgen18 -lskgxn2 -lnnzst18 -lzt18 -lxml18 -lgeneric18 -locr18 -locrb18 -locrutl18 -lhasgen18 -lskgxn2 -lnnzst18 -lzt18 -lxml18 -lgeneric18  -lgeneric18 -lorazip -loraz -llzopro5 -lorabz2 -lipp_z -lipp_bz2 -lippdcemerged -lippsemerged -lippdcmerged  -lippsmerged -lippcore  -lippcpemerged -lippcpmerged  -lsnls18 -lnls18  -
情報: 
lcore18 -lsnls18 -lnls18 -lcore18 -lsnls18 -lnls18 -lxml18 -lcore18 -lunls18 -lsnls18 -lnls18 -lcore18 -lnls18 -lsnls18 -lunls18  -lsnls18 -lnls18  -lcore18 -lsnls18 -lnls18 -lcore18 -lsnls18 -lnls18 -lxml18 -lcore18 -lunls18 -lsnls18 -lnls18 -lcore18 -lnls18 -lasmclnt18 -lcommon18 -lcore18  -ledtn18 -laio -lons  -lfthread18   `cat /home/oracle/database/lib/sysliblist` -Wl,-rpath,/home/oracle/database/lib -lm    `cat /home/oracle/database/lib/sysliblist` -ldl -lm   -L/home/oracle/database/lib `test -x /usr/
情報: 
bin/hugeedit -a -r /usr/lib64/libhugetlbfs.so && test -r /home/oracle/database/rdbms/lib/shugetlbfs.o && echo -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152 -lhugetlbfs`

情報: 
/home/oracle/database/bin/orald: 86 行: 12679 強制終了            "${cmdpfx[@]}" "${cmd[@]}" "${cmdsfx[@]}"
make: *** [/home/oracle/database/rdbms/lib/oracle] エラー 137

情報: 作成されたプロセスからの出力を終了します。
情報: ----------------------------------
情報: アクションからスローされた例外: make
例外名: MakefileException
例外文字列: Makeファイル'/home/oracle/database/rdbms/lib/ins_rdbms.mk'のターゲット'irman ioracle idrdactl idrdalsnr idrdaproc'を起動中のエラーです。詳細は'/tmp/InstallActions2020-10-01_04-31-44PM/installActions2020-10-01_04-31-44PM.log'を参照してください。
例外の重大度: 1
```

# 原因

+ メモリ不足またはスワップ領域不足

「[Oracle Databaseインストールのサーバー・ハードウェアのチェックリスト](https://docs.oracle.com/cd/E96517_01/ladbi/server-hardware-checklist-for-oracle-database-installation.html#GUID-D311E770-9444-45D0-A122-6491D1B66B8A "Oracle Databaseインストールのサーバー・ハードウェアのチェックリスト")」の「最小RAM」に以下の記載があります。

|チェック内容|タスク|
|---|---|
|最小RAM|・Oracle Databaseのインストールには、1GB以上のRAMが必要です。2GBのRAMを推奨します。<br/>・Oracle Grid Infrastructureのインストールには、8GB以上のRAMが必要です。|

また、「[Oracle Databaseインストールのサーバー構成のチェックリスト](https://docs.oracle.com/cd/E96517_01/ladbi/server-configuration-checklist-for-oracle-database-installation.html#GUID-CD4657FB-2DDC-4B30-AAB4-2C927045A86D "Oracle Databaseインストールのサーバー構成のチェックリスト")」の「RAMに対して相対的なスワップ領域割当(Oracle Database)」に以下の記載があります。

|チェック内容|タスク|
|---|---|
|RAMに対して相対的なスワップ領域割当(Oracle Database)|1GBから2GB: RAMのサイズの1.5倍<br/>2GBから16GB: RAMのサイズに等しい<br/>16GBより大きい: 16GB<br/>注意: LinuxサーバーでHugePagesを有効にする場合は、スワップ領域を計算する前に、HugePagesに割り当てられるメモリー分を使用可能なRAMから差し引く必要があります。|

# 解決方法

### 1. （その１）スワップ領域を拡張する

以下の手順でスワップ領域を拡張するとインストールできました。

まずはスワップの使用状況をデバイスごとに表示します。
`swapon -s`

```console:実行結果
[root@CENTOS7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	1679356	624384	-2
/swapfile                              	file	1048572	0	-3
[root@CENTOS7 ~]#
```

スワップ領域用のファイル（ここでは「swapfile2」）を作成します。
`dd if=/dev/zero of=/swapfile2 bs=1M count=4096`
（ブロックサイズ：1Mを4096個）

```console:実行結果
[root@CENTOS7 ~]# dd if=/dev/zero of=/swapfile2 bs=1M count=4096
4096+0 レコード入力
4096+0 レコード出力
4294967296 バイト (4.3 GB) コピーされました、 89.4434 秒、 48.0 MB/秒
[root@CENTOS7 ~]#
```

作成した「swapfile2」の権限を``-rw-------（600）`とします。
`chmod 600 /swapfile2`

```console:実行結果
[root@CENTOS7 ~]# chmod 600 /swapfile2
[root@CENTOS7 ~]#
```

ファイル（swapfile2）をスワップ領域として準備します。
`mkswap /swapfile2`

```console:実行結果
[root@CENTOS7 ~]# mkswap /swapfile2
スワップ空間バージョン1を設定します、サイズ = 4194300 KiB
ラベルはありません, UUID=720ce12a-69db-4880-88c7-7f91e19eadc0
[root@CENTOS7 ~]#
```

スワップ領域を有効化します。
`swapon /swapfile2`

```console:実行結果
[root@CENTOS7 ~]# swapon /swapfile2
[root@CENTOS7 ~]#
```

再度スワップの使用状況をデバイスごとに表示します。
`swapon -s`

```console:実行結果
[root@CENTOS7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	1679356	622336	-2
/swapfile                              	file	1048572	0	-3
/swapfile2                             	file	4194300	0	-4
[root@CENTOS7 ~#
```

ここでは一時的にスワップ領域を拡張しただけなので「/etc/fstab」は変更していません。永続化するには「/etc/fstab」に追加する必要があります。

### 2. （その２）メモリ（RAM）を拡張する

スワップ領域を拡張しても解決できない場合、メモリ（RAM）を増やすことで解決しました。

Virtualboxの場合、一旦OSをシャットダウンします。
`systemctl poweroff`

Oracle VN VairtualBox マネージャーで対象のOSを選択し「設定」をクリックします。
![92.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/57e35d86-f716-2eed-a4dc-83cc5b8be4c3.png)

「システム」を選択しメインメモリの値を増やし（「2048 MB」以上程度にする：ここでは「3072 MB」）「OK」をクリックする。
![93.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/8cef8997-688e-bf49-f420-dfc40ac40bc0.png)

対象のOSを選択し「起動」をクリックします。
![91.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/65353dcc-5007-c120-36cc-c66cee48dbe7.png)

メインメモリの値が変わったので再度カーネルパラメータの設定を行います。
「etc/sysctl.d/97-oracle-database-sysctl.conf」を上書きで再設定します。

`MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
SHMMAX=$(expr $MEMTOTAL / 2)
SHMMNI=4096
PAGESIZE=$(getconf PAGE_SIZE)
cat > /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = $SHMMAX
kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \))
kernel.shmmni = $SHMMNI
kernel.sem = 250 32000 100 128
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
EOF`

```console:実行結果
[root@CENTOS7 ~]# MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
[root@CENTOS7 ~]# SHMMAX=$(expr $MEMTOTAL / 2)
[root@CENTOS7 ~]# SHMMNI=4096
[root@CENTOS7 ~]# PAGESIZE=$(getconf PAGE_SIZE)
[root@CENTOS7 ~]# cat > /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF
> fs.aio-max-nr = 1048576
> fs.file-max = 6815744
> kernel.shmmax = $SHMMAX
> kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \))
> kernel.shmmni = $SHMMNI
> kernel.sem = 250 32000 100 128
> 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
> EOF
[root@CENTOS7 ~]#
```

以下のコマンドでカーネルパラメータを設定します。
`sysctl --system`

```console:実行結果
[root@CENTOS7 ~]# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
kernel.yama.ptrace_scope = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/97-oracle-database-sysctl.conf ...
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 1576521728
kernel.shmall = 98532608
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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
* Applying /etc/sysctl.d/99-sysctl.conf ...
fs.file-max = 6815744
* Applying /etc/sysctl.conf ...
fs.file-max = 6815744
[root@CENTOS7 ~]#
```


# 参考

> [CentOS7 スワップファイル（swap file）の作成方法](https://qiita.com/wmx/items/631222f2e5a9e7a59fb4 "CentOS7 スワップファイル（swap file）の作成方法")

---

以上