Oracle on Bare Metal Solution のベスト プラクティス
Bare Metal Solution に Oracle データベースを実装する場合、お客様の目標は、問題を可能な限り発生させずに、環境を簡単に立ち上げることだと思います。この目標を達成するために、Oracle データベースを Bare Metal Solution に実装したお客様、Google のソリューション アーキテクト、サポート スタッフからフィードバックを収集しました。以下では、Bare Metal Solution 上で独自の Oracle データベース環境の構築を成功に導くために役立つ、これらのエキスパートから得た推奨事項を示しています。
ソフトウェア デプロイ
Oracle ソフトウェアのデプロイを成功させるには、Bare Metal Solution ツールキットを使用することをおすすめします。このツールキットには、Bare Metal Solution への Oracle ソフトウェアのインストールに役立つ Ansible と JSON のスクリプトが用意されています。Bare Metal Solution ツールキットの詳細と、Bare Metal Solution 環境に Oracle データベースをインストールする方法については、ツールキットのユーザーガイドをご覧ください。
オペレーティング システム
Bare Metal Solution サーバーでオペレーティング システムを設定する場合は、次の操作を行うことをおすすめします。
NTP サーバーを検証する
Bare Metal Solution サーバーはすべてタイムソースと同期する必要があります。ニーズに最適な NTP サーバー オプション(物理または仮想)を選択します。
サーバーが時刻同期に NTP を使用している場合は、timedatectl
コマンドまたは ntpstat
コマンドを使用して、サーバーがタイムソースと同期しているかどうかを確認します。次の例は、サーバーが正常に同期している場合にこうしたコマンドから得られる出力を示しています。
timedatectl show -p NTPSynchronized
NTPSynchronized=yes
synchronised to NTP server (216.239.35.8) at stratum 3
time correct to within 49 ms
polling server every 1024 s
Oracle VM の CPU 数とメモリの詳細を表示する
CPU やメモリの詳細など、Oracle VM(OVM)ホストに関する情報を表示するには、xm info
コマンドを使用します。次に例を示します。
/usr/sbin/xm info
詳細については、ホスト情報の表示に関する Oracle のドキュメントをご覧ください。
/etc/fstab
の設定で正しいマウント オプションを確認する
起動プロセスのハングアップを回避するには、デフォルトの設定で nofail
マウント オプションを使用し、作成するルート以外のマウント ポイント(/u01
や /u02
など)を常に構成するようにします。まれに、ホストの再起動時に、基盤となるストレージ デバイスが使用できないことがあります。nofail
マウント オプションを設定すると、サーバーがストレージ デバイスを表示できない場合でもブートプロセスを続行できます。
次の例は、/etc/fstab
ファイル内の /u01
および /u02
マウント ポイントに推奨の設定を示しています。
/dev/mapper/3600a098038314352513f4f765339624c1 /u01 xfs nofail 0 0
/dev/mapper/3600a374927591837194d4j371563816c1 /u02 xfs nofail 0 0
オペレーティング システムに影響を与えることなく、マウント オプションを defaults
から nofail
に変更できます。ただし、新しい設定を適用するには、サーバーを再起動する必要があります。
シェルの上限設定を確認する
Bare Metal Solution ツールキットを使用して、Oracle RAC の構成に必要なシェル制限を構成します。Bare Metal Solution ツールキットを使用していて、シェルの上限を変更していない場合は、この検証をスキップできます。シェル制限は、Oracle ソフトウェア(Grid Infrastructure を含む)を所有するすべてのオペレーティング システム アカウントに設定する必要があります。Oracle では Linux 用に次の設定を推奨しています。
上限 | ソフト値 | ハード値 |
---|---|---|
ファイルを開く | 1024 | 65536 |
最大ユーザー プロセス数 | 16384 | 16384 |
スタックサイズ | 10240 | 32768 |
ロックされる最大メモリ | メモリの 90% 以上 | メモリの 90% 以上 |
ulimit
コマンドを使用して、ソフトシェルとハードシェルの制限を確認します。たとえば、次のコマンドを入力して、ソフトシェルの上限を確認します。
ulimit -S -n -u -s -l
次の出力は、384 GB のメモリを搭載したシステムの正しいソフトシェルの上限の設定を示しています。
open files (-n) 1024
max user processes (-u) 16384
stack size (kbytes, -s) 10240
max locked memory (kbytes, -l) 355263678
ハードシェルの制限を確認するには、次のコマンドを使用します。
ulimit -H -n -u -s -l
次の出力は、384 GB のメモリを搭載したシステムの正しいハードシェル制限を示しています。
open files (-n) 65536
max user processes (-u) 16384
stack size (kbytes, -s) 32768
max locked memory (kbytes, -l) 355263678
いずれかのシェル制限が正しく設定されていない場合は、次の例に示すように、/etc/security/limits.conf
ファイルのエントリを変更します。
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 355263678
oracle hard memlock 355263678
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid soft memlock 355263678
grid hard memlock 355263678
grep MemTotal /proc/meminfo
MemTotal: 16092952 kB
マルチパス設定を変更しない
マルチパス設定を変更するときに、multipath.conf
を使用してデバイスのエイリアス名を作成する場合は、path_grouping_policy
属性を構成しないでください。このような変更は、devices
定義セクションで設定されたデフォルトのポリシーをオーバーライドします。
通常のオペレーションでは、multipath -ll
コマンドは次のようなステータスを表示します。各デバイスには、準備完了状態にある 2 つのアクティブパスが含まれます。
3600a0980383143524f2b50476d59554e dm-7 NETAPP ,LUN C-Mode
size=xxxG features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 14:0:3:2 sdf 8:80 active ready running
| `- 16:0:5:2 sdv 65:80 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 14:0:2:2 sdc 8:32 active ready running
`- 16:0:3:2 sdq 65:0 active ready running
ジャンボ フレームを使用する
RAC 環境でサーバーから別のサーバーに転送されるパケットの断片化を防ぐため、Oracle はジャンボ フレームを使用してサーバー インターフェースを構成することを推奨しています。ジャンボ フレームの MTU サイズは 9,000 バイトで、Oracle データベースのブロックサイズ(8,192 バイト)をサポートするのに十分な大きさです。
Oracle RAC の Bare Metal Solution サーバーでジャンボ フレームを構成するには:
Bare Metal Solution プライベート ネットワークの設定を表示して、ジャンボ フレームが構成されていることを確認します。
gcloud bms networks describe NETWORK_NAME --project=PROJECT_ID --region=REGION | grep jumboFramesEnabled
出力例:
jumboFramesEnabled: true
ネットワーク インターフェースとその
mtu
サイズを確認します。ip link show | grep mtu
出力例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 2: enp55s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 3: enp55s0f2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 4: enp55s0f3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 5: enp17s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 6: enp17s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000 7: enp173s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 8: enp173s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000 9: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 10: bond1.117@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 12: bond0.118@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 13: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 14: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
root レベルの権限を使用して、ジャンボ フレームを使用する Bare Metal Solution 環境内のすべてのサーバーのインターフェース構成ファイルに
MTU=9000
を追加します。このファイルは/etc/sysconfig/network-scripts/ifcfg-interface_name
にあります。出力例:
BONDING_OPTS="lacp_rate=1 miimon=100 mode=802.3ad xmit_hash_policy=1" TYPE=Bond BONDING_MASTER=yes PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond1 UUID=0e7da685-64bf-44f3-812f-9846d747a801 DEVICE=bond1 ONBOOT=yes AUTOCONNECT_SLAVES=yes MTU=9000
ネットワーク サービスを再起動して変更を反映します。
service network restart
ping
コマンドを実行して、新しい MTU 構成をテストします。ping -c 2 -M do -s 8972 svr001 PING svr001 (172.16.1.10) 8972(9000) bytes of data. 8980 bytes from svr001 (172.16.1.10): icmp_seq=1 ttl=64 time=0.153 ms 8980 bytes from svr001 (172.16.1.10): icmp_seq=2 ttl=64 time=0.151 ms --- svr001 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.151/0.152/0.153/0.001 ms
Oracle RMAN のバックアップとレイテンシの影響
Oracle RMAN バックアップ プロセスが RATE
パラメータによって制限されていない場合、ストレージのスループットまたは IOPS を、ストレージ・ボリュームのパフォーマンス上限まで押し上げることができます。これにより、ストレージ I/O がスロットリングされ、ストレージ ボリュームのレイテンシが増加します。
RATE
チャネル パラメータを実装して、Oracle RMAN が使用できる帯域幅またはスループットの量を制限することをおすすめします。
詳細については、Oracle のドキュメント: 23.2.1.4 RATE チャネル パラメータをご覧ください。
Oracle の自動ストレージ管理
Cloud カスタマーケア チームは、Bare Metal Solution のユーザーと協力して、Bare Metal Solution 環境に Oracle 自動ストレージ管理(ASM)を追加しました。独自の経験と知恵を生かして、独自の ASM ディスク グループを正常にインストールできるように、以下のベスト プラクティスのリストをまとめました。Google の目標は、Bare Metal Solution 環境に最適なストレージ パフォーマンスを実現することです。
- 均一な LUN サイズを使用する
- 2 つ以下の ASM ディスク グループを作成する
- すべてのボリュームのすべての LUN で ASM ディスク グループをストライプ化する
- 同じディスク グループで同じパフォーマンス特性を持つ LUN とボリュームを使用する
- 複数の RAC クラスタ間でストレージ ボリュームを共有しない
- ASM ディスク グループの作成前に必要な IOPS とスループット容量を把握する
- マルチパス構成はそのままにする
- ASM の重要な設定を構成する
- 外部冗長性を備えた ASM ディスク グループを作成する
- ASM ディスクの作成後に Bare Metal Solution サーバーを再起動する
均一な LUN サイズを使用する
LUN サイズは、成長単位に合わせて選択する必要があります。ASM は、サイズが同じでパフォーマンス特性が類似している LUN で効果を発揮します。非常に大規模なデータベースの場合は、パフォーマンスを最適化するために 2 TB の LUN サイズをおすすめします。
2 つ以下の ASM ディスク グループを作成する
データファイルと REDO
ログの 1 つのコピーを 1 つの DATA
ディスク グループに送信する必要があります。必要であれば、ディスク上のバックアップとアーカイブログを保存する 2 つ目の FRA
ディスク グループを作成できます。レジリエンスが高いストレージに REDO
ログを保存する場合、2 つのコピーは必要ありません。
REDO
のログ書き込みはレイテンシの影響を受けやすいため、FRA
ディスク グループのパフォーマンス プロファイルが DATA
ディスク グループのパフォーマンス プロファイルと一致する場合にのみ、REDO
ログの多重化を検討してください。
すべてのボリュームのすべての LUN で ASM ディスク グループをストライプ化する
ASM ディスク グループを作成する場合は、すべてのボリュームのすべての LUN でディスク グループをストライプ化します。LUN が単一のボリュームに属している場合は、ディスク グループを作成するときに、ボリュームにすべての LUN を含める必要があります。たとえば、ボリュームに LUN が X
個ある場合、ディスク グループの作成時に X
個の LUN をすべて使用する必要があります。
また、ボリュームに QoS 制限があるため、このガイダンスは複数のボリュームを使用する場合にも適用されます。スループットを向上させるために 900 Mbps を超える複数のボリュームを使用する場合に、必要なパフォーマンスを実現するには、ディスク グループの作成時に各ボリュームのすべての LUN を含める必要があります。
同じディスク グループで同じパフォーマンス特性を持つ LUN とボリュームを使用する
複数のボリュームを使用してスループットを向上させる場合は、ASM ディスク グループを作成するときに、同じボリューム サイズとパフォーマンス特性を使用します。
パフォーマンス特性が異なるボリュームの LUN を混在させないでください。 同じディスク グループに異なるパフォーマンス プロファイルを持つ LUN とボリュームを含めると、I/O オペレーションを実行するディスクでパフォーマンスの上限が大幅に低くなり、レイテンシが急増する可能性があります。
たとえば、2 つの不均一ボリューム(1 x 16 TiB と 1 x 5 TiB)を含む ASM ディスク グループを作成する場合、5 TB ボリュームのディスクによって実行される I/O オペレーションによりレイテンシが増加する可能性があります。5 TiB ボリュームでは、スループットと IOPS の上限が大幅に低くなるため、16 TiB ボリュームよりもかなり早い時点で、スロットリング レベルに到達することになります。
複数の RAC クラスタ間でストレージ ボリュームを共有しない
RAC クラスタごとに、固有のストレージ ボリュームをプロビジョニングします。複数の RAC クラスタで同じストレージ ボリュームを共有しないでください。ストレージ デバイスはボリューム レベルで QoS が適用されるため、この方法により、単一の IOPS とスループットのプールに対して、ノイジー ネイバーが競合する可能性を最小限に抑えることができます。
たとえば、単一ボリュームに 8 つの LUN がある場合、一部の LUN を 1 つの RAC データベース クラスタに割り当て、残りの LUN を別の RAC データベース クラスタに割り当てることはしないでください。代わりに、2 つの異なるストレージ ボリュームをプロビジョニングし、各ボリュームを個別の専用 RAC クラスタに割り当てます。
ASM ディスク グループの作成前に必要な IOPS とスループット容量を把握する
オンプレミス環境のピーク パフォーマンスの値に注意します。この情報を確認するには、ワークロードのピーク時に AWR レポートを生成し、システムのピーク IOPS とスループット値を記録します。また、Oracle データベース評価ツールを使用してピーク時のパフォーマンス値を収集することもできます。
オンプレミスのパフォーマンスの数値を確認したら、Bare Metal Solution のストレージのパフォーマンス表を確認して、ASM ディスク グループに割り当てる必要があるストレージの量を計算し、必要なパフォーマンスを実現します。768 Mbps を超える高いスループット要件がある場合は、複数のボリュームを作成して、すべての LUN とすべてのボリュームで ASM ディスク グループをストライプ化できます。
マルチパス構成はそのままにする
/etc/multipath.conf
ファイルのデフォルトの group_pathing_policy
は変更しないでください。ストレージパスに障害が発生した場合に備えて、RAC ノードのエビクションを避けるため、常にデフォルト値の group_pathing_policy=group_by_prio
を使用する必要があります。
マルチパス構成をそのまま維持する方法については、マルチパス設定を変更しないをご覧ください。
ASM の重要な設定を構成する
Linux で Oracle Grid Infrastructure 12.1.0.2 以降を使用している場合は、ASMFD または UDEV を使用して ASM をセットアップします。
以前のバージョンの Oracle Grid Infrastructure の場合は、ASMLib を使用します。
Oracle ASM が最初に単一パスの ASM デバイスを選択しないようにするには、スキャンの順序を次のように設定します。
ORACLEASM_SCANORDER="dm" ORACLEASM_SCANEXCLUDE="sd"
Bare Metal Solution ストレージ環境では、
/proc/partitions
で表示できる DM デバイスが使用されるため、この設定が必要です。ASMLib が ASM ディスクを管理するように構成されているか確認するには、root ユーザーとして次のコマンドを実行します。
/usr/sbin/oracleasm configure | grep SCAN
ASMLib を使用している場合、出力は次のようになります。
ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="dm" ORACLEASM_SCANEXCLUDE="sd" ORACLEASM_SCAN_DIRECTORIES=""
外部冗長性を備えた ASM ディスク グループを作成する
Bare Metal Solution が提供するストレージでは、NETAPP RAID-DP を使用します。これは、2 つのディスクに障害が発生した場合でもデータを保護する RAID 6 の形式です。そのため、ASM には外部冗長性を使用することをおすすめします。
ASM ディスクの作成後に Bare Metal Solution サーバーを再起動する
ASM ディスク グループを作成したら、クラスタ内のすべての Bare Metal Solution サーバーを再起動して、再起動後に ASM インスタンスとディスク グループの両方がオンラインになるようにする必要があります。この事前対策的な操作を行うことで、ASM ディスク グループにデータベース クラスタが構築された後に発生する問題を回避できます。
Oracle RAC
このセクションでは、Bare Metal Solution に Oracle Real Application Clusters(RAC)をインストールする際のベスト プラクティスについて説明します。
Oracle Grid Infrastructure クラスタ名の長さ
クラスタ名は 15 文字以内にしてください。
クラスタ名が 15 文字を超えると、root.sh
スクリプトが失敗します。
SSH 経由での VNC Viewer のトンネリング
VNC ビューアなどの任意のサーバーは、Bare Metal Solution サーバーのデフォルトの OS ファイアウォールによってブロックされます。そのため、SSH を介して X Window または VNC ビューアをトンネルします。
ssh -L 5901:localhost:5901 bms-host
vncviewer localhost:1
ルート ファイル システムに十分な容量
ルート ファイル システム(/)に十分な空き容量があることを確認します。Bare Metal Solution サーバーには 20 GB のルート ファイル システムが付属していますが、十分ではない場合があります。
Bare Metal Solution サーバーで、ルート「/」ファイル システムのサイズを確認します。デフォルトのサイズは 20 GB ですが、十分でない場合があります。サイズが 20 GB の場合は、増やします。
Cloud DNS の代わりにネームサーバーを使用する
Cloud DNS を使用しない場合は、独自のネームサーバーをインストールして、Bare Metal Solution サーバーでホストの IP アドレスを解決します。Oracle Grid Infrastructure は、nslookup
コマンドを使用して DNS サーバーの名前を取得します。nslookup
コマンドは /etc/hosts
ファイルを使用しません。
以下の手順に沿って登録してください。
dnsmasq
をインストールします。yum makecache yum install dnsmasq
/etc/dnsmasq.conf
ファイルを編集モードで開きます。vi /etc/dnsmasq.conf
/etc/dnsmasq.conf
ファイルに次の行を追加します。port=53 domain-needed bogus-priv strict-order expand-hosts domain=localdomain address=/.localdomain/127.0.0.1 address=//127.0.0.1 listen-address=127.0.0.1 resolv-file=/etc/dnsmasq-resolv.conf
次の行のみが含まれるように
/etc/dnsmasq-resolv.conf
ファイルと/etc/resolv.conf
ファイルを編集します。nameserver 127.0.0.1
dnsmasq
サービスを起動します。systemctl restart dnsmasq systemctl status dnsmasq
両方のノードで
nslookup
コマンドを実行します。nslookup at-2811641-svr001 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: at-2811641-svr001 Address: 192.168.1.10 nslookup at-2811641-svr002 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: at-2811641-svr002 Address: 192.168.1.11
NTP のインストール
NTP をインストールするときは、すべての RAC ノードが踏み台ホストや内部 NTP サーバーの時刻と同期するようにします。以下の手順に沿って登録してください。
NTP のインストール
yum install ntp
ntpd
サービスを起動します。systemctl start ntpd
/etc/ntp.conf
ファイルに次の行を追加して、踏み台ホスト(この場合は10.x.x.x
)と同期します。内部 NTP サーバーを使用することもできます。この場合、192.x.x.x
は Bare Metal Solution サーバーです。restrict 192.x.x.x mask 255.255.255.0 nomodify notrap server 10.x.x.x prefer
同期を開始するには、タイムサーバーを更新して同期を開始します。
ntpdate -qu SERVER_NAME
ルート スクリプトを一度に 1 つのノードで実行する
ルート スクリプト root.sh
を一度に 1 つのノードで実行します。最初のノードで実行に失敗した場合は、次のノードに進まないでください。
Localhost
を解決する
Bare Metal Solution サーバーは Localhost
を /etc/hosts
ファイルに追加しないため、Localhost
を 127.0.0.1
に手動で解決します。
十分なリソース上限を確保する
Bare Metal Solution サーバーに Oracle RAC をインストールする前に、root
ユーザーと oracle
ユーザーのリソースの上限が十分であることを確認します。
上限を確認するには、ulimit
コマンドを使用します。
ORACLEASM_SCANORDER
変数を設定する
Oracle ASMLib を使用している場合、Oracle ASM が最初に単一パスの ASM デバイスを選択しないように、スキャン順序を次のように設定します。
ORACLEASM_SCANORDER="dm"
ORACLEASM_SCANEXCLUDE="sd"
Bare Metal Solution ストレージ環境では、/proc/partitions
ファイルで表示できる DM デバイスが使用されるため、この設定が必要です。
Java は Oracle および関連会社の登録商標です。