CLUSTERPRO + Oracle

参考マニュアル:CLUSTERPROR X for Linux PPガイド (Oracle Database)


node1: mmm121 CentOS7 Oracle 12cR2
node2: mmm122 CentOS7 Oracle 12cR2
iSCSItarget: mmm123 CentOS7
管理サーバ: mmm161 Windows Server2012R2


3.1.1 メモリ要件
メモリの最低要件 2.2 GB
→node1とnode2のメモリサイズを4GBに増強

4.3 環境構築の流れ

【1】CLUSTERPRO ソフトウェアのインストール[node1,node2]

【2】CLUSTERPRO Builderでクラスター、フェイルオーバーグループ、リソースを作成[管理サーバ]

【3】Oracle Database ソフトウェアのインストール[node1,node2]

【4】データベースの作成[node1]

【5】Listenerの作成[node1,node2]

【6】CLUSTERPRO Builderでデータベースに関係するリソースを作成[管理サーバ]

 

【1】【2】については「CLUSTERPROインストール」参照

【3】Oracle Database ソフトウェアのインストール

yum update -y

yum -y install \
binutils \
compat-libcap1 \
compat-libstdc++-33.i686 \
compat-libstdc++-33 \
glibc.i686 \
glibc \
glibc-devel.i686 \
glibc-devel \
ksh \
libaio.i686 \
libaio \
libaio-devel.i686 \
libaio-devel \
libgcc.i686 \
libgcc \
libstdc++.i686 \
libstdc++ \
libstdc++-devel.i686 \
libstdc++-devel \
libxcb.i686 \
libxcb \
libX11.i686 \
libX11 \
libXau.i686 \
libXau \
libXi.i686 \
libXi \
libXtst.i686 \
libXtst \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat

yum install -y gcc-c++

vim /etc/sysctl.conf

kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
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
fs.aio-max-nr = 1048576

sysctl -p

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba

useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle


echo oracle | passwd --stdin oracle

mkdir -p /u01/app/oracle


chown -R oracle:oinstall /u01
chmod -R 775 /u01

vim /etc/pam.d/login
session required pam_limits.so

vim /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768


vim /home/oracle/.bash_profile

export ORACLE_BASE=/u01/app/oracle
umask 022

vim /etc/default/grub

GRUB_CMDLINE_LINUXの項目に設定追記(transparent_hugepage=never)します

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

cat /sys/kernel/mm/transparent_hugepage/enabled

--oracleユーザで実行
LANG=C ./runInstaller

【4】データベースの作成

mkdir -p /mnt/sdc2/oracle/oradata/orcl
chown -R oracle:oinstall /mnt/sdc2/oracle
chmod -R 755 /mnt/sdc2/oracle

su - oracle

vim /home/oracle/.bash_profile

export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=$PATH:$ORACLE_HOME/bin

. /home/oracle/.bash_profile

 


vim $ORACLE_HOME/dbs/initorcl.ora
db_name='orcl'
memory_target=800M
db_domain='example.com'
control_files = ('/mnt/sdc2/oracle/oradata/orcl/control01.ctl','/mnt/sdc2/oracle/oradata/orcl/control02.ctl')

sqlplus / as sysdba


startup nomount;

CREATE DATABASE orcl
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/mnt/sdc2/oracle/oradata/orcl/redo01a.log','/mnt/sdc2/oracle/oradata/orcl/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/mnt/sdc2/oracle/oradata/orcl/redo02a.log','/mnt/sdc2/oracle/oradata/orcl/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/mnt/sdc2/oracle/oradata/orcl/redo03a.log','/mnt/sdc2/oracle/oradata/orcl/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/mnt/sdc2/oracle/oradata/orcl/system01.dbf'
SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SYSAUX DATAFILE '/mnt/sdc2/oracle/oradata/orcl/sysaux01.dbf'
SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TABLESPACE users
DATAFILE '/mnt/sdc2/oracle/oradata/orcl/users01.dbf'
SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/mnt/sdc2/oracle/oradata/orcl/temp01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE undo
DATAFILE '/mnt/sdc2/oracle/oradata/orcl/undo01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
USER_DATA TABLESPACE usertbs
DATAFILE '/mnt/sdc2/oracle/oradata/orcl/usertbs01.dbf'
SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;


@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql
conn system/oracle
@?/sqlplus/admin/pupbld.sql
conn / as sysdba
create spfile from pfile;
shutdown immediate;
startup;


4.8 データベース作成後の作業
4.8.1 データベース作成後の注意点

cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace
grep ORA- alert_orcl.log

4.8.2 ノード間でファイルコピー

--node2で実行

vim /home/oracle/.bash_profile

export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=$PATH:$ORACLE_HOME/bin

. /home/oracle/.bash_profile

mkdir $ORACLE_BASE/admin

--node1で実行

パスワードファイル生成
cd $ORACLE_HOME/dbs

orapwd file=orapworcl format=12

spfileの移動
mv spfileorcl.ora /mnt/sdc2/oracle/oradata/orcl/


pfileの作成
vim initorcl.ora
spfile=/mnt/sdc2/oracle/oradata/orcl/spfileorcl.ora


scp $ORACLE_HOME/dbs/hc_orcl.dat mmm122:$ORACLE_HOME/dbs
scp $ORACLE_HOME/dbs/initorcl.ora mmm122:$ORACLE_HOME/dbs
scp $ORACLE_HOME/dbs/lkORCL mmm122:$ORACLE_HOME/dbs
scp $ORACLE_HOME/dbs/orapworcl mmm122:$ORACLE_HOME/dbs
scp -r $ORACLE_BASE/admin/orcl mmm122:$ORACLE_BASE/admin/
scp -r $ORACLE_BASE/diag/rdbms/orcl mmm122:$ORACLE_BASE/diag/rdbms/

 


