ablog

不器用で落着きのない技術者のメモ

Oracle 11gR1 3node RAC on RHEL 構築手順

fswiki から移行してみた。

前提条件の確認

  • 下記のパッケージがインストールされ、下記のバージョン以降であることを確認する。
# rpm -qa --queryformat "%{name}-%{version}-%{release}.%{arch}\n" | grep <パッケージ名>
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.1
gcc-c++-4.1.1
glibc-2.5-12
glibc-2.5-12 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5-12 (32 bit)
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libgcc-4.1.1
libgcc-4.1.1 (32 bit)
libstdc++-4.1.1
libstdc++-4.1.1 (32 bit)
libstdc++-devel 4.1.1
make-3.81
sysstat-7.0.0
  • /etc/sysctl.conf に下記の通り設定されていることを確認する。
# less etc/sysctl.conf
(現在の設定値は sysctl -A で確認できる)
fs.file-max = 153600
kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 4194304 
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
  • /etc/pam.d/login に下記の通り記述されていることを確認する。
# less /etc/pam.d/login
session required     pam_limits.so
  • IPアドレスが正しく設定されていることを確認する。
# ifconfig -a
  • /etc/hosts に Public Network、Private Network、Virtual Network の設定が記述されていることを確認する。
  • グループが正しく設定されていることを確認する。
# less /etc/group
  • ユーザが正しく設定されていることを確認する。
# less /etc/passwd

OS設定

OSユーザ・グループ作成
  • OSグループ作成
# groupadd -g 501 dba
# groupadd -g 503 asmadmin
# groupadd -g 504 oper
# groupadd -g 502 oinstall
  • OSユーザ作成
# useradd oracle -d /home/oracle -g oinstall -G dba,asmadmin -u 501
# useradd crs -d /home/crs -g oinstall -G dba -u 502
# useradd asm -d /home/asm -g oinstall -G asmadmin -u 503
# chmod 750 /home/oracle
# chmod 750 /home/asm
# chmod 750 /home/crs
rawデバイスの設定
# fdisk /dev/emcpoera
  • rawdeviceのバインド設定
# vi /etc/udev/rules.d/60-raw.rules
ACTION=="add",KERNEL=="sda1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdc1",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdd1",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add",KERNEL=="sde1",RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add",KERNEL=="sdf1",RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add",KERNEL=="sdg1",RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add",KERNEL=="raw[1-2]",OWNER="root",GROUP="oinstall",MODE="0640"
ACTION=="add",KERNEL=="raw[3-5]",OWNER="crs",GROUP="oinstall",MODE="0640"
ACTION=="add",KERNEL=="raw[6-7]",OWNER="asm",GROUP="oinstall",MODE="0660"
# start_udev
# raw -qa
# ls -l /dev/raw
  • ディスクフォーマット(1ノードのみで実行する)
# fdisk -l
# dd if=/dev/zero of=/dev/raw/raw1 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw2 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw3 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw4 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw5 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw6 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw7 bs=1024k count=100
# dd if=/dev/zero of=/dev/raw/raw8 bs=1024k count=100
# mkdir -p -m 755 /oracle
# mkdir -p -m 775 /oracle/app
# mkdir -p -m 755 /oracle/app/crs
# mkdir -p /oracle/app/oracle/product/11.1.0
# chmod -R 775 /oracle/app/oracle
# chown root:oinstall /oracle /oracle/app
# chown crs:oinstall /oracle/app/crs
# chown -R oracle:oinstall /oracle/app/oracle
# ls -l /
# tree -fpug /oracle

Oracle Clusterware のインストール

事前確認
# mount -t iso9660 /dev/cdrom /mnt/cdrom 
$ su - crs
$ /mnt/cdrom/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n db001,db002,db003
# umount /mnt/cdrom
インストールする
# mount -t iso9660 /dev/cdrom /mnt/cdrom
# su - crs
$ /mnt/cdrom/runInstaller
インベントリ・ディレクトリ:/oracle/app/oraInventory
オペレーティング・システム・グループ名:oinstall
  • ホーム詳細の指定
