tech_memo / ORACLE / oracle_RAC / Install / HW-setup


tech_memo/oracle_RAC/Install

systemd-logind設定 (RHEL7.2)

  • RHEL7.2からこれをやらないとインストールは絶対失敗する。RHEL7.1では不要。
  • racserver1, racserver2両ノードで実施
    • コンフィグ編集
      [root@racserver1 ~]# vim /etc/systemd/logind.conf
      
      RemoveIPC=no # 追加 or 変更
    • リロード & リスタート
      [root@racserver1 ~]# systemctl daemon-reload
      [root@racserver1 ~]# systemctl restart systemd-logind
  • 参考

共有Disk設定

  • 以下、A) ASMLibを使用する方法か、B) Rawデバイスを使用する方法のどちらかを実施
  • Rawデバイスは12cは非推奨

A) Oracle ASMLib

RHEL7.2 + Oracle12.1.0.2

  • Rawデバイスではなく、ASM Disk deviceを使用する場合のみ実施。
  • ちなみに、RHEL7.2 + Oracle 12.1.0.2ではRawデバイスではインストールが途中で失敗(Rawデバイスが原因かは定かではないが。。。)。RHEL7.1のときはインストールできた。
  1. ASMLib関連PKGのインストール
    • Linux distributionから出ているASMLib対応のPKGをインストール。30日無償サブスクリプションを利用して取得。
      • testserver18:/var/www/cobbler/ks_mirror/RHEL7.2/addedPkgByManual?/kmod-oracleasm-2.0.8-15.el7.x86_64.rpm
    • 下記ASMLib PKGをOracleサイトからダウンロードしてインストール (testserver18:/var/www/cobbler/ks_mirror/RHEL7.2/addedPkgByManual? にもある)
  2. インストール後の実行コマンド (racserver1,racserver2両ノードで実施)
    [root@racserver1 tmp]# /etc/init.d/oracleasm configure
    Configuring the Oracle ASM library driver.
    
    This will configure the on-boot properties of the Oracle ASM library
    driver.  The following questions will determine whether the driver is
    loaded on boot and what permissions it will have.  The current values
    will be shown in brackets ('[]').  Hitting <ENTER> without typing an
    answer will keep that current value.  Ctrl-C will abort.
    
    Default user to own the driver interface []: grid
    Default group to own the driver interface []: asmadmin
    Scan for Oracle ASM disks on boot (y/n) [y]: y
    Writing Oracle ASM library driver configuration: done
    Initializing the Oracle ASMLib driver:                     [  OK  ]
    Scanning the system for Oracle ASMLib disks:               [  OK  ]
    • 上記で行われている設定
      • /etc/sysconfig/oracleasm構成ファイルの作成
      • /dev/oracleasmマウント・ポイントの作成
      • oracleasmカーネル・モジュールのロード
      • ASMLibドライバのファイル・システムのマウント
  3. ASMDisk用にパーティションを作成(racserver1だけでよい)。partition typeはLinux(デフォルト)
    [root@racserver1 tmp]# fdisk /dev/sde
  4. ASM Disk device作成 (racserver1だけでよい)
    [root@racserver1 tmp]# /etc/init.d/oracleasm createdisk  MY_ASM_DISK /dev/sde1
    Marking disk "MY_ASM_DISK" as an ASM disk:                    [  OK  ]
    • 既にラベルがあり作成できない場合(上記がFAILEDになる場合)は以下のコマンドを実行し再実行すれば行ける(以下のコマンドは途中で止めていい(5秒ほど実行でいけるハズ))
      dd if=/dev/zero of=/dev/sde1
  5. racserver2で以下を実行
    [root@racserver1 tmp]# /etc/init.d/oracleasm scandisks
    Scanning the system for Oracle ASMLib disks:               [  OK  ]
    [root@racserver1 tmp]# /etc/init.d/oracleasm listdisks
    MY_ASM_DISK
  6. racserver1, racserver2の両方でASM Disk deviceが確認できる
    [root@racserver1 tmp]# ll /dev/oracleasm/disks/
    total 0
    brw-rw---- 1 oracle dba 8, 65 Feb 27 14:16 MY_ASM_DISK

B) rawデバイス作成 + udevルール

  • ASM Disk deviceではなく、Rawデバイスを使用する場合に実施

