DBサーバ構築(Oracle製品インストール環境設定)
ローカル・リポジトリ設定
管理サーバのDVDマウント用シェルとローカル・リポジトリ用repoファイルを各DBサーバに配布します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# 管理サーバ#1からDVDマウント用シェルを取得
scp 172.16.10.11:/usr/local/bin/* /usr/local/bin
# 管理サーバ#1からローカル・リポジトリ用repoファイルを取得
scp 172.16.10.11:/etc/yum.repos.d/RHEL-DVD.repo /etc/yum.repos.d/
# DVDマウント用シェルをDBサーバ#2へ配布
scp /usr/local/bin/dvdmount 172.16.10.22:/usr/local/bin/
# DVDマウント用シェルをDBサーバ#3へ配布
scp /usr/local/bin/dvdmount 172.16.10.23:/usr/local/bin/
# ローカル・リポジトリ用repoファイルをDBサーバ#2へ配布
scp /etc/yum.repos.d/RHEL-DVD.repo 172.16.10.22:/etc/yum.repos.d/
# ローカル・リポジトリ用repoファイルをDBサーバ#3へ配布
scp /etc/yum.repos.d/RHEL-DVD.repo 172.16.10.23:/etc/yum.repos.d/
メディア用NFSディレクトリ・マウントシェル作成
メディア用NFSディレクトリへのマウント用シェル、アンマウント用シェルを作成して各DBサーバに配布します。
NFSディレクトリへ・マウント用シェル(mdmount)
#!/bin/bash
MNT_DIR=/mnt/media
WAIT_TIME=10
ITVL_TIME=1
NFS_SVR=prsmg00
if [ ! -d "${MNT_DIR}" ] ; then
mkdir ${MNT_DIR}
fi
MNT_CHK=`mount | grep -c ${MNT_DIR}`
if [ ${MNT_CHK} -ne 0 ] ; then
echo "media directory already mounted !!"
exit 0
fi
$(mount -t nfs -o ro ${NFS_SVR}:/media ${MNT_DIR} &)
sleep ${ITVL_TIME}
for ((i=0;i<${WAIT_TIME};i++)) ; do
jobs
JCNT=`jobs | wc -l`
if [ ${JCNT} -eq 0 ] ; then
break
fi
sleep ${ITVL_TIME}
done
MNT_CHK=`mount | grep -c ${MNT_DIR}`
if [ ${MNT_CHK} -eq 0 ] ; then
echo "media directory mount check failed!!"
exit 1
fi
exit
NFSディレクトリへ・アンマウント用シェル(mdumount)
#!/bin/bash
MNT_DIR=/mnt/media
WAIT_TIME=10
ITVL_TIME=1
MNT_CHK=`mount | grep -c ${MNT_DIR}`
if [ ${MNT_CHK} -eq 0 ] ; then
echo "media directory already unmounted !!"
exit 1
fi
$(umount ${MNT_DIR} &)
sleep ${ITVL_TIME}
for ((i=0;i<${WAIT_TIME};i++)) ; do
jobs
JCNT=`jobs | wc -l`
if [ ${JCNT} -eq 0 ] ; then
break
fi
sleep ${ITVL_TIME}
done
MNT_CHK=`mount | grep -c ${MNT_DIR}`
if [ ${MNT_CHK} -ne 0 ] ; then
echo "media directory unmount failed !!"
exit 1
fi
exit
【prsdb01で実行】
-----------------------------------------------------------------------------
# メディア用NFSディレクトリへのマウント用シェル作成
vi /usr/local/bin/mdmount
# メディア用NFSディレクトリへのアンマウント用シェル作成
vi /usr/local/bin/mdumount
# 実行権限付与
chmod u+x /usr/local/bin/md*mount
# NFSマウント動作確認(prsmg00:/mediaがマントされていることを確認)
mdmount
df -m
# NFSアンマウント動作確認(prsmg00:/mediaがマントされていないことを確認)
mdumount
df -m
# DBサーバ#2、DBサーバ#3へシェルを配布
scp /usr/local/bin/md*mount 172.16.10.22:/usr/local/bin/
scp /usr/local/bin/md*mount 172.16.10.23:/usr/local/bin/
パッケージ・インストール
Oracle Grid Infrastructure及びOracle Databaseのパッケージ要件を元にインストールに必要なRHEL8のパッケージ・リストを作成します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# RHEL8 必要パッケージ要件リスト作成
cat > /tmp/ora_pkg.lst <<EOF
bc
binutils
compat-openssl10
elfutils-libelf
glibc
glibc-devel
ksh
libaio
libXrender
libX11
libXau
libXi
libXtst
libgcc
libnsl
libstdc++
libxcb
libibverbs
make
policycoreutils
policycoreutils-python-utils
smartmontools
sysstat
EOF
パッケージ・リストを現在インストールされているパッケージと突合して不足しているパッケージをインストールするコマンドを生成します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# 不足パッケージ追加インストール用コマンド生成(1行で記述)
rpm -qa > /tmp/all_pkg.lst;INST_CMD="dnf -y install";while read LINE; do PKG=${LINE}; P_NAME=`grep ^${PKG}\-[0-9] /tmp/all_pkg.lst`; if [ -z "${P_NAME}" ] ; then INST_CMD="${INST_CMD} ${LINE}"; else echo "${P_NAME} INSTALLED" > /tmp/installed_pkg_lst;fi; done < "/tmp/ora_pkg.lst";echo "-----------------------";echo ${INST_CMD}
-----------------------------------------------------------------------------
【実行結果】
-----------------------------------------------------------------------------
[root@prsdb01 ~]# rpm -qa > /tmp/all_pkg.lst;INST_CMD="dnf -y install";while read LINE; do PKG=${LINE}; P_NAME=`grep ^${PKG}\-[0-9] /tmp/all_pkg.lst`; if [ -z "${P_NAME}" ] ; then INST_CMD="${INST_CMD} ${LINE}"; else echo "${P_NAME} INSTALLED" > /tmp/installed_pkg_lst;fi; done < "/tmp/ora_pkg.lst";echo "-----------------------";echo ${INST_CMD}
-----------------------
dnf -y install compat-openssl10 ksh libnsl
[root@prsdb01 ~]#
生成されたコマンドで各DBサーバに追加パッケージをインストールします。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# インストール・メディアをマウント
dvdmount
# 追加パッケージをインストール
dnf -y install compat-openssl10 ksh libnsl
# GUI操作用にtigervnc-serverも一緒にインストール
dnf -y install tigervnc-server
クロック・ソース設定の確認
Oracle Grid Infrastructureでは仮想環境(VM)のパフォーマンスを向上させるためにクロック・ソースをtscに設定することを推奨しています。現在のクロック・ソース設定がtscとなっていることを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# 使用可能なクロック・ソースを確認
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
# 現在のクロック・ソースを確認
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
透過的なHugePagesの無効化
Oracle Databaseのインストールでは透過的HugePagesの無効化が推奨事項です。各DBサーバで透過的なHugePagesを無効化します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# 現在の透過的HugePages設定を確認
cat /sys/kernel/mm/transparent_hugepage/enabled
# grubをバックアップ
cp /etc/default/grub /tmp/grub.bk
# grubを編集して透過的HugePages無効を記述
vi /etc/default/grub
# grub.cfgを再生成
grub2-mkconfig -o /boot/grub2/grub.cfg
# サーバ再起動
reboot
# 現在の透過的HugePages設定を確認(neverが選択されていることを確認)
cat /sys/kernel/mm/transparent_hugepage/enabled
-----------------------------------------------------------------------------
【/etc/default/grub編集内容】
-----------------------------------------------------------------------------
【編集箇所】※赤字部分を追記
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/root_vg-swap rd.lvm.lv=root_vg/root rd.lvm.lv=root_vg/swap rhgb quiet
↓
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/root_vg-swap rd.lvm.lv=root_vg/root rd.lvm.lv=root_vg/swap rhgb quiet numa=off transparent_hugepage=never clocksource=tsc
ディスクI/Oスケジューラの確認
Oracle ASMではパフォーマンス向上を目的としてDeadline I/Oスケジューラの使用が推奨されています。ASMディスクの現在の I/Oスケジューラがdeadlineであることを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
cat /sys/block/sd[c-z]/queue/scheduler
-----------------------------------------------------------------------------
【実行結果】
-----------------------------------------------------------------------------
[root@prsdb01 ~]# cat /sys/block/sd[c-z]/queue/scheduler
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[mq-deadline] kyber bfq none
[root@prsdb01 ~]#
カーネル・パラメータの設定
「インストールのための最小パラメータ設定」に従いカーネル・パラメータを設定します。まず、DBサーバ#1の現在のパラメータ値を確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
sysctl -a | grep sem
sysctl -a | grep shmall
sysctl -a | grep shmmax
sysctl -a | grep shmmni
sysctl -a | grep panic_on_oops
sysctl -a | grep file-max
sysctl -a | grep aio-max-nr
sysctl -a | grep ip_local_port_range
sysctl -a | grep rmem_default
sysctl -a | grep rmem_max
sysctl -a | grep wmem_default
sysctl -a | grep wmem_max
実行結果
[root@prsdb01 ~]# sysctl -a | grep sem
kernel.sem = 32000 1024000000 500 32000
kernel.sem_next_id = -1
[root@prsdb01 ~]# sysctl -a | grep shmall
kernel.shmall = 18446744073692774399
[root@prsdb01 ~]# sysctl -a | grep shmmax
kernel.shmmax = 18446744073692774399
[root@prsdb01 ~]# sysctl -a | grep shmmni
kernel.shmmni = 4096
[root@prsdb01 ~]# sysctl -a | grep panic_on_oops
kernel.panic_on_oops = 1
[root@prsdb01 ~]# sysctl -a | grep file-max
fs.file-max = 1190694
[root@prsdb01 ~]# sysctl -a | grep aio-max-nr
fs.aio-max-nr = 1048576
[root@prsdb01 ~]# sysctl -a | grep ip_local_port_range
net.ipv4.ip_local_port_range = 32768 60999
[root@prsdb01 ~]# sysctl -a | grep rmem_default
net.core.rmem_default = 212992
[root@prsdb01 ~]# sysctl -a | grep rmem_max
net.core.rmem_max = 212992
[root@prsdb01 ~]# sysctl -a | grep wmem_default
net.core.wmem_default = 212992
[root@prsdb01 ~]# sysctl -a | grep wmem_max
net.core.wmem_max = 212992
[root@prsdb01 ~]#
実行結果を見るとfile-max、ip_local_port_range、rmemとwmemのdefault、maxが推奨値を下回っています。また、shmall、shmmaxは推奨値以上ですが物理メモリ以上の値となっています。
推奨値を下回るカーネル・パラメータは推奨値以上、shmmaxは物理メモリサイズの半分(バイト数)、shmallは物理メモリサイズの90%(ページ数)にパラメータ値を設定します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# shmmaxの値を算出
expr 12 \* 1024 \* 1024 \* 1024 / 2
→ 結果:6442450944
# shmallの値を算出
expr 12 \* 1024 \* 1024 \* 1024 \* 9 / 10 / 4096
→ 結果:2831155
# Oracle用カーネル・パラメータ設定ファイル作成
vi /etc/sysctl.d/97-oracle-database-sysctl.conf
# 設定ファイルのパラメータ値をシステムに反映
sysctl --system
# カーネル・パラメータ値から変更したパラメータの値を抽出
sysctl -a | grep -e shmall -e shmmax -e file-max -e ip_local_port_range -e [r,w]mem_default -e [r,w]mem_max
-----------------------------------------------------------------------------
【97-oracle-database-sysctl.confの内容】
-----------------------------------------------------------------------------
kernel.shmall = 2831155
kernel.shmmax = 6442450944
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
パラメータの更新を確認したらパラメータ設定ファイルをDBサーバ#2、DBサーバ#3に転送します。
【prsdb01で実行】
-----------------------------------------------------------------------------
scp /etc/sysctl.d/97-oracle-database-sysctl.conf 172.16.10.22:/etc/sysctl.d/
scp /etc/sysctl.d/97-oracle-database-sysctl.conf 172.16.10.23:/etc/sysctl.d/
DBサーバ#2、DBサーバ#3のパラメータを修正します。
【prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# パラメータ設定ファイルの内容をシステムに反映
sysctl --system
# カーネル・パラメータが変更されたことを確認
sysctl -a | grep -e shmall -e shmmax -e file-max -e ip_local_port_range -e [r,w]mem_default -e [r,w]mem_max
DNS/hosts設定
DNS設定
管理サーバ#1のnamedにスキャン・アドレスとDBサーバのアドレスを登録します。
【prsmg01で実行】
-----------------------------------------------------------------------------
# DBサーバ用ネットワークの逆引きゾーンを追記
vi /etc/named.conf
# 正引きのゾーン・ファイルにスキャン・アドレスとDBサーバのアドレスを追記
vi /var/named/exsample.foward.db
# DBサーバ用ネットワークの逆引きゾーン・ファイルを作成
vi /var/named/30.168.192.in-addr.arpa.rev
/etc/named.conf
# 10.16.172.in-addr.arpaゾーン定義の次に以下のゾーン定義を挿入
zone "30.168.192.in-addr.arpa" IN {
type master;
file "30.168.192.in-addr.arpa.rev";
};
/var/named/exsample.foward.db
# シリアル値を編集日時に修正
2025051000 ; Serial
# 以下のAレコードを追加
prsdb01 IN A 192.168.30.21
prsdb02 IN A 192.168.30.22
prsdb03 IN A 192.168.30.23
prsscan IN A 192.168.30.121
prsscan IN A 192.168.30.122
prsscan IN A 192.168.30.123
/var/named/30.168.192.in-addr.arpa.rev
$TTL 86400
@ IN SOA prsmg01.exsample.lan.zone. root.exsample.lan.zone.(
2025051000 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ; MinimumA TTL
)
IN NS prsmg01.exsample.lan.
IN NS prsmg02.exsample.lan.
121 IN PTR prsscan.exsample.lan.
122 IN PTR prsscan.exsample.lan.
123 IN PTR prsscan.exsample.lan.
21 IN PTR prsdb01.exsample.lan.
22 IN PTR prsdb02.exsample.lan.
23 IN PTR prsdb03.exsample.lan.
編集内容をチェックして問題がなければnamed-chrootの再起動と名前解決の確認を行います。
【prsmg01で実行】
-----------------------------------------------------------------------------
# named.confのチェック
named-checkconf
# exsample.foward.dbのチェック
named-checkzone exsample.lan /var/named/exsample.foward.db
# 30.168.192.in-addr.arpa.revのチェック
named-checkzone 30.168.192.in-addr.arpa /var/named/30.168.192.in-addr.arpa.rev
# named-chroot再起動
systemctl restart named-chroot.service
# スキャン・アドレスの名前解決を確認
nslookup prsscan.exsample.lan
nslookup 192.168.30.121
# DBサーバの名前解決を確認
nslookup prsdb04
nslookup prsdb02
nslookup prsdb03
管理サーバ#2のnamed.confにDBサーバ用ネットワークの逆引きゾーンを追記します。
【prsmg02で実行】
-----------------------------------------------------------------------------
vi /etc/named.conf
-----------------------------------------------------------------------------
【named.conf編集内容】
-----------------------------------------------------------------------------
# 10.16.172.in-addr.arpaゾーン定義の次に以下のゾーン定義を挿入
zone "30.168.192.in-addr.arpa" IN {
type slave;
file "30.168.192.in-addr.arpa.slv.rev";
masters {
172.16.10.11;
};
};
管理サーバ#2のnamed-chrootを再起動して管理サーバ#1の変更が反映されていることを確認します。
【prsmg02で実行】
-----------------------------------------------------------------------------
# named-chrootを再起動
systemctl restart named-chroot.service
# MASTERの定義を反映します
rndc retransfer exsample.lan
# 正引きゾーン・ファイルのAレコード追加を確認
named-compilezone -f raw -F text -o - exsample.lan /var/named/exsample.foward.slv.db
# DBサーバ用ネットワークの逆引きゾーン情報確認
named-compilezone -f raw -F text -o - 30.168.192.in-addr.arpa. /var/named/30.168.192.in-addr.arpa.slv.rev
hosts設定
DBサーバ#1のhostsにOracle RACで使用するホスト情報を記述してDBサーバ#2、DBサーバ#3に配布します。
/etc/hots
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.10 prsmg00.exsample.lan prsmg00
172.16.10.11 prsmg01.exsample.lan prsmg01
172.16.10.12 prsmg02.exsample.lan prsmg02
172.16.10.21 prsdb01-mgt.exsample.lan prsdb01-mgt
172.16.10.22 prsdb02-mgt.exsample.lan prsdb02-mgt
172.16.10.23 prsdb03-mgt.exsample.lan prsdb03-mgt
192.168.30.21 prsdb01.exsample.lan prsdb01
192.168.30.22 prsdb02.exsample.lan prsdb02
192.168.30.23 prsdb03.exsample.lan prsdb03
192.168.30.31 prsdb01-vip.exsample.lan prsdb01-vip
192.168.30.32 prsdb02-vip.exsample.lan prsdb02-vip
192.168.30.33 prsdb03-vip.exsample.lan prsdb03-vip
192.168.30.121 prsscan.exsample.lan prsscan
192.168.30.122 prsscan.exsample.lan prsscan
192.168.30.123 prsscan.exsample.lan prsscan
10.10.20.1 prsdb01-prv.exsample.lan prsdb01-prv
10.10.20.2 prsdb02-prv.exsample.lan prsdb02-prv
10.10.20.3 prsdb03-prv.exsample.lan prsdb03-prv
【prsdb01で実行】
-----------------------------------------------------------------------------
# Oracle RAC用ホスト情報をhostsに追記
vi /etc/hosts
# hostsによる名前解決確認
ping -c 1 prsdb01.exsample.lan
ping -c 1 prsdb02.exsample.lan
ping -c 1 prsdb03.exsample.lan
ping -c 1 prsdb01-prv.exsample.lan
ping -c 1 prsdb02-prv.exsample.lan
ping -c 1 prsdb03-prv.exsample.lan
# DBサーバ#2、DBサーバ#3にhosts配布
scp /etc/hosts prsdb02:/etc/
scp /etc/hosts prsdb03:/etc/
firewalld設定
DBサーバ間の通信はすべて許可するようにfirewalldを設定します。まず、各サーバ間でホスト・アドレス、仮想IPアドレスのアクセスを相互に許可します。
DBサーバ#1のfirewalld設定
【prsdb01で実行】
-----------------------------------------------------------------------------
# DBサーバ#2からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.22" accept" --permanent
# DBサーバ#3からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.23" accept" --permanent
# DBサーバ#2(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.32" accept' --permanent
# DBサーバ#3(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.33" accept' --permanent
DBサーバ#2のfirewalld設定
【prsdb02で実行】
-----------------------------------------------------------------------------
# DBサーバ#1からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.21" accept" --permanent
# DBサーバ#3からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.23" accept" --permanent
# DBサーバ#1(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.31" accept' --permanent
# DBサーバ#3(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.33" accept' --permanent
DBサーバ#3のfirewalld設定
【prsdb01で実行】
-----------------------------------------------------------------------------
# DBサーバ#1からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.21" accept" --permanent
# DBサーバ#2からのアクセス許可
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.30.22" accept" --permanent
# DBサーバ#1(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.31" accept' --permanent
# DBサーバ#2(仮想IP)からのアクセス許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.32" accept' --permanent
SCANアドレス、プライベート・ネットワークからの許可も追加します。プライベート・ネットワーク用のインターフェース(ens254)ではDHCPアドレスを使った通信も行っているようなのでソースアドレスによる許可指定ではなくインターフェースそのものをtrustedゾーンに移動します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# SCANアドレスからの接続許可
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.121" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.122" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.30.123" accept' --permanent
# プライベート・ネットワーク用インターフェースをtrustedに移動
firewall-cmd --zone=trusted --change-interface=ens256 --permanent
# クライアントからのVNC接続許可(1行で記述)
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.11.0/24" port port=5901 protocol=tcp accept" --permanent
# 設定をリロード
firewall-cmd --reload
# 設定を確認
firewall-cmd --list-all
firewall-cmd --list-all --zone=trusted
Grid/Oracleユーザ追加
Grid/Oracleユーザ追加
DBサーバにOracle関連グループ、gridユーザ、oracleユーザを作成、パスワードを設定します。また、NFS上のファイルの所有者が変わらないように管理サーバにも同じグループ、ユーザを作成します。
【prsmg01、prsmg02、prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
groupadd -g 1100 oinstall
groupadd -g 1101 asmadmin
groupadd -g 1102 asmdba
groupadd -g 1103 racdba
groupadd -g 1104 dba
useradd -g oinstall -G asmadmin,asmdba,racdba,dba -u 1100 grid
useradd -g oinstall -G asmdba,racdba,dba -u 1101 oracle
passwd grid
passwd oracle
DBサーバのgridユーザ、oracleユーザの.bash_profileにumask 022を設定します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# umask 022を追記
vi /home/grid/.bash_profile
vi /home/oracle/.bash_profile
リソース制限設定
「Oracleソフトウェア・インストール・ユーザーのリソース制限の確認」に従ってDBサーバ#1でOracleユーザの現在のリソース・リミットを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# oracleユーザのリソース・リミットを確認
su - grid
ulimit -aS | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
ulimit -aH | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
exit
実行結果
[root@prsdb01 ~]# su - oracle
[oracle@prsdb01 ~]$ ulimit -aS | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
max locked memory (kbytes, -l) 64
open files (-n) 1024
stack size (kbytes, -s) 8192
max user processes (-u) 46679
[oracle@prsdb01 ~]$ ulimit -aH | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
max locked memory (kbytes, -l) 64
open files (-n) 262144
stack size (kbytes, -s) unlimited
max user processes (-u) 46679
[oracle@prsdb01 ~]$ exit
確認した結果を見ると「stack size」、「max locked memory」がsoft制限、hard制限とも推奨値に適合していないことがわかります。
limits.confに設定を追加してリソース制限を修正します。なお、Grid Infrastructureのインストールマニュアルでは「max locked memory」の推奨値について「HugePagesメモリーを有効にする場合は現在のRAMの90%以上、HugePagesメモリーを無効にする場合は、3145728 KB (3 GB)以上」となっていますがOracle Databaseのインストールマニュアルでは「max locked memory」は「無制限」なので”unlimited”に設定します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# リソース制限設定を追記
vi /etc/security/limits.conf
# 設定変更を確認
su - oracle
ulimit -aS | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
ulimit -aH | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
exit
su - grid
ulimit -aS | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
ulimit -aH | grep -e "open files" -e "max user processes" -e "stack size" -e "max locked memory"
exit
-----------------------------------------------------------------------------
【limits.conf追記内容】
-----------------------------------------------------------------------------
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited
grid soft stack 10240
grid hard stack 32768
grid soft memlock unlimited
grid hard memlock unlimited
設定変更の結果を確認したらlimits.confをDBサーバ#2、DBサーバ#3に転送します。
【prsdb01で実行】
-----------------------------------------------------------------------------
scp /etc/security/limits.conf prsdb02:/etc/security/
scp /etc/security/limits.conf prsdb03:/etc/security/
udev設定
ASMディスクはgridが所有している必要があります。udevを使用してディスクデバイスの所有者、グループ、権限を設定します。
DBサーバ#1でASMディスクのWWNを取得します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# WWN取得(1行で追記)
ls /dev/disk/by-path/pci-0000:04:00.0-scsi-0:0:?:0 | while read DEVPATH ; do /lib/udev/scsi_id --whitelisted --device=${DEVPATH};done
ASMディスク用のudevルールファイルを作成します。
【prsdb01で実行】
-----------------------------------------------------------------------------
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
-----------------------------------------------------------------------------
【設定内容】
-----------------------------------------------------------------------------
# デバイスファイルの所有者設定(1デバイス1行で記述)
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="<取得したWWN>", OWNER="grid", GROUP="asmadmin", MODE="0660"
# マルチパスデバイスの所有者設定(1行のみ記述)
KERNEL=="dm-*", ENV{DM_NAME}=="asmd*", ACTION=="add|change", OWNER="grid", GROUP="asmadmin", MODE="0660"
99-oracle-asmdevices.rules
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c29a3f0a7b1c0cfce643cbd2998a", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c298625b80b185837f00f9a086de", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c295799d0b1c0e4c886066513186", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c298f4fde5ccf40d0b016a9464aa", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c29802c1077545367d572fcfe23f", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c29880c6e9c851e00d5f6537cc2a", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c29dc34668da2329d10889319d3e", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c298792b9280cdb2d7a4ecbfe242", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_BUS}=="scsi", ACTION=="add|change", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="36000c2946ad523c016fbafd30ad31abb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="dm-*", ENV{DM_NAME}=="asmd*", ACTION=="add|change", OWNER="grid", GROUP="asmadmin", MODE="0660"
ASMディスク用のudevルールを適用してASMディスクがgrid(asmadmin)の所有となったことを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# 現在の設定を確認
ls -l /dev/sd?
ls -l /dev/dm-*
# ルールを適用
udevadm control --reload-rules
udevadm trigger
# ルール適用後の設定を確認
ls -l /dev/sd?
ls -l /dev/dm-*
ルール適用実行結果
[root@prsdb01 ~]# udevadm control --reload-rules
[root@prsdb01 ~]# udevadm trigger
[root@prsdb01 ~]#
[root@prsdb01 ~]# ls -l /dev/sd?
brw-rw---- 1 root disk 8, 0 5月 11 04:13 /dev/sda
brw-rw---- 1 root disk 8, 16 5月 11 04:13 /dev/sdb
brw-rw---- 1 grid asmadmin 8, 32 5月 11 04:13 /dev/sdc
brw-rw---- 1 grid asmadmin 8, 48 5月 11 04:13 /dev/sdd
brw-rw---- 1 grid asmadmin 8, 64 5月 11 04:13 /dev/sde
brw-rw---- 1 grid asmadmin 8, 80 5月 11 04:13 /dev/sdf
brw-rw---- 1 grid asmadmin 8, 96 5月 11 04:13 /dev/sdg
brw-rw---- 1 grid asmadmin 8, 112 5月 11 04:13 /dev/sdh
brw-rw---- 1 grid asmadmin 8, 128 5月 11 04:13 /dev/sdi
brw-rw---- 1 grid asmadmin 8, 144 5月 11 04:13 /dev/sdj
brw-rw---- 1 grid asmadmin 8, 160 5月 11 04:13 /dev/sdk
[root@prsdb01 ~]#
[root@prsdb01 ~]# ls -l /dev/dm-*
brw-rw---- 1 root disk 253, 0 5月 11 18:15 /dev/dm-0
brw-rw---- 1 root disk 253, 1 5月 11 18:15 /dev/dm-1
brw-rw---- 1 grid asmadmin 253, 10 5月 11 18:15 /dev/dm-10
brw-rw---- 1 grid asmadmin 253, 11 5月 11 18:15 /dev/dm-11
brw-rw---- 1 grid asmadmin 253, 12 5月 11 18:15 /dev/dm-12
brw-rw---- 1 root disk 253, 2 5月 11 18:15 /dev/dm-2
brw-rw---- 1 root disk 253, 3 5月 11 18:15 /dev/dm-3
brw-rw---- 1 grid asmadmin 253, 4 5月 11 18:15 /dev/dm-4
brw-rw---- 1 grid asmadmin 253, 5 5月 11 18:15 /dev/dm-5
brw-rw---- 1 grid asmadmin 253, 6 5月 11 18:15 /dev/dm-6
brw-rw---- 1 grid asmadmin 253, 7 5月 11 18:15 /dev/dm-7
brw-rw---- 1 grid asmadmin 253, 8 5月 11 18:15 /dev/dm-8
brw-rw---- 1 grid asmadmin 253, 9 5月 11 18:15 /dev/dm-9
[root@prsdb01 ~]#
ルールファイルをDBサーバ#2、DBサーバ#3に転送して各DBサーバ上で適用します。
【prsdb01で実行】
-----------------------------------------------------------------------------
scp /etc/udev/rules.d/99-oracle-asmdevices.rules prsdb02:/etc/udev/rules.d/
scp /etc/udev/rules.d/99-oracle-asmdevices.rules prsdb03:/etc/udev/rules.d/
-----------------------------------------------------------------------------
【prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# ルールを適用
udevadm control --reload-rules
udevadm trigger
# ルール適用後の設定を確認
ls -l /dev/sd?
ls -l /dev/dm-*
インストール・ディレクトリ作成
各DBサーバにGrid Infrastructureのベース・ディレクトリ、インストール・ディレクトリ、Oracle Databaseのベース・ディレクトリ作成します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
mkdir -p /opt/app/grid
mkdir -p /opt/app/21.0.0/grid
mkdir /opt/app/oracle
mkdir /opt/app/oraInventory
chown grid:oinstall /opt/app/grid
chown -R grid:oinstall /opt/app/21.0.0
chown oracle:oinstall /opt/app/oracle/
chown -R grid:oinstall /opt/app/oraInventory/
これでGrid Infrastructure、Oracle Databaseのインストール準備は完了です。次はGrid Infrastructureのインストール及び構成を行います。
コメント