環境
- Oracle Grid Infrastructure 12.1.0.2
- Oracle Linux 6.5
- VirtualBox 6.0 (5.0以降も同様のはず) または Parallels Desktop 14
- Mac OSX Mojave
現象
Grid Infrastructureインストール時に、Linking RMAN Utilityの過程で、
Error in invoking target 'irman ioracle' of makefile '/u01/app/gi/12.1.0/grid/rdbms/lib/ins_rdbms.mk'.
というメッセージダイアログが出ます。
それ自体は、libjavavm12.a
を$GRID_HOME/lib/
にコピーして再実行すると回避できるのですが、その後、以下のようなメッセージで、rootスクリプトの実行で詰まることとなります。
/u01/app/12.1.0/grid/crs/config/rootconfig.sh: line 131: 16191 Segmentation fault (core dumped) $ROOTSCRIPT $ROOTSCRIPT_ARGS
The command '/u01/app/12.1.0/grid/perl/bin/perl -I/u01/app/12.1.0/grid/perl/lib -I/u01/app/12.1.0/grid/crs/install /u01/app/12.1.0/grid/crs/install/rootcrs.pl -auto -lang=en_US.UTF-8' execution failed
Execution status of node1 is:true
Execution exit code of node1 is:139
対処
インストールする前の状態に巻き戻した後、VMを停止し、各仮想化製品の機能でCPUIDフラグを編集します。
例えばVirtualBoxの場合、以下をホスト(操作端末)で実行します。
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/Leaf" "0x4"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/SubLeaf" "0x4"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/eax" "0"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/ebx" "0"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/ecx" "0"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/edx" "0"
VBoxManage setextradata VM_NAME "VBoxInternal/CPUM/HostCPUID/Cache/SubLeafMask" "0xffffffff"
Oracle VM VirtualBox を用いた Oracle Real Application Clusters (RAC) 12c Release 1 環境の構築に従ってやっている場合は、VM_NAMEの部分をnode1
とnode2
に置き換えて実行する感じです。
現時点での最新(VirtualBox 6.0.10)にて、上記の方法でGrid Infrastructureのインストールに成功するところまで確認しました。
原因
Oracleに同梱しているPerlには、L4キャッシュが存在するCPUを搭載するマシンでの動作にバグがあるようです。そのバグの影響が回り回って、libjavavm12.aが作成されないまま次に進もうとした、という感じでしょうか。なお、4.3などの古いVirtualBoxでは、バグを引き起こす情報をVMに渡していないため、回避できている様子。
参考:
VBox 5.0.10/12 issues with PERL and Seg Faults – UPDATE
Oracle 12c, VMWare Fusion and the perl binary’s segmentation fault