Solarisで Oracle Universal Installer (OUI) を使っての Oracle Database のインストール。前提条件のチェックで「OSカーネル・パラメータ"project.max-shm-memory"が正しく設定されているかどうか確認して!」とチェックエラーに。ということで対応内容の備忘録です。
【チェックのエラー内容】
これは、OSカーネル・パラメータ"project.max-shm-memory"が正しく設定されているかどうかをテストする前提条件です。
予想される値
: 2621440000
実際値
: 1306408960
- Oracle Solaris 11.3 on x86-64 (64-Bit)
- Oracle Database 12c Release 1 Standard Edition
- 物理メモリ:5GB
Oracle Database 共有メモリー・リソースの要件
Oracle Databaseクイック・インストレーション・ガイド によると 必要な共有メモリー・リソースは以下のようになっています。
■ RAM 1から16GB
物理メモリー・サイズの半分■ RAM 16GBよりも大きい
8GB以上
今回は、RAMが 5GBなので、2.5GB(2621440000)以上を project.max-shm-memory に設定する必要があります。
oracle ユーザの利用できる特権メモリを確認
root@Solaris:~# su - oracle Oracle Corporation SunOS 5.11 11.3 September 2015 access control disabled, clients can connect from any host oracle@Solaris:~$
シェルの実行権限を ユーザ oracle に移します。
oracle@Solaris:~$ prctl -n project.max-shm-memory -i process $$ process: 2474: -bash NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.max-shm-memory usage 1.80MB privileged 1.22GB - deny - system 16.0EB max deny - oracle@Solaris:~$
project.max-shm-memory ですが、ユーザ oracle の特権メモリは 1.22GB (1306408960) までのようです。前提チェックのエラーで指摘された実測値と一致します。
oracle ユーザのプロジェクト設定を確認
Oracle Universal Installer (OUI) は oracle ユーザで実行します。 oracleユーザに属するプロジェクトを確認と。
root@Solaris:~# su - Oracle Corporation SunOS 5.11 11.3 September 2015 access control disabled, clients can connect from any host root@Solaris:~#
root にシェルの実行権限を戻します。
root@Solaris:~# id -p oracle uid=100(oracle) gid=200(oinstall) projid=3(default)
ユーザは oracle 、所属グループは oinstall そして 属性プロジェクトは default です。
root@Solaris:~# cat /etc/project system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: root@Solaris:~#
プロジェクトの設定を確認しました。ユーザ oracle に対しては特に指定なし。グループ oinstall についても特に指定なし。プロジェクト default については「default:3::::」なので、デフォルト設定のようです。
project.max-shm-memory の設定
インストールするのが ユーザ oracle なので、それに対して project.max-shm-memory 2.5GB (RAM 5Gの半分) を設定します。
root@Solaris:~# echo "user.oracle:100::::project.max-shm-memory=(privileged,2684354560,deny)" >> /etc/project root@Solaris:~#
/etc/project の末尾に 以下を追記しました。
user.oracle:100::::project.max-shm-memory=(privileged,2684354560,deny)
root@Solaris:~# cat /etc/project system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: user.oracle:100::::project.max-shm-memory=(privileged,2684354560,deny) root@Solaris:~#
追記されていることが確認できました。
oracle ユーザの利用できる特権メモリを確認
root@Solaris:~# su - oracle Oracle Corporation SunOS 5.11 11.3 September 2015 access control disabled, clients can connect from any host oracle@Solaris:~$
シェルの実行権限を ユーザ oracle に移します。
oracle@Solaris:~$ prctl -n project.max-shm-memory -i process $$ process: 2500: -bash NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.max-shm-memory usage 0B privileged 2.50GB - deny - system 16.0EB max deny - - oracle@Solaris:~$
ユーザ oracle の特権メモリは 2.5GB (2621440000) に変更されていることが確認できました。
これで無事に、Oracle Universal Installer (OUI) のチェックを通ることができました。
※修正後に、OUIの前提条件のチェック画面で「再チェック」ボタンや「修正して再チェック」ボタンをクリックしても、この"project.max-shm-memory"の再設定はうまく認識してくれませんでした。この場合、一旦OUIの作業を取り消し、再度最初からはじめるときちんと認識してチェックを通ることができました。