Oracle DatabaseのZoneへのインストール
Solaris 11.4内のNative Zone(通常のSolaris11のZoneや、Branded ZoneのSolaris10を含む)を利用し、この中にOracle Databaseをインストールする場合、IPC(Inter Process Communication:プロセス間通信)などの設定をする必要があります。
下記は、利便性の為に記載されたものです。実際はマニュアルなどを読み、設定してください。
- Oracle Solaris コンテナで Oracle Databaseを実行するためのベストプラクティス
- Best Practices for Running Oracle Databases in Oracle Solaris Containers
Global Zoneの準備
Swapの増加
たとえば256GBに増加したい場合は、Global ZoneのSwapを増やします。
zfs set volsize=256g rpool/swap
確認は下記の様に行います。
swap -l
増加時に再起動は要りませんが、設定した瞬間に多少、もたつく時間がかかり、swapコマンドでみると、複数のSwapエリアがあるように見えます。しかし、reboot後は、エントリが一つにまとめられます。
Solarisにおいて、Zoneは複数作られる可能性が高いので、Global Zoneは大きめに設定しておく方が良いでしょう。
また、Solarisのメモリマネージャの構造から、搭載してるメモリと同程度〜2倍ぐらいが目安と言われています。
non Global Zone準備
non Global Zoneの作成
Oracle Database を動かす non-global zone を作成します。
sudo zonecfg -z oracle-zone01 create -b set brand=solaris set zonepath=/dpool1/zones/oracle-zone01 set autoboot=true set ip-type=exclusive ---- NICやディスクなどの設定は割愛 ----
Oracle DBは、CPUがコアライセンスであることが多いので、適度にコアを定義します。下記は、8コア目から12コア目の4コアをアサインしています。Zoneのdedicated-cpuは、Oracle Databaseでいう「Hard Partitioning」に相当します。詳しくはOracle Databaseのライセンスを調べて下さい。
add dedicated-cpu set ncpus=8-11 end
Swapメモリの制限値を指定したい場合は、下記の様に設定します。capped-memoryにはphysical(物理メモリの設定)がありますが、これは、rcapdを用い、1秒間に数回ポーリングしてメモリのサイズを調べ、必要となればzone内のプロセスをpage outするようにする機構です。この機能が働くとき、ZoneだけでなくGlobal Zoneを含めて全体が重くなるため、physicalを指定することは推奨できません。
swapは、実際のswapメモリのハードリミットとして動作します。
add capped-memory set swap=32G end
Oracle Databaseは、IPC(Inter Process Communication:プロセス間通信)パラメーターの共有メモリ(SHM)の設定を増やす必要があります。これらのSHM-MEMORY、SHM-IDS、SEM-IDSは、環境が「ちょうど良い」値を指定してください。
set max-shm-memory=32G set max-shm-ids=1024 set max-sem-ids=1024
これらの設定は簡単に設定できるシノニムなので、exportコマンドで設定すると下記の様に出力されます。
add rctl set name=zone.max-swap add value (priv=privileged,limit=34359738368,action=deny) end add rctl set name=zone.max-shm-memory add value (priv=privileged,limit=34359738368,action=deny) end add rctl set name=zone.max-sem-ids add value (priv=privileged,limit=1024,action=deny) end add rctl set name=zone.max-shm-ids add value (priv=privileged,limit=1024,action=deny) end
non Global Zone内の設定
パッケージのインストール
Zoneが起動したら、下記のパッケージをインストールする。
non-global zones は、Group Package である group/system/solaris-small-server がベースとなっている。
これに、下記のパッケージを追加しておく。
pkg install -v xauth make motif libxp libxtst xterm libxi developer/assembler
ユーザの作成
group、userの順で作成します。
sudo groupadd -g 200 oinstall sudo useradd -u 201 -g oinstall -G dba,asmdba,oper -d /export/home/oracle -m oracle sudo passwd oracle
id コマンドでoracle ユーザの情報を確認しておきます。
id -a oracle uid=201(oracle) gid=200(oinstall)
プロジェクトの作成とリソースのアサイン
SRMのためのプロジェクトを作成し、ユーザに割りあてします。
sudo projadd group.dba sudo projmod -s -K "project.max-shm-memory=(priv,32gb,deny)" group.dba sudo projmod -s -K "project.max-max-sem-ids=(priv,512,deny)" group.dba sudo projmod -s -K "process.max-file-descriptor=(priv,65536,deny)" group.dba vi /etc/user_attr oracle::::project=group.dba
oraleユーザでloginを行い、インストールなどを行います。