目录
- 安装规划
- 虚拟机准备
- 操作系统安装
- yum源配置
- openfiler安装
- 安装前准备
- 配置host文件(rac1和rac2)
- 关闭防火墙(rac1和rac2)
- 关闭Selinux(rac1和rac2)
- 安装依赖包(rac1和rac2)
- 修改内核参数(rac1和rac2)
- 配置资源限制参数(rac1和rac2)
- 修改登录验证(rac1和rac2)
- 创建用户组和用户(rac1和rac2)
- 创建目录(rac1和rac2)
- 添加用户环境变量(rac1和rac2)
- 配置ISCSI挂载外部存储(rac1和rac2)
- 节点免密互信(rac1)
- 关闭透明大页(rac1和rac2)
- 额外的安装包(rac1和rac2)
- 关闭 ZEROCONF(rac1和rac2)
- 移除操作系统时间同步配置(rac1和rac2)
- 安装
- 安装grid(rac1)
- 安装db(rac1)
- 创建ASM磁盘组
- dbca建库(rac1)
- 参考文章
安装规划
软件规划
软件 |
版本 |
虚拟机软件 |
VMware-workstation-full-16.1. |
操作系统软件 |
CentOS-7-x86_64 |
Oracle数据库软件 |
LINUX.X64_193000_db_home.zip |
GI软件 |
LINUX.X64_193000_grid_home.zip |
openfiler软件 |
openfileresa-2.99.1-x86_64 |
rlwrap |
rlwrap-0.37-1.el6.x86_64.rpm |
虚拟机规划
主机信息
主机名 |
操作系统 |
cpu核数 |
内存 |
硬盘 |
网卡 |
ora19c-rac1 |
Centos7.6 |
4核 |
8G |
100G |
2个网卡,1块public,1块private |
ora19c-rac2 |
Centos7.6 |
4核 |
8G |
100G |
2个网卡,1块public,1块private |
storage |
openfiler自带的 |
4核 |
8G |
450G |
与ora19c-rac1的public同一网段 |
网络规划
节点名称 |
public-ip |
private-ip |
vip |
scan-ip |
ora19c-rac1 |
192.168.245.141 |
10.10.10.141 |
192.168.245.101 |
192.168.245.140 |
ora19c-rac2 |
192.168.245.142 |
10.10.10.142 |
192.168.245.102 |
|
storage |
192.168.245.150 |
|
|
|
硬盘规划
目录 |
大小 |
/tmp |
10G |
swap |
8G |
/boot |
1G |
/ |
10G |
/u01 |
70G |
ASM磁盘组
ASM磁盘组 |
虚拟磁盘 |
大小 |
ocrdg |
ocr_disk1, ocr_disk2,ocr_disk3 |
3*10G |
datadg |
data_disk |
200G |
archdg |
backup_disk |
200G |
Oracle规划
用户组和用户
用户组 |
说明 |
oinstall |
Oracle清单和软件所有者 |
dba |
数据库管理员、RAC管理员 |
oper |
DBA操作员组 |
backupdba |
备份管理员 |
dgdba |
DG管理员 |
kmdba |
KM管理员 |
asmdba |
ASM数据库管理员组 |
asmoper |
ASM操作员组 |
asmadmin |
Oracle自动存储管理组 |
用户 |
用户所属主组 |
用户所属其他组 |
用户家目录 |
oracle |
oinstall |
dba,asmdba,backupdba,dgdba,kmdba,oper |
/home/oracle |
grid |
oinstall |
dba,asmadmin,asmdba,asmoper |
/home/grid |
软件目录规划
目录 |
路径 |
说明 |
ORACLE_BASE(oracle) |
/u01/app/oracle |
oracle基目录 |
ORACLE_HOME (oracle) |
/u01/app/oracle/product/19c/db_1 |
oracle用户HOME目录 |
ORACLE_BASE (grid) |
/u01/app/grid |
grid基目录 |
ORACLE_HOME (grid) |
/u01/app/19c/grid |
grid用户HOME目录 |
整体数据库安装规划
规划内容 |
规划描述 |
内存规划 |
SGA(4GB) PGA(500MB) |
字符集 |
AL32UTF8 |
归档模式 |
非(安装好后手动开启归档) |
redo |
5组 每组200M |
undo |
2G 自动扩展 最大4G |
temp |
4G |
闪回配置 |
4G大小 |
虚拟机准备
操作系统安装
VMware安装操作系统Centos7.6
yum源配置
基于Centos7.6配置yum源服务器和客户端
openfiler安装
Vmware安装openfiler
安装前准备
配置host文件(rac1和rac2)
vi /etc/hosts
192.168.245.141 ora19c-rac1
192.168.245.142 ora19c-rac2
10.10.10.141 ora19c-rac1-priv
10.10.10.142 ora19c-rac2-priv
192.168.245.101 ora19c-rac1-vip
192.168.245.102 ora19c-rac2-vip
192.168.245.140 ora19c-rac-scan
关闭防火墙(rac1和rac2)
systemctl status
systemctl stop
systemctl disable
关闭Selinux(rac1和rac2)
sed -i 's#SELINUX=.*#SELINUX=disabled#' /etc/selinux/config
安装依赖包(rac1和rac2)
yum install -y bc \
compat-libcap1* \
compat-libcap* \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc-2.5 \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel \
binutils* \
compat-libstdc* \
elfutils-libelf* \
gcc* \
glibc* \
ksh* \
libaio* \
libgcc* \
libstdc* \
make* \
sysstat* \
libXp* \
glibc-kernheaders \
net-tools-* \
iscsi-initiator-utils \
udev \
xclock*
修改内核参数(rac1和rac2)
echo '
= 277495689510912
= 4096
= 250 32000 100 128
.rmem_default = 262144
.rmem_max = 4194304
.wmem_default = 262144
.wmem_max = 1048586
-max = 6815744
= 67747971072
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
# = 262144
.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_timestamps = 0
-max-nr = 1048576
net..rp_filter = 2
net..rp_filter = 2' >> /etc/
sysctl -p
配置资源限制参数(rac1和rac2)
echo '
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728' >> /etc/security/
echo '
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
' >> /etc/profile
source /etc/profile
修改登录验证(rac1和rac2)
echo '
session required /lib/security/pam_limits.so
session required pam_limits.so
' >> /etc//login
创建用户组和用户(rac1和rac2)
groupadd -g 601 oinstall
groupadd -g 602 dba
groupadd -g 603 oper
groupadd -g 604 backupdba
groupadd -g 605 dgdba
groupadd -g 606 kmdba
groupadd -g 607 asmdba
groupadd -g 608 asmoper
groupadd -g 609 asmadmin
useradd -u 601 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 602 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
passwd grid
passwd oracle
创建目录(rac1和rac2)
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
mkdir -p /u01/app/grid
mkdir -p /u01/app/19c/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid
chown -R grid:oinstall /u01/app/19c
chmod -R 775 /u01/app/19c/
mkdir -p /u01/app/oracle
mkdir /u01/app/oracle/cfgtoollogs
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
mkdir -p /u01/app/oracle/product/19c/db_1
chown -R oracle:oinstall /u01/app/oracle/product/19c/db_1
chmod -R 775 /u01/app/oracle/product/19c/db_1
添加用户环境变量(rac1和rac2)
su - grid
vi ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm;
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19c/grid
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native
alias sqlplus='rlwrap sqlplus'
alias asmcmd='rlwrap asmcmd'
alias rman='rlwrap rman'
source ~/.bash_profile
su - grid
vi ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_TERM=xterm;
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19c/grid
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native
alias sqlplus='rlwrap sqlplus'
alias asmcmd='rlwrap asmcmd'
alias rman='rlwrap rman'
source ~/.bash_profile
su - oracle
vi ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=ora19c-rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/db_1
export ORACLE_SID=orcl1
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19c/db_1/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
source ~/.bash_profile
su - oracle
vi ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=ora19c-rac2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/db_1
export ORACLE_SID=orcl2
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19c/db_1/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
source ~/.bash_profile
配置ISCSI挂载外部存储(rac1和rac2)
yum install -y iscsi*
systemctl enable iscsid
iscsiadm -m discovery -t sendtargets -p 192.168.245.150
iscsiadm -m node -T iqn. -p 192.168.245.150 -l
iscsiadm -m node -T iqn. -p 192.168.245.150 --op update -n -v automatic
ls -l /dev/disk/by-path/*iscsi* | awk '{FS=" "; print $9 " " $10 " " $11}'
for i in $(ls /dev/sd*|grep -v [0-9]|grep -v sda)
do
echo -ne "$(fdisk -l ${i}|grep "^Disk\|磁盘" |grep ${i}|awk '{print $1,$2,$3,$4}') WWID:"
/lib/udev/scsi_id -g -u -d "${i}"
done|sort -nk3 -k5|column -t
vi /etc/udev//
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c455250474f6933472d534a41442d527a304a", SYMLINK+="asm_ocr_1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c45526b58366859492d383371482d58344c48", SYMLINK+="asm_ocr_2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c45526d4c587168642d33796f382d4a755077", SYMLINK+="asm_ocr_3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c455267356d6e674c2d38314f732d37744d53", SYMLINK+="asm_data", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c45527a47544a38752d563567462d61577641", SYMLINK+="asm_bak", OWNER="grid", GROUP="asmadmin", MODE="0660"
udevadm control --reload-rules
udevadm trigger
节点免密互信(rac1)
cd /usr/local/bin
rz
ln -s ./ sshUserSetup
chmod +x ./sshUserSetup
sshUserSetup -user grid -hosts "ora19c-rac1 ora19c-rac2" -advanced -noPromptPassphrase
sshUserSetup -user oracle -hosts "ora19c-rac1 ora19c-rac2" -advanced -noPromptPassphrase
su - grid -c "ssh ora19c-rac1 date"
su - grid -c "ssh ora19c-rac2 date"
su - oracle -c "ssh ora19c-rac1 date"
su - oracle -c "ssh ora19c-rac2 date"
关闭透明大页(rac1和rac2)
cp /etc/default/grub /etc/default/
vi /etc/default/grub
GRUB_CMDLINE_LINUX="=centos_ora19c-rac1/root =centos_ora19c-rac1/swap rhgb quiet transparent_hugepage=never"
GRUB_CMDLINE_LINUX="=centos_ora19c-rac2/root =centos_ora19c-rac2/swap rhgb quiet transparent_hugepage=never"
grub2-mkconfig -o /boot/grub2/
echo never > /sys/kernel/mm/transparent_hugepage/enabled
shutdown -r now
cat /sys/kernel/mm/transparent_hugepage/enabled
grep AnonHugePages /proc/meminfo
额外的安装包(rac1和rac2)
cd /root
rz
rpm -ivh cvuqdisk-1.0.
yum -y install perl-Data-Dumper-2.145-3.el7.x86_64
rpm -ivh rlwrap-0.37-1.el6.x86_64.rpm
yum install -y compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm kmod-20-21.el7.x86_64.rpm kmod-libs-20-21.el7.x86_64.rpm
关闭 ZEROCONF(rac1和rac2)
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
移除操作系统时间同步配置(rac1和rac2)
mv /etc/ /etc/
安装
安装grid(rac1)
su - grid
cd $ORACLE_HOME
rz
unzip LINUX.X64_193000_grid_home.zip
./ stage -pre crsinst -n ora19c-rac1,ora19c-rac2 -fixup -verbose
cp ${ORACLE_HOME}/install/response/ ${ORACLE_HOME}/install/response/
vi ${ORACLE_HOME}/install/response/
INVENTORY_LOCATION=/u01/app/oraInventory
=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
=asmdba
=asmoper
=asmadmin
=LOCAL_SCAN
=ora19c-rac-scan
=1521
=STANDALONE
=false
=ora19c-cluster
=false
=false
=ora19c-rac1:ora19c-rac1-vip,ora19c-rac2:ora19c-rac2-vip
=ens33:192.168.245.0:1,ens34:10.10.10.0:5
=false
=FLEX_ASM_STORAGE
=false
=Oracle19Aa123456
=crsdg
=NORMAL
=4
=/dev/asm_ocr_1,/dev/asm_ocr_2,/dev/asm_ocr_3
=/dev/asm_*
=Oracle19cAa123456
=false
=false
=NONE
=false
$ORACLE_HOME/ -silent -noconfig -ignorePrereqFailure -waitforcompletion -responseFile ${ORACLE_HOME}/install/response/
/u01/app/oraInventory/
/u01/app/19c/grid/
/u01/app/19c/grid/ -executeConfigTools -responseFile /u01/app/19c/grid/install/response/ -silent
crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ONLINE ONLINE ora19c-rac1 STABLE
ONLINE ONLINE ora19c-rac2 STABLE
ONLINE ONLINE ora19c-rac1 STABLE
ONLINE ONLINE ora19c-rac2 STABLE
ora.
ONLINE ONLINE ora19c-rac1 STABLE
ONLINE ONLINE ora19c-rac2 STABLE
ONLINE ONLINE ora19c-rac1 STABLE
ONLINE ONLINE ora19c-rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr()
1 ONLINE ONLINE ora19c-rac1 STABLE
2 ONLINE ONLINE ora19c-rac2 STABLE
3 OFFLINE OFFLINE STABLE
()
1 ONLINE ONLINE ora19c-rac1 STABLE
2 ONLINE ONLINE ora19c-rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE ora19c-rac1 STABLE
()
1 ONLINE ONLINE ora19c-rac1 Started,STABLE
2 ONLINE ONLINE ora19c-rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.()
1 ONLINE ONLINE ora19c-rac1 STABLE
2 ONLINE ONLINE ora19c-rac2 STABLE
3 OFFLINE OFFLINE STABLE
1 ONLINE ONLINE ora19c-rac1 STABLE
ora.
1 ONLINE ONLINE ora19c-rac1 STABLE
ora.
1 ONLINE ONLINE ora19c-rac2 STABLE
1 ONLINE ONLINE ora19c-rac1 STABLE
ora.
1 ONLINE ONLINE ora19c-rac1 STABLE
--------------------------------------------------------------------------------
注:
- =ora19c-cluster 这个配置的clusterName的值长度要小于等于15,否则后面执行/u01/app/19c/grid/脚本时会报错CLSRSC-119: Start of the exclusive mode cluster failed
- 安装前检查若有失败项,例如:/tmp/shm、DNS、NTP都是可以忽略的。
安装db(rac1)
su - oracle
cd $ORACLE_HOME
rz
unzip LINUX.X64_193000_db_home.zip
cp ${ORACLE_HOME}/install/response/db_install.rsp ${ORACLE_HOME}/install/response/db_install.
vi ${ORACLE_HOME}/install/response/db_install.rsp
=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19c/db_1
ORACLE_BASE=/u01/app/oracle
=EE
.OSDBA_GROUP=dba
.OSOPER_GROUP=oper
.OSBACKUPDBA_GROUP=backupdba
.OSDGDBA_GROUP=dgdba
.OSKMDBA_GROUP=kmdba
.OSRACDBA_GROUP=dba
=false
.CLUSTER_NODES=ora19c-rac1,ora19c-rac2
$ORACLE_HOME/runInstaller -silent -ignorePrereqFailure -waitForCompletion -responseFile ${ORACLE_HOME}/install/response/db_install.rsp
/u01/app/oracle/product/19c/db_1/
创建ASM磁盘组
su - grid
asmca -silent -createDiskGroup \
-sysAsmPassword Oracle19cAa123456 \
-asmsnmpPassword Oracle19cAa123456 \
-diskString '/dev/asm_*' \
-diskGroupName datadg \
-diskList /dev/asm_data \
-redundancy EXTERNAL \
-au_size 4 \
- 19.0.0.0.0
创建archdg
asmca -silent -createDiskGroup \
-sysAsmPassword Oracle19cAa123456 \
-asmsnmpPassword Oracle19cAa123456 \
-diskString '/dev/asm_*' \
-diskGroupName archdg \
-diskList /dev/asm_bak \
-redundancy EXTERNAL \
-au_size 4 \
- 19.0.0.0.0
dbca建库(rac1)
su - oracle
cp $ORACLE_HOME/assistants/dbca/ $ORACLE_HOME/assistants/dbca/
vi $ORACLE_HOME/assistants/dbca/
gdbName=orcl
sid=orcl
databaseConfigType=RAC
policyManaged=FALSE
nodelist=ora19c-rac1,ora19c-rac2
templateName=General_Purpose.dbc
sysPassword=Oracle19cAa123456
systemPassword=Oracle19cAa123456
recoveryAreaDestination=NONE
storageType=ASM
diskGroupName=+datadg
asmsnmpPassword=Oracle19cAa123456
characterSet=AL32UTF8
databaseType=MULTIPURPOSE
automaticMemoryManagement=FALSE
totalMemory=4096
nohup dbca -silent -createDatabase -ignorePreReqs -responseFile $ORACLE_HOME/assistants/dbca/ > /u01/app/oraInventory/logs/ 2>&1 &
tail -f /u01/app/oraInventory/logs/
参考文章
Rhel7.3 搭建 Oracle12.2.01 RAC
【安装篇】- 基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案
使用 VMware 16 RHEL7.7 虚拟机静默安装 Oracle 19c RAC