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 サーバーでジャンボ フレームを構成するには:

  1. Bare Metal Solution プライベート ネットワークの設定を表示して、ジャンボ フレームが構成されていることを確認します。

    gcloud bms networks describe NETWORK_NAME --project=PROJECT_ID --region=REGION | grep jumboFramesEnabled
    

    出力例:

    jumboFramesEnabled: true
    
  2. ネットワーク インターフェースとその 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
    
  3. 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
    
  4. ネットワーク サービスを再起動して変更を反映します。

    service network restart
    
  5. 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 を、ストレージ・ボリュームのパフォーマンス上限まで押し上げることができます。これにより、ストレージ IO がスロットリングされ、ストレージ ボリュームのレイテンシが増加します。

Oracle RMAN が使用できる帯域幅またはスループットの量を制限するために、RATE チャネル パラメータを実装することをおすすめします。

詳細については、Oracle のドキュメント: 23.2.1.4 RATE チャネル パラメータをご覧ください。

Oracle の自動ストレージ管理

Cloud カスタマーケア チームは、Bare Metal Solution のユーザーと協力して、Bare Metal Solution 環境に Oracle 自動ストレージ管理(ASM)を追加しました。独自の経験と知恵を生かして、独自の ASM ディスク グループを正常にインストールできるように、以下のベスト プラクティスのリストをまとめました。Google の目標は、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 Cluster(RAC)をインストールする際のベスト プラクティスについて説明します。

Oracle Grid Infrastructure クラスタ名の長さ

15 文字以下のクラスタ名を使用します。

クラスタ名が 15 文字を超えると、root.sh スクリプトが失敗します。

SSH 経由での VNC Viewer のトンネリング

VNC ビューアなどの任意のサーバーは、Bare Metal Solution サーバーのデフォルトの OS ファイアウォールによってブロックされます。そのため、SSH 経由で X Window または VNC Viewer のいずれかをトンネリングします。

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 ファイルを使用しません。

以下の手順に沿って登録してください。

  1. dnsmasq をインストールします。

    yum makecache
    yum install dnsmasq
    
  2. /etc/dnsmasq.conf ファイルを編集モードで開きます。

    vi /etc/dnsmasq.conf
    
  3. /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
    
  4. 次の行のみが含まれるように /etc/dnsmasq-resolv.conf ファイルと /etc/resolv.conf ファイルを編集します。

    nameserver 127.0.0.1
    
  5. dnsmasq サービスを起動します。

    systemctl restart dnsmasq
    
    systemctl status dnsmasq
    
  6. 両方のノードで、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 サーバーの時刻と同期するようにします。以下の手順に沿って登録してください。

  1. NTP をインストールします。

    yum install ntp
    
  2. ntpd サービスを起動します。

    systemctl start ntpd
    
  3. /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
    
  4. 同期を開始するには、時刻サーバーを更新して同期を開始します。

    ntpdate -qu SERVER_NAME
    

一度に 1 つのノードでルート スクリプトを実行する

一度に 1 つのノードでルート スクリプト root.sh を実行します。最初のノードでの実行が失敗した場合、次のノードに進まないでください。

Localhost を解決する

Bare Metal Solution サーバーは Localhost/etc/hosts ファイルに追加しないため、Localhost127.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 および関連会社の登録商標です。