名前: OraCrs11g_crs
パス: /oracle/app/crs
製品の言語: 日本語がなければ追加する
クラスタ名:crs
クラスタ・ノード:
db001 db001-int db001v
db002 db002-int db002v
db003 db003-int db003v
  • ネットワーク・インターフェースの使用方法の指定
eth0 192.168.1.0 パブリック
eth1 10.1.125.0 プライベート
  • OCRの場所の指定
OCR構成:通常の冗長性
OCRの場所の指定:/dev/raw/raw1
OCRミラーの場所の指定:/dev/raw/raw2
  • 投票ディスクの場所の指定
投票ディスクの構成:通常の冗長性
投票ディスクの場所:/dev/raw/raw3
投票ディスク1の場所:/dev/raw/raw4
投票ディスク2の場所:/dev/raw/raw5
  • 全ノードで orainstRoot.sh を実行する
# /oracle/app/oraInventory/orainstRoot.sh
  • 全ノードで root.sh を実行する
# /oracle/app/crs/root.sh
事後確認
  • CRSスタックの確認
$ ps -ef | grep d.bin | grep -v grep
crs      11766 11765  0 14:09 ?        00:00:00 /oracle/app/crs/bin/evmd.bin
root     11866 10997  1 14:09 ?        00:00:04 /oracle/app/crs/bin/crsd.bin reboot
crs      12423 11948  1 14:09 ?        00:00:08 /oracle/app/crs/bin/ocssd.bin
$ tail -3 /etc/inittab
h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null
h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null
h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null
  • ノード・アプリケーションの確認
$ ./srvctl status nodeapps -n db001
VIPはノードで実行中です: db001
GSDはノードで実行中です: db001
PRKO-2016 : ノードのリスナーの条件チェックでエラーが発生しました: db001
ONSデーモンはノードで実行中です: db001
$ ./srvctl status nodeapps -n db002
VIPはノードで実行中です: db002
GSDはノードで実行中です: db002
PRKO-2016 : ノードのリスナーの条件チェックでエラーが発生しました: db002
ONSデーモンはノードで実行中です: db002
$ ./srvctl status nodeapps -n db003
VIPはノードで実行中です: db003
GSDはノードで実行中です: db003
PRKO-2016 : ノードのリスナーの条件チェックでエラーが発生しました: db003
ONSデーモンはノードで実行中です: db003
$ ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....001.gsd application    ONLINE    ONLINE    db001
ora....001.ons application    ONLINE    ONLINE    db001
ora....001.vip application    ONLINE    ONLINE    db001
ora....002.gsd application    ONLINE    ONLINE    db002
ora....002.ons application    ONLINE    ONLINE    db002
ora....002.vip application    ONLINE    ONLINE    db002
ora....003.gsd application    ONLINE    ONLINE    db003
ora....003.ons application    ONLINE    ONLINE    db003
ora....003.vip application    ONLINE    ONLINE    db003
$ /ORA_MEDIA/database/source/crs/Disk1/runcluvfy.sh stage -post crsinst -n db001,db002,db003
  • バックアップ
$ su -
# cd /oracle/app/crs
# cp -p root.sh root.sh.bak
# dd if=/dev/raw/raw3 of=/home/oracle/vdisk.bak
# cd /home/oracle
# gzip vdisk.bak
# /oracle/app/crs/bin/ocrconfig -export /home/oracle/ocrdisk.bak

ASMのインストール

事前確認
$ su - asm
$ /ORA_MEDIA/database/source/crs/Disk1/runcluvfy.sh stage -pre dbinst -n db001,db002,db003 
  • 環境変数 NLS_LANG の language を American になっていることを確認する
