第7回 Oracleインストール支援ツールを使う(2)
Tweet
引き続きOracle Preinstallation RPMの話です。今回は出力されたログファイルから内部的な動作を解析します。
Oracle Preinstallation RPMのログファイル
このようなツールを解析するときは、本来はスクリプトを直接見るべきです。しかし今回は、よりわかりやすく紹介するため、ログファイルから内部の動作を調べることにします。前回目星を付けた/var/log/oracle-rdbms-server-12cR1-preinstallには、2つのディレクトリがあることがわかります。
# cd /var/log/oracle-rdbms-server-12cR1-preinstall/ # ls -l 合計 8 drwxr-xr-x 3 root root 4096 6月 29 14:48 2015 backup drwx------ 2 root root 4096 6月 29 14:49 2015 results
treeコマンドで確認してみると、grub.confやsysctl.confがバックアップされ、さらにログファイル(orakernel.log)らしきものがあります。
# LANG=C tree . |-- backup | `-- Jun-29-2015-14-48-54 | |-- grub.conf | |-- orakernel.log | `-- sysctl.conf `-- results `-- orakernel.log
ログファイル解析(ユーザー作成からカーネルパラメーター設定)
それではログファイルorakernel.logの内容を先頭から順に見ていきます。かなり長いので、いくつかに分けて説明します。
最初の部分では、2つのグループ(oinstall, dba)と1つのユーザー(oracle)を追加しています。
Adding group oinstall with gid 54321 Adding group dba Adding user oracle with user id 54321, initial login group oinstall, supplementa ry group dba and home directory /home/oracle Changing ownership of /home/oracle to oracle:oinstall Please set password for oracle user uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba) Creating oracle user passed
実際に設定ファイルを見るとユーザーとグループが追加されています。
# tail -n 1 /etc/passwd oracle:x:54321:54321::/home/oracle:/bin/bash # tail -n 2 /etc/group oinstall:x:54321: dba:x:54322:oracle
次の部分では、必要なカーネルパラメーターを設定し、既存のsysctl.confをバックアップしていることがわかります。
Verifying kernel parameters as per Oracle recommendations... Adding fs.file-max = 6815744 Adding kernel.sem = 250 32000 100 128 Adding kernel.shmmni = 4096 kernel.shmall is higher than preinstall config. kernel.shmall = 4294967296 kernel.shmmax = 4398046511104 Changing kernel.shmmax to match preinstall config Adding kernel.panic_on_oops = 1 Adding net.core.rmem_default = 262144 Adding net.core.rmem_max = 4194304 Adding net.core.wmem_default = 262144 Adding net.core.wmem_max = 1048576 Adding fs.aio-max-nr = 1048576 Adding net.ipv4.ip_local_port_range = 9000 65500 Setting kernel parameters as per oracle recommendations... Altered file /etc/sysctl.conf Original file backed up at /etc/sysctl.conf.orabackup Verifying & setting of kernel parameters passed
実際に/etc/sysctl.confを確認すると、新しくパラメーターが追加されています(一部抜粋)。
# oracle-rdbms-server-12cR1-preinstall setting for fs.file-max is 6815744 fs.file-max = 6815744 # oracle-rdbms-server-12cR1-preinstall setting for kernel.sem is '250 32000 100 128' kernel.sem = 250 32000 100 128 # oracle-rdbms-server-12cR1-preinstall setting for kernel.shmmni is 4096 kernel.shmmni = 4096
次の部分ではOSのリソース制限の設定をしています。手動で設定するときは/etc/security/limits.confに記述するのが一般的ですが、今回は/etc/security/limits.dディレクトリにファイルを配置しています。
Setting user limits using /etc/security/limits.d/oracle-rdbms-server-12cR1-preinstall.conf Verifying oracle user OS limits as per Oracle recommendations... Adding oracle soft nofile 1024 Adding oracle hard nofile 65536 Adding oracle soft nproc 16384 Adding oracle hard nproc 16384 Adding oracle soft stack 10240 Adding oracle hard stack 32768 Adding oracle hard memlock 134217728 Adding oracle soft memlock 134217728 Setting oracle user OS limits as per Oracle recommendations... Altered file /etc/security/limits.d/oracle-rdbms-server-12cR1-preinstall.conf Original file backed up at /var/log/oracle-rdbms-server-12cR1-preinstall/backup/Jun-29-2015-14-48-54 Verifying & setting of user limits passed
oracle-rdbms-server-12cR1-preinstall.confの中身を見ると、通常limits.confに設定する内容と同等の記述があります(一部抜粋)。
# oracle-rdbms-server-12cR1-preinstall setting for nofile soft limit is 1024 oracle soft nofile 1024 # oracle-rdbms-server-12cR1-preinstall setting for nofile hard limit is 65536 oracle hard nofile 65536 # oracle-rdbms-server-12cR1-preinstall setting for nproc soft limit is 16384 # refer orabug15971421 for more info. oracle soft nproc 16384 # oracle-rdbms-server-12cR1-preinstall setting for nproc hard limit is 16384 oracle hard nproc 16384
実際にoracleユーザーでリソース制限が効いていることを確認します。Hはハードリミットを表します。代表的なところではopen filesが設定どおり変更されていることがわかります。
# su - oracle $ ulimit -Ha core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7715 max locked memory (kbytes, -l) 134217728 max memory size (kbytes, -m) unlimited open files (-n) 65536 ←デフォルトの4096から変更されている pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 32768 cpu time (seconds, -t) unlimited max user processes (-u) 16384 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
ログファイル解析(ブートパラメーター)
次の部分ではgrub.confにブートパラメーターを追加しています(一部省略)。追加しているのはnuma=offとtransparent_hugepage=neverです。それぞれについて説明します。
Verifying kernel boot parameters as per Oracle recommendations... old boot params: kernel /vmlinuz-3.8.13-44.1.1.el6uek.x86_64 ro root=/dev/mapper/vg00-lv_root rd_LVM_LV=vg00/lv_swap rd_NO_LUKS rd_LVM_LV=vg00/lv_root rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet numa=off, new boot params: kernel /vmlinuz-3.8.13-44.1.1.el6uek.x86_64 ro root=/dev/mapper/vg00-lv_root rd_LVM_LV=vg00/lv_swap rd_NO_LUKS rd_LVM_LV=vg00/lv_root rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet numa=off transparent_hugepage=never old boot params: kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg00-lv_root rd_LVM_LV=vg00/lv_swap rd_NO_LUKS rd_LVM_LV=vg00/lv_root rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet crashkernel=auto numa=off, new boot params: kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg00-lv_root rd_LVM_LV=vg00/lv_swap rd_NO_LUKS rd_LVM_LV=vg00/lv_root rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet crashkernel=auto numa=off transparent_hugepage=never Setting kernel boot parameters as per Oracle recommendations... Boot parameters will be effected on next reboot Altered file /boot/grub/grub.conf Original file backed up at /boot/grub/grub.conf.orabackup Verifying & setting of boot parameters passed
numa=offは、OSのNUMA最適化(NUMA Optimization)を無効にする設定です。NUMAの詳細には触れませんが、2プロセッサー以上のCPUを搭載しているサーバーで関係ある機能です(コアではなくプロセッサーです)。現時点(2015年8月)では、Oracleデータベース利用時にLinux OSのNUMA最適化機能は非推奨の設定です。
次はtransparent_hugepage=neverです。これはOracle Linux 6から導入された透過的Huge Pagesを無効にする設定です(透過的≒自動的)。Huge Pagesは、昔からOracleデータベースでサポートされていますが、透過的Huge Pagesは非推奨の設定です。
Huge Pagesと透過的Huge Pages
Huge Pagesと透過的Huge Pagesについて説明します。なお透過的Huge Pages(Transparent Huge Pages)はTHPと省略されることがあります。またHuge PagesとLarge Pagesは同じ意味です。
コンピューターではメモリーをページというブロック単位で管理します。x86系CPUの場合、デフォルトのページサイズは4KBytesです。一般的なアプリケーションの場合、4KBytesのほうが無駄なくメモリーを利用できて効率的です。ところがOracleのSGAのように大量のメモリーを使用する場合、4Kbytesという非常に小さな単位では管理情報が膨大になりオーバーヘッドが大きくなります。
そのために導入されたのがHuge Pagesです。Huge Pagesを利用すると2MBytesのページサイズが利用できるので、大量メモリーを使用したときのメモリー管理が効率化されます。2048Kbytes/4Kbytes=512なので、メモリーの管理情報は1/512になり、それに伴うTLB(Translation Lookaside Buffer)のヒットミス低減など、数々のメリットが得られます。
Oracle Linux 5までは、明示的にHuge Pagesのサイズを指定していたのですが、Oracle Linux 6から導入されたTHPでは、何も設定しなくても動的にHuge Pagesを割り当てることが可能になりました。この機能をTHPと呼びます。
THPの設定は、以下のコマンドで確認できます。[never]になっているときは無効で、それ以外のときは有効です。このパラメーター自体が無いときは、THPは無効になっています。
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
上記パラメーターは、RHEL互換カーネルでは/sys/kernel/mm/redhat_transparent_hugepage/enabledという名称です。
OracleデータベースではTHPは非推奨なので、UEK3や一部のUEK2では初めから無効になっています。パラメーター自体が存在しません。したがって、RHEL互換カーネルや一部のUEK2を利用しているときに関係があります。
なおgrub.confに設定したパラメーターを有効にするためには、OSを再起動する必要があります。再起動してもTHPが無効にならないときは、パラメーターチューニングツールtunedの設定を調べてください。tunedが有効になっていると、grub.confの設定が上書きされることがあります。
またJDKのバージョンによっては、THPが無効になっているとワーニングメッセージが表示されることがあります。エラーではないのでアプリケーションの動作に問題はありませんが、DBと同じサーバーでJavaアプリケーションを動かすときには、メッセージを抑止するようにJDKの設定を検討してもいいかもしれません。
ログファイル解析(ネットワーク設定)
最後は/etc/sysconfig/networkへのNOZEROCONFパラメーター追加です。
Trying to add NOZEROCONF parameter... Taking a backup of existing file to /etc/sysconfig/network.orabackup Successfully added parameter NOZEROCONF to /etc/sysconfig/network Setting /etc/sysconfig/network parameters passed
実際に/etc/sysconfig/networkを見ると、末尾にNOZEROCONF=yesが追加されています。
NETWORKING=yes HOSTNAME=sample.com NTPSERVERARGS=iburst # oracle-rdbms-server-12cR1-preinstall : Add NOZEROCONF=yes NOZEROCONF=yes
NOZEROCONFは、APIPA(Automatic Private IP Addressing)というIPアドレスの自動設定機能に関するパラメーターです。IPアドレスの自動設定と聞くとDHCPを連想しますが、まったく別の機能です。APIPAでは、DHCPサーバーのようなサーバーは不要で、リンクローカルアドレスという「169.254.0.0~169.254.255.255」のアドレスが割り当てられます。ルーティングできない特殊なIPアドレスなので、小規模ネットワーク向けの機能です。
APIPAが有効になっていると、DHCPでIPアドレス割り当てに失敗したときでも、APIPAによって169.254で始まるIPアドレスが割り当てられます。一見するとIPアドレスは正しく割り当てられているように見えるのでトラブルのもとです。サーバーでは不要な設定なので無効にします。次の例には169.254.0.0のルーティングテーブルが表示されていますが、NOZEROCONF=yesを指定すると、この行は無くなります。
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.176.2 0.0.0.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 192.168.176.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
インストーラーを起動する
Oracle Preinstallation RPMによって、次のことが自動的に実行されることがわかりました。
- 必要なRPMをインストールする
- ユーザーとグループを作成する
- カーネルパラメーターを設定する
- OSのリソース制限を設定する
- grub.confにブートパラメーターを追加する
- NOZEROCONF=yesにしてAPIPAを無効にする
ここまでくればあと少しです。パスワード設定とディレクトリ作成が終われば、ついにインストーラーの起動です。
先ほど作成したoracleユーザーにパスワードを設定します。
# passwd oracle ユーザー oracle のパスワードを変更。 新しいパスワード: ←パスワード入力 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。
インストール先のディレクトリを作成します。
# mkdir -p /u01/app/oracle # chown -R oracle:oinstall /u01/app # chmod -R 775 /u01/app/oracle
一度X Windowをログアウトして、oracleユーザーでログインします。umaskが0022になっていることを確認してからインストーラーを起動します。このときカレントディレクトリが書き込み可能になっている必要があります。
$ umask 0022 ←umaskが0022になっていることを確認する $ umask 0022 ←0022以外のときは設定する 0022 $ /media/database/runInstaller
文字化けするようであれば、次のようにLANG=Cを追加します。
$ LANG=C /media/database/runInstaller
Oracle Preinstallation RPMを使うと、インストール前の作業がとても簡単になることがわかったと思います。次回はインターネットに接続できないときやRed Hat Enterprise Linuxを使用するとき、そしてASM/RACをインストールするときについて説明します。
にわかワイン通養成講座
第7回 おいしくワインを飲むコツ
堅苦しい話が続いたので、今回はワインをおいしく飲むコツについて説明します。まったく同じワインでも、飲むときの条件によっておいしさは変わります。誰と飲むか、何を食べるかによっても違うのですが、もっと簡単で普遍的なことがあります。それは「グラス」と「ワインの温度」です。この2点に注意することで、千円のワインでも、それ以上高いワインに感じることができます。
まずはグラスです。理想的なワイングラスは、無色透明で、飲み口が薄く、香りを溜めるだけの容量があるものがよいと言われています。値段は千円以上、容量は280cc~350ccくらいのものが家庭用として使いやすいです。百均の厚手のグラスとは、比べものにならない満足感を得られます。
ワイングラスには、リーデルやロブマイヤー、バカラ、シュピゲラウなど有名な会社が数多くあります。とくにリーデルは、日本ではデファクトと言える存在感があり、千円台のものから2万円を超えるものまでラインナップが充実しています。また2万円以上するロブマイヤーのバレリーナシリーズはワインラバーの憧れです。
どれを選ぶかは、予算や用途次第です。でも入門用に1つ選ぶとすれば「リーデル オヴァチュア レッドワイン」がオススメです。薄すぎないので扱いやすく、入手もしやすいです。
次にワインの温度です。「赤は常温で、白は冷やして」とは思っていませんか? これは大きな間違いです。とくに日本のような暑い気候では、夏に赤を常温で飲んだらぬるすぎです。一般にワインの適温は、
白ワイン:5度から14度
赤ワイン:14度から18度
だと言われています。冷蔵庫の温度が4度くらい、クーラーをかけた室内温度が25度から28度くらいであることを考えると、赤の適温とは大きな開きがあることがわかります。
だから私自身も、夏場にレストランでボトルワインの赤を注文するときは、冷やしてもらうことが少なくありません。以前店員さんに「赤は常温で飲むものですよ」と言われて、暴れそうになったことは秘密です(笑)。
また理想の温度幅が広いのは、ワインのタイプによる違いです。こちらもいくつか法則があり、「軽いワインや安いワインは、低めの温度」「重いワインや高級ワインは、高めの温度」と言われています。温度変化を楽しみながら、みなさんの適温を見つけてください。
白ワインは冷蔵庫から出せば徐々に温度が上がるので、ゆっくり飲むか、早めに冷蔵庫から出せばよいのですが、悩ましいのは暑い季節の赤ワインです。
赤ワインを適温で飲むオススメの方法を2つ紹介します。1つめの方法は、冷蔵庫に冷やしておき、飲む1時間くらい前に取り出すことです。もう1つの方法は、ボトルにかぶせるタイプの保冷剤を利用することです。5分から10分くらいかぶせておくと適温になります。このような保冷剤は、キッチン用品で有名な「ル クルーゼ社」などから発売されています。白ワインや缶ビールの保冷にも使えるので便利です。
こんなに暑い日が続くと、きりっと冷やしたスパークリングワインが飲みたくなってきます。乾杯!
Tweet