前置条件
- 至少2台host
- 每台host配置2块网卡,1公有1私有,2块网卡分别配置固定ip
- 每台host至少3个共享盘
- 每块共享盘至少60G
- 安排至少3个virtual ip在公有网段中
- host需提供vnx界面或者x11 forward功能
- 需要一台网络与oracle rac host相通的Windows跳板机,并安装xming
适用范围
- Oracle RAC 11g, 12c, 18c, 19c
- Linux
具体步骤及命令
2台节点均操作:新建用户
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/groupadd -g 507 asmoper
/usr/sbin/useradd -u 5001 -g oinstall -G dba,asmadmin,asmdba,asmoper grid
/usr/sbin/useradd -u 5002 -g oinstall -G dba,asmdba oracle
2台节点均操作: 设定用户密码
passwd grid
passwd oracle
2台节点均操作: 配置域名解析为本地优先
[root@testhost228192 ~]# cat /etc/nsswitch.conf | grep hosts
#hosts: db files nisplus nis dns
hosts: files dns
2台节点均操作: 配置域名解析
echo 10.108.228.190 testhost228190 >> /etc/hosts
echo 10.108.228.158 testhost228158 >> /etc/hosts
echo 10.108.228.140 SCAN140 >> /etc/hosts
echo 10.108.228.141 testhost228190-vip >> /etc/hosts
echo 10.108.228.142 testhost228158-vip >> /etc/hosts
echo 10.11.12.190 testhost228190-priv >> /etc/hosts
echo 10.11.12.158 testhost228158-priv >> /etc/hosts
cat /etc/hosts
2台节点均操作: 配置系统参数
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo “#Oracle Parameter” >> /etc/sysctl.conf
echo kernel.shmmni = 4096 >> /etc/sysctl.conf
echo kernel.sem = 250 32000 100 128 >> /etc/sysctl.conf
echo fs.file-max = 6815744 >> /etc/sysctl.conf
echo fs.aio-max-nr = 1048576 >> /etc/sysctl.conf
echo net.ipv4.ip_local_port_range = 9000 65500 >> /etc/sysctl.conf
echo net.core.rmem_default = 262144 >> /etc/sysctl.conf
echo net.core.rmem_max = 4194304 >> /etc/sysctl.conf
echo net.core.wmem_default = 262144 >> /etc/sysctl.conf
echo net.core.wmem_max = 1048576 >> /etc/sysctl.conf
echo “kernel.shmmax = 33657890820” >> /etc/sysctl.conf
echo “kernel.shmall = 6595019” >> /etc/sysctl.conf
echo “kernel.panic_on_oops = 1” >> /etc/sysctl.conf
cat /etc/sysctl.conf
sysctl -p
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo “#Oracle Parameter” >> /etc/security/limits.conf
echo grid soft nproc 2047 >> /etc/security/limits.conf
echo grid hard nproc 16384 >> /etc/security/limits.conf
echo grid soft nofile 1024 >> /etc/security/limits.conf
echo grid hard nofile 65536 >> /etc/security/limits.conf
echo oracle soft nproc 2047 >> /etc/security/limits.conf
echo oracle hard nproc 16384 >> /etc/security/limits.conf
echo oracle soft nofile 1024 >> /etc/security/limits.conf
echo oracle hard nofile 65536 >> /etc/security/limits.conf
cat /etc/security/limits.conf
cp /etc/pam.d/login /etc/pam.d/login.bak
echo “#Oracle parameter” >> /etc/pam.d/login
echo session required pam_limits.so >> /etc/pam.d/login
cat /etc/pam.d/login
cp /etc/profile /etc/profile.bak
echo “#Oracle Parameter” >> /etc/profile
echo “if [ $USER = “oracle” ] || [ $USER = “grid” ]; then” >> /etc/profile
echo “if [ $SHELL = “/bin/ksh” ]; then” >> /etc/profile
echo “ulimit -p 16384” >> /etc/profile
echo “ulimit -n 65536” >> /etc/profile
echo “else” >> /etc/profile
echo “ulimit -u 16384 -n 65536” >> /etc/profile
echo “fi” >> /etc/profile
echo “umask 022” >> /etc/profile
echo “fi” >> /etc/profile
cat /etc/profile
cp /etc/csh.login /etc/csh.login.bak
echo “#Oracle Parameter” >> /etc/csh.login
echo “if ( $USER = “oracle” || $USER = “grid” ) then” >> /etc/csh.login
echo “limit maxproc 16384” >> /etc/csh.login
echo “limit descriptors 65536” >> /etc/csh.login
echo “endif” >> /etc/csh.login
cat /etc/csh.login
2台节点均操作: 创建Oracle所需目录
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid
mkdir -p /u01/app/grid_home
chown -R grid:oinstall /u01/app/grid_home
chmod -R 775 /u01/app/grid_home
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
mkdir -p /home/grid
mkdir -p /home/oracle
chown -R grid:oinstall /home/grid
chown -R oracle:oinstall /home/oracle
2台节点均操作: 配置Yum源
【请自行解决】
2台节点均操作: 关闭防火墙FIREWALL
service ipchains status
service iptables status
service ipchains stop
service iptables stop
chkconfig ipchains off
chkconfig iptables off
echo 0 >/selinux/enforce
sed -i -e “s/(SELINUX=)enforcing/\1disabled/” /etc/selinux/config
cat /selinux/enforce should be 0
或者
systemctl stop firewalld.service
systemctl disable firewalld.service
节点1操作: 配置ssh免密登录
su - grid
mkdir ~/.ssh
ssh-keygen -t rsa (just press enter)
ssh-keygen -t dsa (just press enter)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh [节点2] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh [节点2] cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys [节点2] :~/.ssh/authorized_keys
2台节点均操作: 验证ssh免密登录
在节点1执行
ssh [节点2] date
在节点2执行
ssh [节点1] date
节点1操作: 解压缩Oracle Grid安装包至/u01/app/grid_home
unzip xxxx
节点1操作: 执行节点预检查
./runcluvfy.sh stage -pre crsinst -n “testhost228158,testhost228190” -verbose
根据检查结果安装软件包
如,安装oracle所需的软件包
rm -f pkgverify.txt
rpm -q --qf ‘%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n’ binutils
compat-libstdc+±33
elfutils-libelf
elfutils-libelf-devel
gcc
gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
ksh
libaio
libaio-devel
libgcc
libstdc++
libstdc+±devel
make
sysstat
unixODBC
unixODBC-devel | grep not | awk ‘{print $2}’ >> pkgverify.txt
for i in cat pkgverify.txt
do
yum -y install $i
done
若为SLES, use GUI YAST to install missed package.
libcap1-1.10
libcap1-1.10-devel
nfs-kernel-server-1.2.1-2.24.1
gcc(x86_64)-4.3
gcc-c++(x86_64)-4.3
glibc-devel-2.9
libaio-devel-0.3.104
libstdc+±devel(x86_64)-4.3
libstdc++43-devel-4.3.3_20081022
sysstat-8.1.5
2台节点均操作: 配置grid用户环境变量
su - grid
vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=KaTeX parse error: Expected 'EOF', got '#' at position 20: … export TMPDIR #̲node1 :ORACLE_S…ORACLE_HOME/bin:
P
A
T
H
;
e
x
p
o
r
t
P
A
T
H
T
H
R
E
A
D
S
F
L
A
G
=
n
a
t
i
v
e
;
e
x
p
o
r
t
T
H
R
E
A
D
S
F
L
A
G
P
A
T
H
=
PATH; export PATH THREADS_FLAG=native; export THREADS_FLAG PATH=
PATH;exportPATHTHREADSFLAG=native;exportTHREADSFLAGPATH=ORACLE_HOME/bin:$PATH; export PATH
umask 022
export DISPLAY=10.108.228.179:0.0
2台节点均操作: 配置oracle用户环境变量
su - oracle
vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=KaTeX parse error: Expected 'EOF', got '#' at position 129: …rt ORACLE_HOME #̲node1:ORACLE_SI…PATH; export PATH
PATH=
O
R
A
C
L
E
H
O
M
E
/
b
i
n
:
ORACLE_HOME/bin:
ORACLEHOME/bin:PATH; export PATH
LD_LIBRARY_PATH=
O
R
A
C
L
E
H
O
M
E
/
l
i
b
:
/
l
i
b
:
/
u
s
r
/
l
i
b
;
e
x
p
o
r
t
L
D
L
I
B
R
A
R
Y
P
A
T
H
C
L
A
S
S
P
A
T
H
=
ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=
ORACLEHOME/lib:/lib:/usr/lib;exportLDLIBRARYPATHCLASSPATH=ORACLE_HOME/JRE:
O
R
A
C
L
E
H
O
M
E
/
j
l
i
b
:
ORACLE_HOME/jlib:
ORACLEHOME/jlib:ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_DATE_FORMAT=“yyyy-mm-dd HH24:MI:SS”; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
umask 022
export DISPLAY=10.108.228.179:0.0
2台节点均操作: 配置共享盘权限规则,保证重启不变
cd /etc/udev/rules.d/
vi 99-chown.rules
KERNEL==“sd*”, OWNER=“grid”, GROUP=“oinstall”, MODE=“666”
KERNEL==“dm*”, OWNER=“grid”, GROUP=“oinstall”, MODE=“666”
KERNEL==“emcp*”, OWNER=“grid”, GROUP=“oinstall”, MODE=“666”
udevadm control --reload-rules
start_udev
或者
udevadm trigger
安装Oracle Grid
su - grid
/u01/app/gridSetup.sh
安装Oracle Database
su - oracle
解压缩oracle安装包
运行安装脚本即可