RHEL7

  • RHEL7.2では、本方法でのインストールは失敗(Rawデバイスが原因かは不明だが。RHEL7.1では成功。)
  • rawデバイス作成
    • racserver1
      [root@racserver1 rules.d]# raw /dev/raw/raw1 /dev/sdc
      /dev/raw/raw1:  bound to major 8, minor 32
      [root@racserver1 rules.d]# raw /dev/raw/raw2 /dev/sdd
      /dev/raw/raw2:  bound to major 8, minor 48
      [root@racserver1 rules.d]# raw /dev/raw/raw3 /dev/sde
      /dev/raw/raw3:  bound to major 8, minor 64
  • racserver2
    [root@racserver2 rules.d]# raw /dev/raw/raw1 /dev/sdb
    /dev/raw/raw1:  bound to major 8, minor 16
    [root@racserver2 rules.d]# raw /dev/raw/raw2 /dev/sdc
    /dev/raw/raw2:  bound to major 8, minor 32
    [root@racserver2 rules.d]# raw /dev/raw/raw3 /dev/sdd
    /dev/raw/raw3:  bound to major 8, minor 48
  • udevでルール付。パーミッションなどを設定。基本はRHEL6と同じだが、udevのスタートなどはない様子。ルールファイルを書くだけでよい?
    • racserver1
      [root@racserver1 rules.d]# pwd
      /etc/udev/rules.d
      [root@racserver1 rules.d]# vim 60-raw.rules
      ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw1 %N"
      ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw2 %N"
      ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw3 %N"
      ACTION=="add",KERNEL=="raw[1-3]",OWNER="grid",GROUP="asmadmin",MODE="0660"
  • racserver2
    [root@racserver2 rules.d]# pwd
    /etc/udev/rules.d
    [root@racserver2 rules.d]# vim 60-raw.rules
    ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
    ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
    ACTION=="add",KERNEL=="raw[1-3]",OWNER="grid",GROUP="asmadmin",MODE="0660"

RHEL6編

参考URL

実行手順

  • OCR, VotingDisk?は/dev/raw/raw1
  • Datafileは/dev/raw/raw2
    [root@racserver1 ~]# raw /dev/raw/raw1 /dev/ora_ocr
    /dev/raw/raw1:  bound to major 8, minor 32
    [root@racserver1 ~]# raw /dev/raw/raw2 /dev/ora_data
    /dev/raw/raw2:  bound to major 8, minor 64
  • /etc/sysconfig/rawdevicesに下記追加
    /dev/raw/raw1   /dev/ora_ocr
    /dev/raw/raw2   /dev/ora_data
  • rawdevice起動
    [root@racserver1 raw]# /etc/init.d/rawdevices start
    Assigning devices:
               /dev/raw/raw1  -->   /dev/ora_ocr
    /dev/raw/raw1:  bound to major 8, minor 32
               /dev/raw/raw2  -->   /dev/ora_data
    /dev/raw/raw2:  bound to major 8, minor 64
    done
  • test
    [root@racserver1 raw]# dd if=/dev/zero of=/dev/raw/raw2 bs=1024k count=100
    100+0 records in
    100+0 records out
    104857600 bytes (105 MB) copied, 0.364932 seconds, 287 MB/s
  • restart
    [root@racserver1 raw]# /etc/init.d/rawdevices restart
    Assigning devices:
               /dev/raw/raw1  -->   /dev/ora_ocr
    /dev/raw/raw1:  bound to major 8, minor 32
               /dev/raw/raw2  -->   /dev/ora_data
    /dev/raw/raw2:  bound to major 8, minor 64
    done
  • 権限変更
    [root@racserver1 raw]# ll
    total 0
    crw------- 1 root root 162, 1 Nov 15 11:30 raw1
    crw------- 1 root root 162, 2 Nov 15 11:30 raw2
    [root@racserver1 raw]# chown grid:asmadmin raw1
    [root@racserver1 raw]# chown grid:asmadmin raw2
    [root@racserver1 raw]# ll
    total 0
    crw------- 1 grid asmadmin 162, 1 Nov 15 11:30 raw1
    crw------- 1 grid asmadmin 162, 2 Nov 15 11:30 raw2 
    [root@racserver1 raw]# chmod 660 raw1
    [root@racserver1 raw]# chmod 660 raw2
    [root@racserver1 raw]# ll
    total 0
    crw-rw---- 1 grid asmadmin 162, 1 Nov 15 11:30 raw1
    crw-rw---- 1 grid asmadmin 162, 2 Nov 15 11:30 raw2
  • udevのルール追加
    [root@racserver1 dev]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
    
    KERNEL=="sdc", OWNER="grid", GROUP="asmadmin", MODE="0660", NAME="ora_ocr", BUS=="scsi", PROGRAM=="/sbin/scsi_id", RESULT=="20016971210340003"
    KERNEL=="sde", OWNER="grid", GROUP="asmadmin", MODE="0660", NAME="ora_data", BUS=="scsi", PROGRAM=="/sbin/scsi_id", RESULT=="20016971210340005"
    KERNEL=="raw/raw1", OWNER="grid", GROUP="asmadmin", MODE="0660", NAME="ora_ocr", BUS=="scsi", PROGRAM=="/sbin/scsi_id", RESULT=="20016971210340003"
    KERNEL=="raw/raw2", OWNER="grid", GROUP="asmadmin", MODE="0660", NAME="ora_data", BUS=="scsi", PROGRAM=="/sbin/scsi_id", RESULT=="20016971210340005"
  • ルールの適用
    [root@racserver1 dev]# /sbin/udevcontrol reload_rules
    [root@racserver1 dev]# start_udev