$ su - asm
$ echo $NLS_LANG
インストール
$ su - asm
$ /ORA_MEDIA/database/source/db/Disk1/runInstaller
※[Oracle Net Configuration Assistant]が表示されたら[取消]を選択する。
  • インストールする製品の選択:Oracle Database11g
  • インストール・タイプの選択:カスタム
  • 製品言語に日本語追加:日本語
  • インストールの場所:
  • ハードウェアのクラスタ・インストール・モードの指定:クラスタ・インストール(全ノードを選択する)
  • 使用可能な製品コンポーネント
    • Oracle Dtabase 11g 11.1.0.6.0
    • Oracle Partitioning 11.1.0.6.0
    • Oracle Real Application Testing 11.1.0.6.0
    • Oracle Net Listner 11.1.6.0
    • Oracle Call Interface(OCI) 11.1.0.6.0
    • Oracle XML Development Kit 11.1.0.6.0
  • 権限付きオペレーティング・システム・グループ:
    • データベース管理者グループ:oinstall
    • データベース・オペレータグループ:oinstall
    • ASM管理者グループ:asmadmin
  • データベースの作成:自動ストレージ管理の構成
  • orainstRoot.sh を実行する
# /oracle/app/oracle/product/11.1.0/asm_1/orainstRoot.sh
  • root.sh を実行する
# /oracle/app/oracle/product/11.1.0/asm_1/root.sh
事後確認
# su - crs
$ crs_stat -t
事後作業
# chmod -R 775 /oracle/app/oracle/diag ← 全ノード
# chmod -R 775 /oracle/app/oracle/cfgtoollogs ← dbcaを使用したノードのみ

データベースソフトウェアのインストール

事前作業
$ su - oracle
$ /ORA_MEDIA/database/source/crs/Disk1/runcluvfy.sh stage -pre dbinst -n db001,db002,db003
  • 環境変数 NLS_LANG の language が American になっていることを確認する
$ su - oracle
$ echo $NLS_LANG
インストールする
$ su - oracle
$ /ORA_MEDIA/database/source/db/Disk1/runInstaller
  • インストールする製品の選択:Oracle Database11g
  • インストール・タイプの選択:カスタム
  • 製品の言語:日本語がなければ追加する
  • インストールの場所:
  • ハードウェアのクラスタ・インストール・モードの指定:クラスタ・インストール(全ノードを選択する)
  • 使用可能な製品コンポーネント
    • Oracle Dtabase 11g 11.1.0.6.0
    • Oracle Partitioning 11.1.0.6.0
    • Oracle Real Application Testing 11.1.0.6.0
    • Oracle Net Listner 11.1.6.0
    • Oracle Call Interface(OCI) 11.1.0.6.0
    • Oracle XML Development Kit 11.1.0.6.0
  • 権限付きオペレーティング・システム・グループ:
    • データベース管理者グループ:dba
    • データベース・オペレータグループ:dba
    • ASM管理者グループ:dba
  • データベースの作成:データベース・ソフトウェアのみインストール
  • root.sh を実行する
# /oracle/app/oracle/product/11.1.0/db_1/root.sh

PSR11.1.0.7の適用

事前作業
  • Oracle Time Zone Definitions の確認(1ノードのみで実施)
# su - oracle
$ cd /oracle/app/oracle/product/11.1.0/db_1/dbs
$ cp -pi init.ora init.ora.tmp
$ vi init.ora.tmp   ※shared_pool_size = 189582540に変更 
$ sqlplus / as sysdba
SQL> startup nomount pfile=/oracle/app/oracle/product/11.1.0/db_1/dbs/init.ora.tmp
SQL> select version from v$timezone_file;
VERSION
----------
4 ← 「4」であればOK
SQL> shutdown immedaite
# /oracle/app/crs/install/preupdate.sh
  • ノード・アプリケーションを停止する
$ srvctl stop nodeapps -n db001
$ srvctl stop nodeapps -n db002
$ srvctl stop nodeapps -n db003
$ crs_stat -t
  • CRS を停止する(全ノードで実行する)
# /oracle/app/crs/bin/crsctl stop crs
  • パッチ適用前バックアップの取得
