主机名 | oracle01 | oracle02 |
操作系统 | Centos 7.4 | Centos 7.4 |
Public IP |
192.168.56.10 |
192.168.56.20 |
Virtual IP |
192.168.56.11 |
192.168.56.21 |
Private IP |
10.10.1.10 | 10.10.1.20 |
Scan IP |
192.168.56.6 |
Public IP:服务器物理网卡IP,即对外提供服务的IP
Priviate IP:服务器内网、私网IP,主要用于数据库间同步及心跳
Virtual IP:虚拟IP,与Public IP处于同一个网段
Scan IP:11g后创建集群新增的功能,集群对外服务提供的VIP
注意:主机名不要含大写并且不超过15个字符,否则后续安装会有问题
两台主机间需要挂载的磁盘是共享磁盘!!!(用于做ASM磁盘)
安装过程中注意hostname主机名变化,也会导致执行部分脚本失败情况
通过百度网盘下载
链接:https://pan.baidu.com/s/11l7PVodRKa5HVK7mqmMYVQ
提取码:0szl
版本:Oracle 11.2.0.4.0
下载以下几个部署包:
1和2是数据库软件;
3是rac软件;
4是client客户端;
5是gateways;
6是example示例;
7是删除介质;
packages.tar.gz是oracle所需要的依赖包;
一般只需要下载1,2,3个包即可,其他按需下载。
编辑/etc/hosts文件,两台主机保持一致:
192.168.56.10 oracle01
192.168.56.20 oracle02
192.168.56.11 oracle01-vip
192.168.56.21 oracle02-vip
10.10.1.10 oracle01-priv
10.10.1.20 oracle02-priv
192.168.56.6 cluster-scan
wq保存后。
修改Oracle01主机名:hostname oracle01
修改Oracle02主机名:hostname oracle02
测试是否修改成功:
在192.168.56.10主机上执行ping:
ping oracle01和ping oracle02查看是否成功,成功即说明host文件修改成功。
编辑/etc/selinux/config配置文件:
再使用命令:setenforce 0,临时关闭而无需重启
使用命令getenforce查看当前selinux状态
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
编辑/etc/sysctl.conf配置文件:
net.ipv4.ip_local_port_range= 9000 65500
fs.file-max = 6553600
# 按需修改,为shmmax/shmmin
kernel.shmall = 10523004
# 按需修改,为内存(单位byte)-1
kernel.shmmax = 6465333657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=1048576
fs.aio-max-nr = 1048576
wq退出保存后使用命令 sysctl -p 使其生效
采用GI与DB分开安装和权限的策略:
# 创建组
groupadd -g 1000 oinstall
groupadd -g 1300 asmadmin
groupadd -g 1200 asmdba
groupadd -g 1400 asmoper
groupadd -g 1100 dba
groupadd -g 1500 oper
# 添加用户grid和oracle
useradd -d /opt/grid -u 1011 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
Useradd -d /opt/oracle -u 1010 -g oinstall -G dba,asmdba,oper oracle
# 创建目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
# 授权
chmod -R 755 /u01
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
# 修改用户密码为Pass123456
echo "Pass123456" | passwd --stdin grid
echo "Pass123456" | passwd --stdin oracle
编辑/etc/security/limits.conf文件:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
wq保存修改。
编辑/etc/pam.d/login新增以下内容:
session required pam_limits.so
编辑/etc/profile文件添加以下内容:
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
wq保存并source /etc/profile使其生效
修改grid用户环境变量,编辑/home/grid/.bash_profile文件:
su - grid,切换用户,编辑~/.bash_profile文件
export LANG=en,zh_CN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02
# export ORACLE_HOSTNAME=oracle01
# 如果是oracle01,则此项值为+ASM1,是oracle02,则此项值为+ASM2
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LC_ALL=C
umask 022
wq保存并source ~/.bash_profile使其生效
修改oracle用户环境变量,编辑/home/oracle/.bash_profile文件:
su - oracle,切换用户,编辑~/.bash_profile文件
export LANG=en,zh_CN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02
# export ORACLE_HOSTNAME=oracle01
# 实例名,如果是Oracle01,则此项值为orcl1,是Oracle02,则此项值为orcl2
export ORACLE_SID=orcl1
# 数据库名两边保持一致
export ORACLE_UNQNAME=oracledbrac
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
umask 022
wq保存并source ~/.bash_profile使其生效
使用命令:
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 \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
net-tools
回车执行。
如果没有安装会出现“not installed”提示,使用“yum -y install 缺失包名”进行安装
其中compat-libstdc++-33可以通过以下链接下载rpm并安装
http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
或者使用百度云盘中的package.tar.gz文件,上传并tar解压后:
执行install.sh脚本安装缺失的依赖。
提供两种方法:
第一种:利用Oracle官方提供的P13390677_112040_Linux-x86-64_3of7.zip文件解压
执行sshUserSetup.sh脚本:
./sshUserSetup.sh -user grid -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced
./sshUserSetup.sh -user oracle -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced
此方法只需在任一节点上执行即可
后续操作将要求你输入多次grid或者oracle的密码。
第二种(推荐):
所有节点执行以下操作
su - oracle,切换到oracle用户
rm -rf ~/.ssh
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
su - grid,切换到grid用户
rm -rf ~/.ssh
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
直接回车,无密码模式
选择Oracle01节点执行:
su - oracle
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
su - grid
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
选择Oracle02节点执行:
su - oracle
chmod 600 ~/.ssh/authorized_keys
su - grid
chmod 600 ~/.ssh/authorized_keys
验证:
以下操作两个节点都进行操作
su - oracle
ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date
su - grid
ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date
查看是否能成功输出4次时间日期,执行两次,第一次可能会让输入密码,如果第二次不需要输入密码则成功。
注意:磁盘必须为共享磁盘
使用命令lsblk查看挂载硬盘:
其中sdb为两台主机间的共享磁盘
使用fdisk命令进行分区操作,如果硬盘大于2T请使用gdisk进行分区操作:
创建/etc/udev/rules.d/60-raw.rules文件,添加以下内容(注意具体的分区名称):
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw[1-5]*", OWNER="grid" GROUP="asmadmin", MODE="660"
wq保存后使用以下命令创建(linux7适用):
udevadm trigger --type=devices --action=change
使用命令 partprobe 将变化写入内核
执行安装前检查:
在oracle01和上oracle02解压P13390677_112040_Linux-x86-64_3of7.zip文件
以root用户安装软件rpm -ivh cvuqdisk-1.0.9-1.rpm
如果安装cvuqdisk服务提示ls: cannot access /usr/sbin/smartctl: No such file or directory:
解决方法:安装yum install -y smartmontools服务即可然后再重新安装cvuqdisk的rpm包。
切换用户:su - grid
执行脚本:./runcluvfy.sh stage -pre crsinst -n oracle01,oracle02 -verbose -fixup
如果出现以下unsuccessful则环境检查失败
否则按要求以root用户执行修复脚本:
在oracle01上面进行下列步骤:
界面化安装(推荐):
前期准备:
Centos7已经不通过initd管理进程了,而是通过systemd进行管理:
创建服务文件:touch /usr/lib/systemd/system/ohas.service
授权:chmod 777 /usr/lib/systemd/system/ohas.service
添加以下内容:
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
wq保存并启动服务:
systemctl daemon-reload
systemctl enable ohas.service
systemctl start ohas.service
systemctl status ohas.service
ohas服务启动成功前提是(/etc/init.d目录下有生产init.ohasd服务文件)。
在下列安装的第16步执行root.sh脚本的时候:
可通过(watch -n1 -d ls -l "ls -l /etc/init.d/"命令检测是否有文件产生,如果有立即执行"systemctl enable ohas.service && systemctl start ohas.service && systemctl status ohas.service"命令)
xmanager准备:
linux安装”yum install -y xterm xorg-x11-xauth xorg-x11-server-utils”
并且”export DISPLAY=192.168.56.1:0.0”,其中192.168.56.1是我电脑的IP
0.0为右下角xmanager服务监听的,如图所示:
xmanager新建xstart会话:
<1>选择跳过软件升级
<2>选择集群安装和环境配置
<3>选择高级安装
<4>选择语言,默认选择英语
<5>集群配置
<6>添加节点
<7>识别网卡
<8>存储选择,选择ASM
<9>创建一个asm Disk Group Name 组
磁盘组对应级别:
High-5
Normal-3
External-1
出现以下问题主要是因为选错级别,比如只有一块磁盘你级别却选择了High的了
<10>给ASM磁盘组设置密码
<11>选择不使用IPMI
<12>指定不同的ASM组,选择默认设置
<13>安装设置
<14>检查依赖
如果是以下提示,勾选右上角忽略所有,否则安装缺失依赖包
<15>保存响应文件并开始安装
<16>以root执行下列两个脚本(两个节点都执行)
(需要注意root.sh需要先在oracle01执行完毕后才能在oracle02节点执行)
执行root.sh结果
两个脚本在两台主机上都成功安装后返回刚刚页面点击ok。
至此完成grid的安装。
如果安装过程中报错”libcap.so.1: cannot open shared object file: No such file or directory:
解决方法:首先进入lib64目录:cd /lib64
执行以下命令即可:ln -s libcap.so.2.22 libcap.so.1
安装成功验证:
su - grid,切换用户
命令:
检查本地CRS状态:crsctl check crs
确保以下四个状态都是online
查看集群CRS状态:crsctl check cluster
查看本地clusterware资源:crs_stat -t -v
查看asm服务:srvctl status asm -a
查看crsd服务:crsctl stat res -t -init
检查集群节点:olsnodes -n -i -s -t
查看集群SCAN VIP信息:srvctl config scan
查看监听服务是否启动:ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'
ASM磁盘说明:
投票盘(表决盘vote):
集群同步服务会间隔实际向投票盘写入心跳信息,集群通过投票盘验证节点状态,如果集群中某个节点在指定最大时间内未向投票盘写入信息,集群则认为此节点失效进行故障切换。
数据盘(DATA):
用于存储数据库文件。
备份盘(BAK):
用于存储数据库开启归档后的文件。
切换用户:su - grid
启动界面:asmca
创建DATA盘
选择磁盘
成功创建
在oracle01主机上解压以下文件:
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
切换到oracle用户:su - oracle
启动安装程序:./runInstaller
如果运行runInstaller错误libXext.so.6: cannot open shared object file: No such file or directory:
解决方法:使用命令”yum install libXext”安装缺失文件后重新安装。
如果在安装oracle过程中出现错误”Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk'”:
解决方法:编辑/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk文件:
将$(MK_EMAGENT_NMECTL)替换成$(MK_EMAGENT_NMECTL) -lnnz11
然后点击重试retry。
界面化安装:
<1>跳过软件更新
<2>选择”仅安装数据库服务”
<3>选择集群安装数据库
<4>选择语言
<5>选择安装模式,EE
<6>选择安装路径
<7>用户及用户组权限,保持默认
<8>安装前检测
<9>安装,并以root用户执行相应脚本
脚本执行结果如下:
<10>完成安装
切换用户:su - oracle
启动界面:dbca
<1>创建RAC数据库
<2>选择数据库模式:定制数据库
<3>填写定制信息
其中:dbname是oracle环境变量中UNQNAME的值
Prefix是oracle环境变量中SID的前缀(即oracle01和oracle02的SID中一样的值即“orcl”)
<4>保持默认设置
<5>设置密码
<6>选择ASM磁盘存储数据
注意:ASM磁盘空间需要足够大才能成功安装
<7>指定快速恢复磁盘,并开启归档
<8>数据库组件,默认
<9>设置参数
内存设置:
最大进程数和数据块大小,保持默认:
语言设置:
<10>数据库存储说明,保持默认
<11>创建数据库
概要信息预览:
组件安装:
安装后验证:
查看数据库运行:srvctl status database -d oracledbrac