【5】Listenerの作成[node1,node2]
4.9 リスナーの作成

vim $ORACLE_HOME/network/admin/listener.ora

LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.22)(PORT = 1521))

vim $ORACLE_HOME/network/admin/tnsnames.ora

listener=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.22)(PORT = 1521))
)
)

orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.22)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl.example.com)
)
)

alter system set local_listener='listener';


【6】CLUSTERPRO Builderでデータベースに関係するリソースを作成[管理サーバ]

4.10 CLUSTERPROの設定②
4.10.1 execリソースの作成

--start.sh

#! /bin/sh
#***************************************
#* start.sh *
#***************************************

#ulimit -s unlimited

if [ "$CLP_EVENT" = "START" ]
then
if [ "$CLP_DISK" = "SUCCESS" ]
then
echo "NORMAL1"

su -l oracle -c 'lsnrctl start listener'
if [ $? -ne 0 ]
then
echo "listener start error"
exit 1
fi
su -l oracle -c 'export ORACLE_SID=orcl;sqlplus /nolog @/mnt/sdc2/oracle/oradata/orcl/startup.sql'
if [ $? -ne 0 ]
then
echo "db start error"
su -l oracle -c 'lsnrctl stop listener'
exit 1
fi

if [ "$CLP_SERVER" = "HOME" ]
then
echo "NORMAL2"
else
echo "ON_OTHER1"
fi
else
echo "ERROR_DISK from START"
exit 1
fi
elif [ "$CLP_EVENT" = "FAILOVER" ]
then
if [ "$CLP_DISK" = "SUCCESS" ]
then
echo "FAILOVER1"

su -l oracle -c 'lsnrctl start listener'
if [ $? -ne 0 ]
then
echo "listener start error"
exit 1
fi
su -l oracle -c 'export ORACLE_SID=orcl;sqlplus /nolog @/mnt/sdc2/oracle/oradata/orcl/startup.sql'
if [ $? -ne 0 ]
then
echo "db start error"
su -l oracle -c 'lsnrctl stop listener'
exit 1
fi

if [ "$CLP_SERVER" = "HOME" ]
then
echo "FAILOVER2"
else
echo "ON_OTHER2"
fi
else
echo "ERROR_DISK from FAILOVER"
exit 1
fi
else
echo "NO_CLP"
exit 1
fi
echo "EXIT"
exit 0

--stop.sh

#! /bin/sh
#***************************************
#* stop.sh *
#***************************************

#ulimit -s unlimited

if [ "$CLP_EVENT" = "START" ]
then
if [ "$CLP_DISK" = "SUCCESS" ]
then
echo "NORMAL1"

su -l oracle -c 'export ORACLE_SID=orcl;sqlplus /nolog @/mnt/sdc2/oracle/oradata/orcl/shutdown.sql '
if [ $? -ne 0 ]
then
echo "db shutdown error"
clplogcmd -m "db shutdown error" -i 1 -l ERR
fi
su -l oracle -c 'lsnrctl stop listener'
if [ $? -ne 0 ]
then
echo "listener stop error"
clplogcmd -m "listener stop error" -i 2 -l ERR
fi

if [ "$CLP_SERVER" = "HOME" ]
then
echo "NORMAL2"
else
echo "ON_OTHER1"
fi
else
echo "ERROR_DISK from START"
exit 1
fi
elif [ "$CLP_EVENT" = "FAILOVER" ]
then
if [ "$CLP_DISK" = "SUCCESS" ]
then
echo "FAILOVER1"

su -l oracle -c 'export ORACLE_SID=orcl;sqlplus /nolog @/mnt/sdc2/oracle/oradata/orcl/shutdown.sql '
if [ $? -ne 0 ]
then
echo "db shutdown error"
clplogcmd -m "db shutdown error" -i 1 -l ERR
fi
su -l oracle -c 'lsnrctl stop listener'
if [ $? -ne 0 ]
then
echo "listener stop error"
clplogcmd -m "listener stop error" -i 2 -l ERR
fi


if [ "$CLP_SERVER" = "HOME" ]
then
echo "FAILOVER2"
else
echo "ON_OTHER2"
fi
else
echo "ERROR_DISK from FAILOVER"
exit 1
fi
else
echo "NO_CLP"
exit 1
fi
echo "EXIT"
exit 0

vim /mnt/sdc2/oracle/oradata/orcl/startup.sql

whenever sqlerror exit 1
connect / as sysdba
startup
exit;


vim /mnt/sdc2/oracle/oradata/orcl/shutdown.sql

whenever sqlerror exit 1
connect / as sysdba
shutdown immediate
exit;


7) 「スクリプト一覧」画面右下の「調整」を押下し、「execリソース調整プロパティ」画面で
開始/終了各々のタイムアウト値を設定してください。

 

4.10.2 モニタリソースの作成

タイプ:custom monitor
名前: oracle_mon

監視タイプ:同期

--genw.sh


#! /bin/sh
#***********************************************
#* genw.sh *
#***********************************************

ulimit -s unlimited

CNT=`ps -ef | grep ora_pmon_orcl | grep -v grep | wc -l`

if [ $CNT -ne 1 ]; then
exit 1
fi

exit 0