# mkdir -p /dba/backup/11.1.0.6/db001
# tar cvzfp /dba/backup/11.1.0.6/db001/CRS_HOME.tar.gz /oracle/app/crs
# tar cvzfp /dba/backup/11.1.0.6/db001/ORACLE_HOME.tar.gz /oracle/app/oracle/product/11.1.0/db_1
# tar cvzfp /dba/backup/11.1.0.6/db001/ASM_HOME.tar.gz /oracle/app/oracle/product/11.1.0/asm_1
# mkdir -p /dba/backup/11.1.0.6/db002 
# tar cvzfp /dba/backup/11.1.0.6/db002/CRS_HOME.tar.gz /oracle/app/crs
# tar cvzfp /dba/backup/11.1.0.6/db002/ORACLE_HOME.tar.gz /oracle/app/oracle/product/11.1.0/db_1
# tar cvzfp /dba/backup/11.1.0.6/db002/ASM_HOME.tar.gz /oracle/app/oracle/product/11.1.0/asm_1
# mkdir -p /dba/backup/11.1.0.6/db003
# tar cvzfp /dba/backup/11.1.0.6/db003/CRS_HOME.tar.gz /oracle/app/crs
# tar cvzfp /dba/backup/11.1.0.6/db003/ORACLE_HOME.tar.gz /oracle/app/oracle/product/11.1.0/db_1
# tar cvzfp /dba/backup/11.1.0.6/db003/ASM_HOME.tar.gz /oracle/app/oracle/product/11.1.0/asm_1
crsのパッチ適用
# su - crs
$ /ORA_MEDIA/Disk1/runInstaller
  • [インストールされた製品]クリックし、CRSのホーム名を確認する
  • ホームの詳細の指定:OraCrs11g_crs を選択し、パスが「/oracle/app/crs」であることを確認する。
  • 電子メール・アドレスが指定されていません:はい
  • ハードウェアのクラスタ・インストール・モードの指定:クラスタ・インストール(全ノード選択されている事を確認する)
  • root111.sh を実行する(全ノードで実行する)
# /oracle/app/crs/bin/crsctl stop crs
# /oracle/app/crs/install/root111.sh
ASMのパッチ適用
  • ノード・アプリケーションを停止する
$ srvctl stop nodeapps -n db001
$ srvctl stop nodeapps -n db002
$ srvctl stop nodeapps -n db003
$ crs_stat -t
  • CRS を停止する(全ノードで実行する)
# /oracle/app/crs/bin/crsctl stop crs
# su - asm
$ /ORA_MEDIA/Disk1/runInstaller
  • [インストールされた製品]クリックし、ASMのホーム名を確認する
  • ホームの詳細の指定:OraCrs11g_asm を選択し、パスが「/oracle/app/oracle/product/11.1.0/asm_1」であることを確認する。
  • 電子メール・アドレスが指定されていません:はい
  • ハードウェアのクラスタ・インストール・モードの指定:クラスタ・インストール(全ノード選択されている事を確認する)
  • root.sh を実行する(全ノードで実行する)
# /oracle/app/oracle/product/11.1.0/asm_1/root.sh
データベースソフトウェアのパッチ適用
  • ノード・アプリケーションを停止する
# su - oracle
$ srvctl stop nodeapps -n db001
$ srvctl stop nodeapps -n db002
$ srvctl stop nodeapps -n db003
$ crs_stat -t
  • CRS を停止する(全ノードで実行する)
# su -
# /oracle/app/crs/bin/crsctl stop crs
# su - oracle
$ /ORA_MEDIA/Disk1/runInstaller
  • [インストールされた製品]クリックし、データベースソフトウェアのホーム名を確認する
  • ホームの詳細の指定:OraCrs11g_asm を選択し、パスが「/oracle/app/oracle/product/11.1.0/db_1」であることを確認する。
  • 電子メール・アドレスが指定されていません:はい
  • ハードウェアのクラスタ・インストール・モードの指定:クラスタ・インストール(全ノード選択されている事を確認する)
  • root.sh を実行する(全ノードで実行する)
# /oracle/app/oracle/product/11.1.0/db_1/root.sh
パッチインストール後の各種バックアップ
  • ノード・アプリケーションの停止
$ su - oracle
$ srvctl stop nodeapps -n db001
$ srvctl stop nodeapps -n doc1eb002
$ srvctl stop nodeapps -n db003
$ crs_stat -t
$ su -
# /oracle/app/crs/bin/crsctl stop crs
  • バックアップの取得
