Oracle PreInstall RPMとは?
Oracle Databaseのインストールを成功させるには多くの前提条件をクリアする必要があります。主なものだけでも以下のような設定が必要です。
- インストール要件に合うハードウェア/OSを準備する
- パッケージのインストール
- カーネル・パラメーターの設定
- OSリソース制限の設定
- 管理ユーザーの作成
- ユーザー制限の設定
上記を手作業で行うことも当然できますが、かなり大変な作業です。Linux環境で、できるだけ簡単にかつ確実に実施できるようにするため、Oracleは事前設定(=Preinstall)ツールとしてrpmパッケージを提供しています。
このPRMパッケージはOracle DatabaseのバージョンとLinuxのバージョンの組み合わせで異なるファイルが提供されいます。インストール・メディアはOracle Public Yumから最新版を入手すると良いでしょう。このページではOracle Linux 7 Update 3 / Oracle Database 12c Release 2を前提に記述しています。
インストール
使用している環境がOracle Linuxの場合、インストール作業は簡単です。単純にrpmコマンドを実行するだけです(またはインターネット接続環境であればyum install oracle-rdbms-server-12cR2-preinstallコマンド)。依存パッケージとして事前にcompat-libstdc++-33とkernel-uakのインストールが必要です。
# rpm -ivh oracle-database-server-12cR2-preinstall-1.0-2.el7.x86_64.rpm
実行ログは/var/log/oracle-database-server-12cR2-preinstall/results/orakernel.logファイルに出力されます。
実際には何をしているのか?
ではこのパッケージをインストールすることで実際にどのような処理が行われているかを調べてみます。
カーネル・パラメーターの変更
下記のような複数のカーネルパラメーターを変更しています。/etc/sysctl.confを書き換えています。
パラメーター | 設定値 |
---|---|
fs.file-max | 6815744 |
kernel.sem | 250 32000 100 128 |
kernel.shmmni | 4096 |
kernel.shmall | 1073741824 |
kernel.shmmax | 4398046511104 |
kernel.panic_on_oops | 1 |
net.core.rmem_default | 262144 |
net.core.rmem_max | 4194304 |
net.core.wmem_default | 262144 |
net.core.wmem_max | 1048576 |
net.ipv4.conf.all.rp_filter | 2 |
net.ipv4.conf.default.rp_filter | 2 |
fs.aio-max-nr | 1048576 |
net.ipv4.ip_local_port_range | 9000 65500 |
/etc/security/limits.confの変更
ユーザーの制限を指定しています。rpmインストール時点ではOracle Database管理ユーザーは指定されていないので、domainは指定されていません。
domain | type | item | value |
---|---|---|---|
* | soft | nofile | 1024 |
* | hard | nofile | 1024 |
* | soft | nproc | 16384 |
* | hard | nproc | 16384 |
* | soft | stack | 10240 |
* | hard | stack | 32768 |
* | soft | memlock | 134217728 |
* | hard | memlock | 134217728 |
Network設定
/etc/sysconfig/networkファイルに以下を追加します。
# oracle-database-server-12cR2-preinstall : Add NOZEROCONF=yes
NOZEROCONF=yes
Kernel設定
Kernelのブート・パラメーター(grubまたはefiの環境に応じて)に以下の指定が行われます。
- numaを使用しない指定(numa=off)
- Transparent Huge Pages を使用しない設定(transparent_hugepage=never)
ユーザー/グループの作成
oinstallグループ(GID=54321)、dbaグループが存在しなければ作成します。
oracleユーザー(UID=54321、プライマリ・グループ=oinstall、セカンダリ・グループ=dba)が存在していなければ作成します。
何をしてくれないのか?
逆にこのパッケージをインストールしただけでは以下の項目についてはチェックしてくれないことがわかります。データベースのインストール前なので仕方ないといえば仕方ないですが。
- SE-Linuxの設定
- Firewalの設定
- SGAに応じたHuge Pages設定
- ファイル・システムやASMに関する推奨設定
- ネットワークやストレージの冗長化設定
- Oracle管理ユーザーやOracle Grid Infrastructure管理ユーザーの環境変数設定
#終わりに
PreInstall RPMが実際に行っている処理について簡単に記述しました。インストール作業を楽にするためにOracle Linuxを使っている環境ではインストールをお勧めします。またRed Hat Enterprise Linuxを使っている環境でも上記設定を行うことでOracleが推奨する値を使った環境を構築することができます。