参考マニュアル: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
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
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
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
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