# mkdir -p dba/backup/11.1.0.7
# cd /dba/backup/11.1.0.7
# mkdir db001 db002 db003
# tar cvzfp /dba/backup/11.1.0.7/db001/CRS_HOME.tar.gz /oracle/app/crs
# tar cvzfp /dba/backup/11.1.0.7/db002/ORACLE_HOME.tar.gz /oracle/app/oracle/product/11.1.0/db_1
# tar cvzfp /dba/backup/11.1.0.7/db003/ASM_HOME.tar.gz /oracle/app/oracle/product/11.1.0/asm_1
  • 全ノード再起動
# reboot

ASMディスクグループの作成

  • 環境変数 NLS_LANG の language が American になっていることを確認する
# su - asm
$ echo $NLS_LANG
  • CRSが起動していることを確認する
$ crs_stat -t
  • dbca を起動する
$ dbca
  • 実行する操作を選択して下さい:自動ストレージ管理の構成
  • ASMディスク・グループを管理するノードを選択して下さい:全ノードを選択する
  • ASMパラメータ(下記以外はデフォルト)
    • diagnostic_dest:/dba/logs
  • sysパスワード:********
  • 新規ASMインスタンスに使用するパラメータ・ファイルのタイプを選択します:初期化パラメータ・ファイルを作成
    • 初期化パラメータ・ファイル名:{ORACLE_HOME}/dbs/initasm.ora
  • 使用可能なディスクグループ:
    • ディスク・グループ名:DG_DATA
  • 冗長性:外部
    • メンバー・ディスクの選択:/dev/raw/raw6、/dev/raw/raw7
  • 「ASMディスク・グループのページ...」:DG_DATA 10228 10091 外部 MOUNTED:(3/3) ← 全ノードマウントされているのでOK
  • 「...接頭辞LISTENERを持つポート1521のリスナーをノード[db001、db002、db003]に自動的に作成しますか。...」:[はい]
  • ASMインスタンスとリスナーがONLINEであることを確認する。
$ crs_stat -t

データベースの作成

# su - oracle
$ ln -s /oracle/app/oracle/product/11.1.0/asm_1/network/admin/listener.ora \
/oracle/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
  • 環境変数 NLS_LANG の language が American になっていることを確認する
# su - oracle
$ echo $NLS_LANG
  • CRSが起動していることを確認する
$ crs_stat -t
  • dbca を起動する
$ dbca
  • どのようなタイプのデータベースを作成または管理するかを選択してください:Oracle Real Application Clustersデータベース
  • 実行する操作を選択してください:データベースの作成
  • ノードの選択:全て選択
  • データベース・テンプレート:カスタム・データベース
  • グローバル・データベース名:db01
  • SID接頭辞:db01
  • データベースの資格証明:すべてのアカウントに同じ管理パスワードを使用
  • 記憶域オプション:自動ストレージ管理(ASM)
  • ASMディスク・グループ:DG_DATA
  • データベース・ファイルの位置:
  • データベース・コンポーネント
  • 初期化パラメータ:
    • モリー:カスタム
    • モリー管理:手動共有メモリー管理
    • 共有プール:512MB
    • バッファ・キャッシュ:268MB
    • Javaプール:0
    • ラージ・プール:40MB
    • PGAサイズ:204MB
    • データベース・キャラクタ・セット:JA16SJISTILDA
  • 初期化パラメータ
    • diagnostic_dest:/dba/logs
  • セキュリティ設定:11gより前のデフォルトのセキュリティ設定に戻す
  • データベース記憶域:表領域>USERS>大型ファイル表領域の使用:チェック
  • 作成オプション:
    • データベースの作成:チェック
    • データベーステンプレートとして保存:チェック
    • 名前:db01
    • データベース作成スクリプトの生成:チェック
    • ディレクトリ:/oracle/app/oracle/admin/db01/scripts

サービス作成

$ srvctl add service -d db01 -s SRV_1 -r db012 -a db013
$ srvctl add service -d db01 -s SRV_2 -r db012,db013 -a db011
$ srvctl add service -d db01 -s SRV_3 -r db013 -a db011
  • サービス起動
$ srvctl start service -d db01