rpm pkg

  • ORACLEサイトから取ってくるもの以外に以下をtestserver18:/var/www/cobbler/ks_mirror/RHEL5.5/Serverからとってきてインストール
    • kernel-debug-2.6.18-194.el5.x86_64.rpm
    • kernel-xen-2.6.18-194.el5.x86_64.rpm
  • cvuqdisk RPMパッケージ
    • インストール手順書には書いてなかった(見当たらなかった)が、Oracle Grid Infrastructureインストール時の前提条件チェックでこのパッケージがないというエラーが出た。
    • ORACLEのドキュメントを見てインストール
      cvuqdisk RPMパッケージの場所を確認します。このパッケージは、インストール・メディアのclusterware/rpmディレクトリにあります。Oracle Clusterwareをすでにインストールしている場合、これはCRS_home/rpmディレクトリにあります。
      
      1. cvuqdiskパッケージをクラスタの各ノードにコピーします。各ノードで同じバージョンのLinuxが実行されていることを確認する必要があります。
      2. rootユーザーでログインします。
      3. 次のコマンドを使用して、cvuqdiskパッケージの既存バージョンがあるかどうかを確認します。
         # rpm -qi cvuqdisk
       
         既存バージョンがある場合は、次のコマンドを入力して既存バージョンを削除します。
      
         rpm -e cvuqdisk
      
      4. cvuqdiskを所有しているグループを指すように、環境変数CVUQDISK_GRPを設定します。通常は、oinstallです。
      5. 次のコマンドを使用して、cvuqdiskパッケージをインストールします。
         rpm -iv cvuqdisk-1.0.1-1.rpm

DNS設定

  • scan ipが解決できるように設定
    vi /etc/resolv.conf
    search mydomain.co.jp
    nameserver 192.168.100.118
  • nameserver側設定
    • 忘れた。やっつけで設定した記憶あり。とりあえず動いている。
      [root@testserver18 ~]# ps -ef | grep unbou
      unbound   5296     1  0  2012 ?        00:00:02 /usr/sbin/unbound -c /etc/unbound.conf
  • DNSを参照できるか確認 (racserver1, racserver2両方で確認)
    [root@racserver1 ~]# nslookup racserver2
    Server:         192.168.100.118
    Address:        192.168.100.118#53
    
    Name:   racserver2
    Address: 192.168.100.12

node IP設定

  • ifupしているとエラーになる?
  • PrivateIP :PublicIPと別ポート/セグメント.OracleがHeartBeat?等に使用する
    • ※別ポート→別NIC
    • ※別セグメント→別ネットワークアドレス
  • 各ノードのセグメントはethごとにすべて同じでないとエラーになる
    • 全ノードのeth0のサブネットは192.168.0.0, eth1のサブネットは192.168.0.64とか

NTP

  • Oracleの機能でCluster Time Synchronization Service(CTSS)という時刻同期機能があるが、DBサーバと他サーバの時刻同期を行う場合はNTPを使用する [root@racserver1 ~]# vi /etc/ntp.conf
    server 0.rhel.pool.ntp.org
    server 1.rhel.pool.ntp.org
    server 2.rhel.pool.ntp.org
    server 192.168.100.118 # <-- adding

カーネルパラメータ

  • document以外にvm.swappnessも設定しておく
    kernel.sem                   = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default        = 4194304
    net.core.rmem_max            = 4194304
    net.core.wmem_default        = 4194304
    net.core.wmem_max            = 4194304
    fs.file-max                  = 6815744
    fs.aio-max-nr                = 1048576
    vm.swappiness                 = 0