免费代理ip的网站,手机软件开发教程视频,安全联盟可信任网站认证 网站,网站建设的税率Oracle RAC (全称Oracle Real Application Clusters #xff09;静默安装#xff08;非图形安装#xff09;教程。
由于这篇文章花费了我太多时间#xff0c;设置了仅粉丝可见#xff0c;见谅。
环境说明#xff1a;
虚拟机软件#xff1a;VMware Workstation 16 Pro…Oracle RAC (全称Oracle Real Application Clusters 静默安装非图形安装教程。
由于这篇文章花费了我太多时间设置了仅粉丝可见见谅。
环境说明
虚拟机软件VMware Workstation 16 Pro 虚拟机操作系统Centos7 64位 数据库版本Oracle 11gR211.2.0.4.0 数据库软件Oracle Database software: Oracle11gR211.2.0.4.0 集群软件Cluster software: Oracle grid infrastructure 11gR211.2.0.4.0 共享存储ASM
# oracle安装包
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
# grid安装包
p13390677_112040_Linux-x86-64_3of7.zip
# 补丁包18370031
p18370031_112040_Linux-x86-64.zip
官方文档Oracle Database 在线文档 11g
主机规划
主机名public ipprivate ipvirtual ip (VIP)scan ip用户名密码rac1192.168.111.201192.168.63.201192.168.111.211192.168.111.222grid oraclegrid oraclerac2192.168.111.202192.168.63.202192.168.111.212
共享磁盘规划
路径大小用途/dev/sdb2Gvote(投票)/dev/sdc2Gvote(投票)/dev/sdd2Gvote(投票)/dev/sde10Garch(归档)/dev/sdf20Gdata(数据)
最终效果 共7个IP地址2块网卡其中public、vip和scan都在同一个网段private在另一个网段。 主机名不要包含下横线如RAC_01是不允许的
准备5块共享存储盘测试其实可以只挂载一个盘分5个区效果一样但是生产不建议这样做放在一块磁盘上io压力太大
注意 为了方便知道每条命令使用什么用户执行在哪个节点上执行我保留了命令如下头部信息。 如果文中没有注明使用什么用户执行请注意命令前面的部分。
[gridrac1 ~]$ ls
[gridrac2 ~]$ ls
[oraclerac1 ~]$ ls
[oraclerac2 ~]$ ls
[rootrac1 ~]# ls
[rootrac2 ~]# ls 一、准备两台服务器
服务器安装参考VMware16安装Centos7
创建完整克隆准备两台服务器。虚拟机名称分别命名为 rac1、rac2
需要保证两台服务器时间一致。
二、准备两张网卡
准备两张网卡一个网卡为NAT模式一个网卡为仅主机模式。
公有网卡(NAT模式)分配 public ip 、virtual ip (VIP)、scan ip。 私有网卡(仅主机模式)分配 private ip。
VMware创建网卡过程编辑(E) 》 虚拟网络编辑器(N)... 》更改设置(C) 》添加网络(E)... 我这里已经有两张网卡就不添加了VMnet1网卡为“仅主机模式”VMnet8网卡为“NAT模式”。
这里需要记住我2个网卡的子网地址分别为192.168.63.0、192.168.111.0后面设置静态ip必须在这两个ip段中。
两台虚拟服务器需要在关机模式下把另外一张网卡添加上。
添加块网卡方法如下所示
第1台主机 rac1 添加网卡选中第一台虚拟机rac1 》右键 》 设置(S)... 》硬件 》添加(A)... 》网络适配器 》 自定义选择VMnet1网卡这里VMnet1要根据自己实际情况来我上面截图中两张网卡就是VMnet1和VMnet8。 三、准备5块共享磁盘
准备5块共享存储盘其实可以只挂载一个盘分5个区效果一样但是生产不建议这样做放在一块磁盘上io压力太大
添加创建好的五块虚拟硬盘要求是独立永久属性。各盘存储情况如下
3个2G的投票盘一个10G的备份盘一个20G的数据盘。 分别命名为 ocr1、ocr2、ocr3、backup、data
第一步创建共享磁盘
该步骤可以用cmd命令也可以用图形界面本文采用用图形界面行进行添加。
第1台主机 rac1 创建磁盘
创建磁盘选中第一台虚拟机rac1 》右键 》 设置(S)... 》硬件 》添加(A)... 》选中硬盘 》 磁盘类型默认 创建新的虚拟磁盘 指定磁盘容量勾选立即分配所有磁盘空间并存储为单个文件。 指定磁盘文件存放位置分别命令为 ocr1、ocr2、ocr3、backup、data 硬盘高级设置 选择创建的磁盘并打开高级设置勾选“独立”模式和“永久”属性。 Vmware 虚拟机无法设置磁盘模式 “独立模式”显示为为灰色 原因虚拟机系统拍摄了快照。 解决办法删除快照即可。
分别创建其他磁盘分别命令为 ocr1、ocr2、ocr3、backup、data磁盘文件如下图所示
这里创建了3个2G的投票盘一个10G的备份盘一个20G的数据盘。 共享磁盘物理文件保存位置后面第2台主机添加磁盘需要用到。 第二步添加共享磁盘
在第一步在第1台主机 rac1 上已经创建了5个共享磁盘这一步不再需要创建磁盘只需要将5个磁盘添加上即可。
添加磁盘选中第二台虚拟机rac2 》右键 》 设置(S)... 》硬件 》添加(A)... 》选中硬盘 》 选择 “使用现有 虚拟磁盘(E)” 选择前面创建好的磁盘 选中刚新增的硬盘高级设置为独立、永久模式。 同理添加其他4个硬盘。
此时两台虚拟机都添加了同一块磁盘但启动时会报错因为会造成磁盘的征用。
那么更改虚拟机配置文件找到两台虚拟机下的.vmx文件分别添加以下内容。
参数1disk.lockingFALSE。参数说明虚拟机系统在启动的时候会锁定磁盘当启动虚机1后共享磁盘被锁定了虚机2就起不来了。 参数2scsi[n].sharedBus virtual 。参数说明以上的设置表示所有的BUS都共享vmare推荐这种做法。
关机情况下设置scsi0.sharedBus 这里的0根据自己的实际情况来可以搜索下自己rac1.vmx配置文件下 scsi 后面的数字是多少。
rac1.vmx
scsi0.sharedBus virtual
disk.locking false
diskLib.dataCacheMaxSize 0
diskLib.dataCacheMaxReadAheadSize 0
diskLib.DataCacheMinReadAheadSize 0
diskLib.dataCachePageSize 4096
diskLib.maxUnsyncedWrites 0
rac2.vmx
scsi0.sharedBus virtual
disk.locking false
diskLib.dataCacheMaxSize 0
diskLib.dataCacheMaxReadAheadSize 0
diskLib.DataCacheMinReadAheadSize 0
diskLib.dataCachePageSize 4096
diskLib.maxUnsyncedWrites 0
四、配置网卡和主机名
1、关闭防火墙和SELinux
两个节点都要关闭。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭SELinux
vi /etc/selinux/config
# 也就是修改文件 /etc/selinux/config 设置SELINUXdisabled
SELINUXdisabled
2、修改主机名
主机名分别为 rac1、rac2
# 节点1
hostnamectl set-hostname rac1# 节点2
hostnamectl set-hostname rac2
3、配置网卡
显示所有网卡我这里有两张网卡 ens32、ens33
[rootrac1 ~]# nmcli con show
NAME UUID TYPE DEVICE
ens32 661c00dc-8371-4f29-87cc-1eea3ad2a607 ethernet ens32
有线连接 1 8f918403-5122-35c2-9081-2e56884b784f ethernet ens33 修改网卡网卡ens32为NAT模式作为public ip网卡ens33为仅主机模式作为private ip。
第1台主机 rac1 配置如下
# 配置公网ip
vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPEEthernet
BOOTPROTOstatic
NAMEens32
DEVICEens32
ONBOOTyesIPADDR192.168.111.201
NETMASK255.255.255.0
GATEWAY192.168.111.2
DNS18.8.8.8
DNS2114.114.114.114
# 配置私网ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
仅主机模式这张网卡不要配置网关否则不能正常联网。
TYPEEthernet
BOOTPROTOstatic
NAMEens33
DEVICEens33
ONBOOTyesIPADDR192.168.63.201
NETMASK255.255.255.0
NETWORK192.168.63.0
重启网卡使其生效
service network restart第2台主机 rac2 配置如下
# 配置公网ip
vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPEEthernet
BOOTPROTOstatic
NAMEens32
DEVICEens32
ONBOOTyesIPADDR192.168.111.202
NETMASK255.255.255.0
GATEWAY192.168.111.2
DNS18.8.8.8
DNS2114.114.114.114
# 配置私网ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
仅主机模式这张网卡不要配置网关否则不能正常联网。
TYPEEthernet
BOOTPROTOstatic
NAMEens33
DEVICEens33
ONBOOTyesIPADDR192.168.63.202
NETMASK255.255.255.0
NETWORK192.168.63.0
重启网卡使其生效
service network restart4、设置host
2个节点均配置相同如下
# 在结尾处新增如下7个
vi /etc/hosts
#Public IP
192.168.111.201 rac1
192.168.111.202 rac2#Private IP
192.168.63.201 rac1-priv
192.168.63.202 rac2-priv#Virtual IP
192.168.111.211 rac1-vip
192.168.111.212 rac2-vip#Scan IP
192.168.111.222 rac-scan
在两个节点上通过ping验证两个节点是否可通 另外3个没有配置在网卡中ping会错误。
ping rac1
ping rac2
ping rac1-priv
ping rac2-priv五、创建用户和组
Oracle建议以不同的用户分别安装Grid Infrastructure软件、Oracle数据库软件。 一般以grid用户安装Grid Infrastructureoracle用户安装Oracle数据库软件。 grid、oracle用户需要属于不同的用户组。 在配置RAC时还要求这两个用户在RAC的不同节点上uid、gid要一致。
创建5个组 OSDBA组dbaoinstall。 Oracle Inventory组asmdbaasmoperasmadmin作为ASM磁盘管理组。
上述创建的所有用户和组在每台机器上的名称和对应ID号口令以及属组关系和顺序必须保持一致。grid和oracle密码不过期。
创建组
groupadd -g 1000 oinstall
groupadd -g 1001 dba
groupadd -g 1002 oper
groupadd -g 1003 asmadmin
groupadd -g 1004 asmdba
groupadd -g 1005 asmoper
创建grid和oracle用户
#官方文档2.5.7 创建角色分配的组、用户和路径的示例
useradd -u 1100 -g oinstall -G dba,asmdba,asmoper,asmadmin grid#官方文档 2.5.5.2.8 创建 Oracle 软件所有者用户
useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
如果用户已经存在修改组命令
usermod -g oinstall -G dba,asmdba,asmoper,asmadmin grid
usermod -g oinstall -G dba,asmdba,oper oracle查看
id oracle
id grid
创建目录结构
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
为oracle和grid用户设密码
echo oracle | passwd --stdin oracle #为oracle用户设置密码为oracle
echo grid | passwd --stdin grid #为grid用户设置密码grid
设置oracle和grid用户密码永不过期
chage -M -1 oracle
chage -M -1 grid
chage -l oracle
chage -l grid 六、设置系统参数
以下操作两个节点都要操作。
1、在配置文件 /etc/sysctl.conf 末尾添加以下内容
kernel.msgmnb 65536
kernel.msgmax 65536
kernel.shmmax 68719476736
kernel.shmall 4294967296
kernel.shmmni 4096
kernel.sem 250 32000 100 128
fs.aio-max-nr 1048576
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 1048586
net.ipv4.tcp_wmem 262144 262144 262144
net.ipv4.tcp_rmem 4194304 4194304 4194304
执行以下命令生效
sysctl -p
2、配置shell限制 修改 /etc/security/limits.conf 配置文件末尾添加以下内容
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
3、配置login 在 /etc/pam.d/login 文件末尾添加以下内容
session required pam_limits.so
4、禁用 NTP 服务没有 NTP 服务那就不用管。
systemctl stop ntpd
5、配置grid和oracle用户的环境变量文件
grid用户
## 节点1如下配置
su - grid
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDASM1 # RAC1
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
umask 022## 节点2如下配置
su - grid
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDASM2 # RAC2
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
umask 022
执行 source .bash_profile 命令使配置生效。
Oracle用户
## 节点1如下配置
su - oracle
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDorcl1 # RAC1
export ORACLE_UNQNAMEoradb
export ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/11.2.0/db_1
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## 节点2如下配置
su - oracle
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDorcl2 # RAC2
export ORACLE_UNQNAMEoradb
export ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/11.2.0/db_1
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
执行 source .bash_profile 命令使配置生效。 七、ssh互信
配置 oracle 用户和 grid 用户 ssh 互信。
这是很关键的一步这里采用手动配置互信还可以使用官方脚本设置。
切换至oracle用户在两个主机上生成密钥文件需逐行执行生成过程中全部回车
# 节点1执行
# 执行后一直回车
[oraclerac1 ~]$ ssh-keygen -t rsa# 节点2执行
# 执行后一直回车
[oraclerac2 ~]$ ssh-keygen -t rsa在rac1主机执行以下命令需逐行执行需要输入密码。
#下面的目的是将公钥放到对方信任名单中
[oraclerac1 ~]$ cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys# 将rac2节点的key追加到当前节点的authorized_keys文件中
# 提示yes/no输入yes提示输入oracle密码输入oracle
[oraclerac1 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys[oraclerac1 ~]$ chmod 600 ~/.ssh/authorized_keys在rac2主机执行
# 将节点1的 authorized_keys 复制到当前节点
[oraclerac2 ~]$ ssh rac1 cat ~/.ssh/authorized_keys ~/.ssh/authorized_keys
[oraclerac2 ~]$ chmod 600 ~/.ssh/authorized_keys测试一下相互之间是否在oracle用户下已经免密登录了 提示 (yes/no)? 输入yes
ssh rac1
ssh rac2
ssh rac2
ssh rac1
ssh rac1-priv
ssh rac2-priv
切换至grid用户同上
# 节点1执行
# 执行后一直回车
[gridrac1 ~]$ ssh-keygen -t rsa# 节点2执行
# 执行后一直回车
[gridrac2 ~]$ ssh-keygen -t rsa
在rac1主机执行以下命令需逐行执行需要输入密码。
#下面的目的是将公钥放到对方信任名单中
[gridrac1 ~]$ cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys# 将rac2节点的key追加到当前节点的authorized_keys文件中
# 提示yes/no输入yes提示输入grid密码输入grid
[gridrac1 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys[gridrac1 ~]$ chmod 600 ~/.ssh/authorized_keys 在rac2主机执行
# 将节点1的 authorized_keys 复制到当前节点
[gridrac2 ~]$ ssh rac1 cat ~/.ssh/authorized_keys ~/.ssh/authorized_keys
[gridrac2 ~]$ chmod 600 ~/.ssh/authorized_keys
测试一下相互之间是否在grid用户下已经免密登录了 提示 (yes/no)? 输入yes
ssh rac1
ssh rac2
ssh rac2
ssh rac1
ssh rac1-priv
ssh rac2-priv
说明关于互信设置还有另外一种方式直接使用软件包解压后提供的ssh互信设置脚本(sshUserSetup.sh)来完成如果觉得前面设置方法麻烦的话也可尝试用脚本设置 Oacle安装包解压后脚本位于database/sshsetup/sshUserSetup.sh
./sshUserSetup.sh -user grid -hosts rac1 rac2 -advanced exverify –confirm./sshUserSetup.sh -user oracle -hosts rac1 rac2 -advanced exverify -confirm
由于我前面已经手动设置过互信所以直接跳过下面步骤。 八、安装依赖
我系统版本是Linux7
执行以下命令安装依赖包。
yum install -y binutils compat-libcap1 compat-libstdc-33 elfutils-libelf-devel smartmontools gcc gcc-c glibc glibc-devel ksh libaio libaio-devel libgcc libstdc libstdc-devel libXi libXtst make sysstat kmod-oracleasm unzip
用 grid 用户登录上传 p13390677_112040_Linux-x86-64_3of7.zip 并解压 #用 grid 用户上传文件到grid的home目录
[gridrac1 ~]$ pwd
/home/grid[gridrac1 ~]$ ll
-rw-r--r-- 1 root root 1205251894 1月 6 20:33 p13390677_112040_Linux-x86-64_3of7.zip# 解压文件
[gridrac1 ~]$ unzip p13390677_112040_Linux-x86-64_3of7.zip使用root用户安装cvuqdisk安装包在解压目录中/home/grid/grid/rpm两个节点都需要安装cvuqdisk否则集群验证时程序就无法发现共享磁盘。 [rootrac1 ~]# cd /home/grid/grid/rpm
[rootrac1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm
准备中... ################################# [100%]
Using default group oinstall to install package
正在升级/安装...1:cvuqdisk-1.0.9-1 ################################# [100%]传输到第2个节点上进行安装
[rootrac2 ~]# scp rac1:/home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm .[rootrac2 ~]# rpm -ivh cvuqdisk-1.0.9-1.rpm
准备中... ################################# [100%]
Using default group oinstall to install package
正在升级/安装...1:cvuqdisk-1.0.9-1 ################################# [100%] 九、ASM磁盘
用oracle asm创建ASM磁盘。
1、安装asm软件
oracle asm需要三个包kmod-oracleasm, oracleasm-support, oracleasmlib。
官方下载页面Oracle ASMLib Downloads for Red Hat Enterprise Linux 7
备份下载地址https://download.csdn.net/download/u014644574/88671993
#下载 rpm 包
curl -o oracleasmlib-2.0.12-1.el7.x86_64.rpm https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpmcurl -o oracleasm-support-2.1.11-2.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm
安装oracle asm依次安装 rpm 包rac1和rac2都需要执行
# kmod-oracleasm 这个前面已经安装
# yum -y install kmod-oracleasm
rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm
rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm
初始化 ASMrac1和rac2都需要执行
[rootrac1 ~]# oracleasm configure -iDefault user to own the driver interface []: grid # 选择用户grid
Default group to own the driver interface []: asmadmin # 选择用户所在的组asmadminStart Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y#初始化
[rootrac1 ~]# oracleasm init查看asm状态
[rootrac1 ~]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes 2、磁盘分区
由于是共享磁盘只需在节点rac1上分区节点rac2扫描即可
#查看已经添加的磁盘
lsblk#查询结果如下
sdb 8:16 0 2G 0 disk
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sde 8:64 0 10G 0 disk
sdf 8:80 0 20G 0 disk
对5个磁盘分区这里有5块磁盘需要每个磁盘做1个分区如果只有一块磁盘做5个分区效果是一样的。
[rootrac1 ~]# fdisk /dev/sdb
[rootrac1 ~]# fdisk /dev/sdc
[rootrac1 ~]# fdisk /dev/sdd
[rootrac1 ~]# fdisk /dev/sde
[rootrac1 ~]# fdisk /dev/sdf具体操作如下
②n表示新建分区 ③p表示类型为主分区 ④假如输入1分区名称就叫 /dev/sdb1输入3分区名称就叫 /dev/sdb3 ⑤w表示保存修改。 起始扇区设置直接回车使用默认即可如果要分多个区需要手动调整。
5块磁盘分区完成后查看分区情况
[rootrac1 ~]# lsblk
sdb 8:16 0 2G 0 disk
└─sdb1 8:17 0 2G 0 part
sdc 8:32 0 2G 0 disk
└─sdc1 8:33 0 2G 0 part
sdd 8:48 0 2G 0 disk
└─sdd1 8:49 0 2G 0 part
sde 8:64 0 10G 0 disk
└─sde1 8:65 0 10G 0 part
sdf 8:80 0 20G 0 disk
└─sdf1 8:81 0 20G 0 part另外一台使用命令 更新磁盘信息
[rootrac2 ~]# partprobe
[rootrac2 ~]# lsblk
3、创建 ASM 磁盘
1、在任意一个节点创建 ASM 磁盘 在节点 rac1 进行如下操作
# 查看 ASM 磁盘列表
[rootrac1 ~]# oracleasm listdisks # 无返回结果# 再次确认下磁盘
[rootrac1 ~]# fdisk -l | grep ^/dev/sd
/dev/sdb1 2048 4194303 2096128 83 Linux
/dev/sdc1 2048 4194303 2096128 83 Linux
/dev/sdd1 2048 4194303 2096128 83 Linux
/dev/sde1 2048 20971519 10484736 83 Linux
/dev/sdf1 2048 41943039 20970496 83 Linux
# 创建 ASM 磁盘
[rootrac1 ~]# oracleasm createdisk ocr1 /dev/sdb1
[rootrac1 ~]# oracleasm createdisk ocr2 /dev/sdc1
[rootrac1 ~]# oracleasm createdisk ocr3 /dev/sdd1
[rootrac1 ~]# oracleasm createdisk bak1 /dev/sde1
[rootrac1 ~]# oracleasm createdisk data1 /dev/sdf1# 查看 ASM 磁盘列表
[rootrac1 ~]# oracleasm listdisks
BAK1
DATA1
OCR1
OCR2
OCR32、在另一个节点扫描 ASM 磁盘 在节点 rac2 执行如下操作
# 查看 ASM 磁盘列表
[rootrac2 ~]# oracleasm listdisks # 无返回结果# 扫描 ASM 磁盘信息
[rootrac2 ~]# oracleasm scandisks# 重新查看 ASM 磁盘列表
[rootrac2 ~]# oracleasm listdisks
BAK1
DATA1
OCR1
OCR2
OCR3十、安装grid软件
1、检查集群安装的是否满足条件
手动运行 cvu 使用验证程序验证Oracle集群件要求校验集群安装的可行性。 节点 rac1 到 grid 软件目录下执行 runcluvfy.sh命令 [gridrac1 ~]$ cd /home/grid/grid# 注意这里的参数rac1,rac2是两台节点的主机名
[gridrac1 grid]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose结果:pdksh 的 包存在性 检查失败这个错误不用管pdksh只有在Linux 4上需要Linux 5/6/7都已经被ksh取代忽略该错误。
未检测通过的显示为failed有的failed可以根据提供的脚本进行修复。有的需要根据情况进行修复有的failed也可以忽略。
2、修改 grid 响应文件
1、在节点1执行如下操作
[gridrac1 ~]$ cd /home/grid/grid/response
[gridrac1 response]$ cp grid_install.rsp grid_install.rsp.bak
[gridrac1 response]$ vi grid_install.rsp2、修改 grid 响应文件内容如下
# oracle安装响应文件版本
oracle.install.responseFileVersion/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0# 当前安装节点的计算机名称rac1查询方式 hostname
ORACLE_HOSTNAMErac1# 选择Inventory目录默认/u01/app/oraInventory
INVENTORY_LOCATION/u01/app/oraInventory# 语言en,zh_CN
SELECTED_LANGUAGESen,zh_CN# 指定安装类型CRS_CONFIG为集群配置
oracle.install.optionCRS_CONFIG# grid 的 BASE目录/u01/app/grid
ORACLE_BASE/u01/app/grid# grid 的 HOME 目录/u01/app/11.2.0/grid
ORACLE_HOME/u01/app/11.2.0/grid# 设置组信息
oracle.install.asm.OSDBAasmdba
oracle.install.asm.OSOPERasmoper
oracle.install.asm.OSASMasmadmin# scan名称为/etc/hosts文件中配置的rac-scan
oracle.install.crs.config.gpnp.scanNamerac-scan# 集群监听端口号1521
oracle.install.crs.config.gpnp.scanPort1521# 集群名称rac-cluster
oracle.install.crs.config.clusterNamerac-cluster# 不使用GNS以下四个选项不用设置
oracle.install.crs.config.gpnp.configureGNSfalse
oracle.install.crs.config.gpnp.gnsSubDomain
oracle.install.crs.config.gpnp.gnsVIPAddress
oracle.install.crs.config.autoConfigureClusterNodeVIP# 节点信息跟为/etc/hosts文件中配置对应rac1:rac1-vip,rac2:rac2-vip
oracle.install.crs.config.clusterNodesrac1:rac1-vip,rac2:rac2-vip# 网络地址IP地址和子网掩码的二进制形式进行与运算即IPADDR和NETMASK的二进制与运算结果。
# 网卡信息和网段网卡1名称:网络地址(公网):1,网卡2名称:网络地址(私网):21表示公共2表示私有
oracle.install.crs.config.networkInterfaceListens32:192.168.111.0:1,ens33:192.168.63.0:2# 注册表OCR和投票的存储类型
oracle.install.crs.config.storageOptionASM_STORAGE# 上一步使用 ASM_STORAGE以下选项不用设置
oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping
oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations
oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancyNORMAL
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations
oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancyNORMAL# 不使用IPMI以下选项不用设置
oracle.install.crs.config.useIPMIfalse
oracle.install.crs.config.ipmi.bmcUsername
oracle.install.crs.config.ipmi.bmcPassword# 配置 ASM 操作密码oracle
oracle.install.asm.SYSASMPasswordoracle# 配置 ASM 表决盘名称OCR
oracle.install.asm.diskGroup.nameOCR# 配置 ASM 表决盘冗余选项NORMAL默认值
oracle.install.asm.diskGroup.redundancyNORMAL# 配置 单元大小ASM AUSize1默认值
oracle.install.asm.diskGroup.AUSize1# 设置表决盘所使用的裸盘查询方式ll /dev/oracleasm/disks/*
oracle.install.asm.diskGroup.disks/dev/oracleasm/disks/OCR1,/dev/oracleasm/disks/OCR2,/dev/oracleasm/disks/OCR3# 配置 ASM 磁盘位置/dev/oracleasm/disks
oracle.install.asm.diskGroup.diskDiscoveryString/dev/oracleasm/disks/*# 配置 ASMSNMP 密码oracle
oracle.install.asm.monitorPasswordoracle# 指定要升级的节点
oracle.install.crs.upgrade.clusterNodes# 升级ASM
oracle.install.asm.upgradeASMfalse# 设置系统自动更新选项SKIP_UPDATES跳过更新
oracle.installer.autoupdates.optionSKIP_UPDATES# 不自动更新以下选项不用设置
oracle.installer.autoupdates.downloadUpdatesLoc
AUTOUPDATES_MYORACLESUPPORT_USERNAME
AUTOUPDATES_MYORACLESUPPORT_PASSWORD# 配置代理服务器选项不使用代理服务器
PROXY_HOST
PROXY_PORT
PROXY_USER
PROXY_PWD
PROXY_REALM
3、开始安装 grid 软件
运行安装脚本 runInstaller
[rootrac1 ~]# su - grid
[gridrac1 ~]$ cd /home/grid/grid[gridrac1 grid]$ ll
total 52
drwxr-xr-x 4 grid oinstall 281 Aug 26 2013 install
-rw-r--r-- 1 grid oinstall 30016 Aug 27 2013 readme.html
drwxr-xr-x 2 grid oinstall 58 Jun 11 22:08 response
drwxr-xr-x 2 grid oinstall 34 Aug 26 2013 rpm
-rwxr-xr-x 1 grid oinstall 4878 Aug 26 2013 runcluvfy.sh
-rwxr-xr-x 1 grid oinstall 3268 Aug 26 2013 runInstaller
drwxr-xr-x 2 grid oinstall 29 Aug 26 2013 sshsetup
drwxr-xr-x 14 grid oinstall 4096 Aug 26 2013 stage
-rw-r--r-- 1 grid oinstall 500 Aug 27 2013 welcome.html#安装
[gridrac1 grid]$ ./runInstaller -force -noconfig -IgnoreSysPreReqs -showProgress -ignorePrereq -silent -responseFile /home/grid/grid/response/grid_install.rsp#安装成功提示而且告诉后续需要执行3个脚本
以 root 用户的身份执行以下脚本:1. /u01/app/oraInventory/orainstRoot.sh2. /u01/app/11.2.0/grid/root.sh
.................................................. 100% 完成。执行 Root 脚本成功。
以安装用户的身份执行以下脚本来完成配置。1. /u01/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILEresponse_fileSuccessfully Setup Software.
分别在节点 rac1 和 rac2 上按顺序以 root 用户身份执行以下两个脚本 1执行脚本/u01/app/oraInventory/orainstRoot.sh 脚本的作用修改目录的权限。
# 节点1
[rootrac1 disks]# /u01/app/oraInventory/orainstRoot.sh# 节点2
[rootrac2 disks]# /u01/app/oraInventory/orainstRoot.sh2执行脚本/u01/app/11.2.0/grid/root.sh 脚本的作用启动相关资源。
运行脚本前需要打一个补丁18370031。否则会报错 CRS-2101: 。虽然这个错误可以通过下面的方式临时解决
# 执行过程中出现如下错误
# [client(7427)]CRS-2101:The OLR was formatted using version 3.#新开一个窗口以 root 用户执行以下命令
/bin/dd if/var/tmp/.oracle/npohasd of/dev/null bs1024 count1
但是这样解决的问题在遇到重启Linux后不能正常启动crs
CRS-2101:通过MOS查询该问题是ORACLE的一个BUG已经在11.2.0.3中修复该问题是由于在执行root.sh时候 会在/tmp/.oracle下产生一个文件npohasd文件此文件的只有root用户有权限因此出现不能启动ohasd进程。
因为RHEL 7使用systemd而不是initd运行进程和重启进程而root.sh通过传统的initd运行ohasd进程。如果 init.ohasd进程 不存在crs启动不了。
这是由于RHEL 7改变了init的管理方式出现了兼容性上的问题。官方给出了补丁18370031在PSU 28429134也有包含,选择一个就好。
节点rac1安装会自动安装到其他节点
[rootrac1 ~]# su - grid
# 上传补丁包18370031
[gridrac1 ~]$ unzip p18370031_112040_Linux-x86-64.zip
[gridrac1 ~]$ cd $ORACLE_HOME/OPatch# 当前OPatch版本号
[gridrac1 OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.4
OPatch succeeded.[gridrac1 OPatch]$ pwd
/u01/app/11.2.0/grid/OPatch#进入补丁解压包
[gridrac1 ~]$ cd /home/grid/18370031#打补丁中途提示输入y即可。
[gridrac1 18370031]$ /u01/app/11.2.0/grid/OPatch/opatch apply#成功提示
Patch 18370031 successfully applied
Log file location: /u01/app/11.2.0/grid/cfgtoollogs/opatch/18370031_Jan_07_2024_00_39_58/apply2024-01-07_00-39-58上午_1.logOPatch succeeded.
节点rac1执行脚本
[rootrac1 ~]# /u01/app/11.2.0/grid/root.sh
Check /u01/app/11.2.0/grid/install/root_rac1_2022-06-12_01-19-58.log for the output of root script另开一个窗口查看节点1rac1执行 /u01/app/11.2.0/grid/root.sh 时的日志
成功日志如下
[rootrac1 ~]# tail -f /u01/app/11.2.0/grid/install/root_rac1_2022-06-12_01-19-58.logCRS-2672: Attempting to start ora.asm on rac1
CRS-2676: Start of ora.asm on rac1 succeeded
CRS-2672: Attempting to start ora.OCR.dg on rac1
CRS-2676: Start of ora.OCR.dg on rac1 succeeded
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
失败如下
[rootrac1 ~]# tail -f /u01/app/11.2.0/grid/install/root_rac1_2022-06-12_01-19-58.logAdding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2022-06-12 01:21:53.036:
[client(7427)]CRS-2101:The OLR was formatted using version 3.
节点rac2执行脚本
[rootrac2 ~]# /u01/app/11.2.0/grid/root.sh
Check /u01/app/11.2.0/grid/install/root_rac2_2022-06-12_01-29-23.log for the output of root script另开一个窗口查看节点2rac2执行 /u01/app/11.2.0/grid/root.sh 时的日志
[rootrac2 ~]# tail -f /u01/app/11.2.0/grid/install/root_rac2_2022-06-12_01-29-23.log3、在节点 rac1 上执行下面的脚本
[rootrac1 ~]# su - grid
[gridrac1 ~]$ vi cfgrsp.properties 设置响应内容如下
oracle.assistants.asm|S_ASMPASSWORD
oracle.assistants.asm|S_ASMMONITORPASSWORD
oracle.crs|S_BMCPASSWORD
官方网站解释这个响应文件怎么配置Installing and Configuring Oracle Database Using Response Files 如果您没有 BMC 卡或者不想启用 IPMI请将S_BMCPASSWORD输入留空。
[gridrac1 ~]$ /u01/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE/home/grid/cfgrsp.properties 十一、CRS 状态
1、查看 grid rac 状态 节点1
[gridrac1 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....ER.lsnr ora....er.type ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type ONLINE ONLINE rac1
ora.OCR.dg ora....up.type ONLINE ONLINE rac1
ora.asm ora.asm.type ONLINE ONLINE rac1
ora.cvu ora.cvu.type ONLINE ONLINE rac1
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type ONLINE ONLINE rac1
ora.ons ora.ons.type ONLINE ONLINE rac1
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type ONLINE ONLINE rac2
ora.scan1.vip ora....ip.type ONLINE ONLINE rac1
我这里只有ora.gsd处于OFFLINE状态是正常的仅仅当集群中存在9i版本的数据库软件时ora.gsd资源才应处于在线状态(ONLINE)其他情况下都应该保持OFFLINE状态。
也就是执行如下命令只有gsd是OFFLINE离线状态表示集群正常。
[gridrac1 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
如果 ora.cvu OFFLINE 离线
# ora.cvu启动命令
[gridrac1 ~]$ srvctl start cvu
2、查看 CRS 状态
查看本地节点的 CRS 状态4个状态全是 online 在线
[gridrac1 grid]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online3、查看集群的 CRS 状态3个状态全是 online 在线
[gridrac1 grid]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online4、查看集群中节点的配置信息
[gridrac1 grid]$ olsnodes -n -i -s
rac1 1 rac1-vip Active
rac2 2 rac2-vip Active5、查看集群件的表决磁盘信息
[gridrac1 grid]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------1. ONLINE 346370b3c9784f88bf6c1cd51e8c3dd0 (/dev/oracleasm/disks/OCR1) [OCR]2. ONLINE 1924a6ec08824fefbfb1cfdc7c172cb7 (/dev/oracleasm/disks/OCR2) [OCR]3. ONLINE 36f4cb31efaa4f9ebf81fa478a82a48d (/dev/oracleasm/disks/OCR3) [OCR]
Located 3 voting disk(s).
6、查看集群 SCAN VIP 信息
[gridrac1 ~]$ srvctl config scan
SCAN 名称: rac-scan, 网络: 1/192.168.111.0/255.255.255.0/ens32
SCAN VIP 名称: scan1, IP: /rac-scan/192.168.111.222
7、查看集群 SCAN Listener 信息
[gridrac1 ~]$ srvctl config scan_listener
SCAN 监听程序 LISTENER_SCAN1 已存在。端口: TCP:1521
8、查看集群件 OCR 文件信息
[gridrac1 grid]$ ocrcheck
9、查看集群件 OCR 备份信息
[gridrac1 grid]$ ocrconfig -showbackup
PROT-24: Auto backups for the Oracle Cluster Registry are not available
PROT-25: Manual backups for the Oracle Cluster Registry are not available10、查询节点实例
[gridrac3 ~]$ srvctl status database -d oradb
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行
11、 查看集群状态两个重要的指标 asm 和 实例
[gridrac3 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
ora.asmONLINE ONLINE rac1 StartedONLINE ONLINE rac2 Startedora.oradb.db1 ONLINE ONLINE rac1 Open2 ONLINE ONLINE rac2 Open 十二、安装 Oracle 软件
1、创建磁盘组
创建两个磁盘组 DATA 和 BAK
#查看ASM磁盘
[rootrac1 ~]# ll /dev/oracleasm/disks/*
brw-rw---- 1 grid asmadmin 8, 65 12月 29 05:35 /dev/oracleasm/disks/BAK1
brw-rw---- 1 grid asmadmin 8, 81 12月 29 05:35 /dev/oracleasm/disks/DATA1
brw-rw---- 1 grid asmadmin 8, 17 12月 30 12:00 /dev/oracleasm/disks/OCR1
brw-rw---- 1 grid asmadmin 8, 33 12月 30 12:00 /dev/oracleasm/disks/OCR2
brw-rw---- 1 grid asmadmin 8, 49 12月 30 12:00 /dev/oracleasm/disks/OCR3在节点 rac1 创建两个磁盘组 DATA 和 BAK
[rootrac1 ~]# su - grid
[gridrac1 ~]$ sqlplus / as sysasm-- 创建磁盘组 data
SQL create diskgroup data external redundancy disk /dev/oracleasm/disks/DATA1;
Diskgroup created.-- 为磁盘组 data 添加磁盘这里没有DATA2不用执行。
-- SQL alter diskgroup data add disk /dev/oracleasm/disks/DATA2;
-- Diskgroup altered.-- 创建磁盘组 bak
SQL create diskgroup bak external redundancy disk /dev/oracleasm/disks/BAK1;
Diskgroup created.-- 为磁盘组 bak 添加磁盘这里没有BAK2不用执行。
-- SQL alter diskgroup bak add disk /dev/oracleasm/disks/BAK2;
-- Diskgroup altered.-- 查看磁盘组信息
SQL select INST_ID,name,free_mb,state from gv$asm_diskgroup;INST_ID NAME FREE_MB STATE
---------- ------------------------------ ---------- -----------1 OCR 5215 MOUNTED1 DATA 20429 MOUNTED1 BAK 10189 MOUNTED2 OCR 5215 MOUNTED2 DATA 0 DISMOUNTED2 BAK 0 DISMOUNTED6 rows selected.新建的DATA和BAK状态为 DISMOUNTED。
在节点 rac2 上修改磁盘组的状态为 mount这一步是为了测试集群节点任何一个节点操作效果是一样的。 在个节点 rac2 上执行如下操作
[gridrac2 ~]$ sqlplus / as sysasmSQL alter diskgroup data mount;Diskgroup altered.SQL alter diskgroup bak mount;Diskgroup altered.--查看磁盘组信息
SQL select INST_ID,name,free_mb,state from gv$asm_diskgroup;INST_ID NAME FREE_MB STATE
---------- ------------------------------ ---------- -----------2 OCR 5215 MOUNTED2 DATA 20386 MOUNTED2 BAK 10146 MOUNTED1 OCR 5215 MOUNTED1 DATA 20386 MOUNTED1 BAK 10146 MOUNTED6 rows selected.
全部挂载成功。
2、修改 oracle 响应文件
用 oracle 用户登录上传 p13390677_112040_Linux-x86-64_1of7.zip 和 p13390677_112040_Linux-x86-64_2of7.zip 并解压
[rootrac1 ~]# su - oracle# 使用oracle用户上传安装包到oracle的home目录
[oraclerac1 ~]$ ll
-rw-r--r-- 1 root root 1395582860 1月 2 21:09 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 root root 1151304589 1月 2 21:09 p13390677_112040_Linux-x86-64_2of7.zip# 解压缩安装文件
[oraclerac1 ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
[oraclerac1 ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip[oraclerac1 ~]$ ll
drwxr-xr-x 7 oracle oinstall 136 8月 27 2013 database修改 oracle 响应文件
[oraclerac1 ~]$ cd database/response/
#备份
[oraclerac1 response]$ cp db_install.rsp db_install.rsp.bak[oraclerac1 response]$ vi db_install.rsp
文件 db_install.rsp 的内容如下
# oracle安装响应文件版本
oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0# 选择安装类型INSTALL_DB_SWONLY只安装数据库软件
oracle.install.optionINSTALL_DB_SWONLY# 指定安装过程中设置的系统主机名通过hostname命令获取
ORACLE_HOSTNAMErac1# 指定清单目录oracle inventory的所有者oinstall
UNIX_GROUP_NAMEoinstall# 指定清单目录的路径
INVENTORY_LOCATION/u01/app/oraInventory# 指定数据库语言en,zh_CN
SELECTED_LANGUAGESen,zh_CN# 设置ORALCE_HOME的路径
ORACLE_HOME/u01/app/oracle/product/11.2.0/db_1# 设置ORALCE_BASE的路径
ORACLE_BASE/u01/app/oracle# 选择Oracle安装数据库软件的版本EE企业版
oracle.install.db.InstallEditionEE# 是否自定义Oracle的组件false安装默认组件
oracle.install.db.EEOptionsSelectionfalse# 要安装的组件列表不要修改
oracle.install.db.optionalComponentsoracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0# 指定拥有OSDBA权限的用户组
oracle.install.db.DBA_GROUPdba# 指定拥有OSOPER权限的用户组
oracle.install.db.OPER_GROUPoper# 指定要安装oracle软件的节点rac1,rac2
oracle.install.db.CLUSTER_NODESrac1,rac2# 是否安装单节点racfalse
oracle.install.db.isRACOneInstall# 安装单节点rac的服务名称
oracle.install.db.racOneServiceName# 选择数据库的用途GENERAL_PURPOSE一般用途/事务处理
oracle.install.db.config.starterdb.typeGENERAL_PURPOSE# 指定数据库的GlobalName全局名称
oracle.install.db.config.starterdb.globalDBNameoradb# 指定数据库的SID
oracle.install.db.config.starterdb.SIDorcl# 选择字符集AL32UTF8
oracle.install.db.config.starterdb.characterSetAL32UTF8# 11g的新特性自动内存管理true
oracle.install.db.config.starterdb.memoryOptiontrue# 指定Oracle自动管理内存的大小物理内存的60%左右单位MB
oracle.install.db.config.starterdb.memoryLimit1024# 是否载入模板示例false
oracle.install.db.config.starterdb.installExampleSchemasfalse# 是否启用安全设置true
oracle.install.db.config.starterdb.enableSecuritySettingstrue# 设置数据库用户密码
# 设定所有数据库用户使用同一个密码其它数据库用户就不用单独设置了。
oracle.install.db.config.starterdb.password.ALLoracle# 设定SYS用户的密码不用设定统一使用 oracle 作为密码
oracle.install.db.config.starterdb.password.SYS# 设定SYSTEM用户的密码不用设定统一使用 oracle 作为密码
oracle.install.db.config.starterdb.password.SYSTEM# 设定SYSMAN用户的密码不用设定统一使用 oracle 作为密码
oracle.install.db.config.starterdb.password.SYSMAN# 设定DBSNMP用户的密码不用设定统一使用 oracle 作为密码
oracle.install.db.config.starterdb.password.DBSNMP# 使用数据库本地管理工具DB_CONTROL
oracle.install.db.config.starterdb.controlDB_CONTROL# 当上一个选项设置为GRID_CONTROL时才需要设定grid control的远程路径URL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL# 设置自动备份false
oracle.install.db.config.starterdb.automatedBackup.enablefalse# 不是自动备份不用设置
oracle.install.db.config.starterdb.automatedBackup.osuid
oracle.install.db.config.starterdb.automatedBackup.ospwd# 指定存储类型ASM_STORAGE
oracle.install.db.config.starterdb.storageTypeASM_STORAGE# 不使用文件系统不用设置
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation# 指定ASM的磁盘组
oracle.install.db.config.asm.diskGroupDATA# 指定ASM实例密码
oracle.install.db.config.asm.ASMSNMPPasswordoracle# 不使用metalink账户不用设置
MYORACLESUPPORT_USERNAME
MYORACLESUPPORT_PASSWORD
SECURITY_UPDATES_VIA_MYORACLESUPPORT# 是否设置安全更新
# False表示不需要设置安全更新在11.2的静默安装中必须指定为true否则会提示错误
DECLINE_SECURITY_UPDATEStrue# 不使用代理服务器不用设置
PROXY_HOST
PROXY_PORT
PROXY_USER
PROXY_PWD
PROXY_REALM# Oracle支持中心URL。
COLLECTOR_SUPPORTHUB_URL# 自动更新SKIP_UPDATES
oracle.installer.autoupdates.optionSKIP_UPDATES# 不使用自动不用设置
oracle.installer.autoupdates.downloadUpdatesLoc
AUTOUPDATES_MYORACLESUPPORT_USERNAME
AUTOUPDATES_MYORACLESUPPORT_PASSWORD3、开始安装 oracle 软件
执行 runInstaller 命令开始安装 oracle
[oraclerac1 ~]$ cd /home/oracle/database[oraclerac1 database]$ ./runInstaller -silent -ignorePrereq -showProgress -responseFile /home/oracle/database/response/db_install.rsp# 安装成功提示安装程序文件成功。
Oracle Database 11g 的 安装 已成功。
请查看 /u01/app/oraInventory/logs/silentInstall2024-01-03_02-43-00AM.log 以获取详细资料。执行 Root 脚本 正在进行中。以 root 用户的身份执行以下脚本:1. /u01/app/oracle/product/11.2.0/db_1/root.sh在以下节点上执行/u01/app/oracle/product/11.2.0/db_1/root.sh:
[rac1, rac2].................................................. 100% 完成。执行 Root 脚本成功。
Successfully Setup Software.-silent此选项表示静默安装意味着安装过程不会显示任何图形用户界面而是以批处理模式进行。 -ignorePrereq此选项告诉安装程序忽略先决条件检查。通常在安装之前安装程序会检查系统是否满足安装所需的最低要求。使用此选项您可以跳过这些检查。 -ignoreSysPrereqs此选项类似于 -ignorePrereq但它专门针对操作系统级别的先决条件。 -responseFile此选项允许您指定一个响应文件该文件包含在安装过程中需要回答的问题的答案。这样您可以在不手动回答问题的情况下进行安装。 -showProgress此选项会显示安装的进度。静默安装时通常不显示进度但使用此选项可以查看进度信息。 切换到 root 用户在 rac1、rac2 执行以下脚本 分别在rac1, rac2上以root执行脚本:
# 节点1
[rootrac1 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh# 节点2
[rootrac2 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
4、创建数据库实例
修改建库使用的响应文件
[oraclerac1 ~]$ cd /home/oracle/database/response#备份
[oraclerac1 response]$ cp dbca.rsp dbca.rsp.bak[oraclerac1 response]$ vi dbca.rsp响应文件的内容如下
[GENERAL]
# 响应文件的版本号
RESPONSEFILE_VERSION 11.2.0
# 操作类型createDatabase创建数据库
OPERATION_TYPE createDatabase[CREATEDATABASE]
# 数据库名称相当于SERVICE_NAME
GDBNAME oradb# 指定数据库的 SID 和 oracle 用户环境变量中的 ORACLE_SID 必须一致查看方式su - oracle后执行cat .bash_profile
# 每个节点实例SID前缀为orcl 会自动生成orcl1orcl2 两个实例
SID orcl# 逗号分隔的群集节点列表rac1,rac2
NODELISTrac1,rac2# 数据库模板的名称General_Purpose.dbc默认值
TEMPLATENAME General_Purpose.dbc##设置 sys 账户的密码
SYSPASSWORD oracle##设置 system 账户的密码
SYSTEMPASSWORD oracle# 数据库文件的位置
DATAFILEDESTINATION DATA# 恢复区的位置
RECOVERYAREADESTINATIONBAK# 指定要创建的数据库的存储类型ASM自动存储管理
STORAGETYPEASM# 指定存储的磁盘组名称
DISKGROUPNAMEDATA# 指定恢复区磁盘组名称
RECOVERYGROUPNAMEBAK# 数据库字符集
CHARACTERSET AL32UTF8# 数据库国家字符集
NATIONALCHARACTERSET AL16UTF16# oracle所占物理内存百分比60%
MEMORYPERCENTAGE 60# 分配给oracle数据库的总内存单位MB这个是SGA大小
TOTALMEMORY 800# 默认值
[createTemplateFromDB]
SOURCEDB myhost:1521:orcl
SYSDBAUSERNAME system
TEMPLATENAME My Copy TEMPLATE
[createCloneTemplate]
SOURCEDB orcl
TEMPLATENAME My Clone TEMPLATE
[DELETEDATABASE]
SOURCEDB orcl
[generateScripts]
TEMPLATENAME New Database
GDBNAME orcl11.us.oracle.com
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME orcl11g.us.oracle.com
NODELIST
SYSDBAUSERNAME sys
[DELETEINSTANCE]
DB_UNIQUE_NAME orcl11g.us.oracle.com
INSTANCENAME orcl11g
SYSDBAUSERNAME sys使用 dbca 命令创建数据库
[oraclerac1 ~]$ cd /u01/app/oracle/product/11.2.0/db_1/bin[oraclerac1 bin]$ dbca -silent -responseFile /home/oracle/database/response/dbca.rsp复制数据库文件
1% 已完成
3% 已完成
9% 已完成
15% 已完成
21% 已完成
27% 已完成
30% 已完成
正在创建并启动 Oracle 实例
32% 已完成
36% 已完成
40% 已完成
44% 已完成
45% 已完成
48% 已完成
50% 已完成
正在创建集群数据库视图
52% 已完成
70% 已完成
正在进行数据库创建
73% 已完成
76% 已完成
85% 已完成
94% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 /u01/app/oracle/cfgtoollogs/dbca/oradb/oradb.log。# 查看日志 tail -500f /u01/app/oracle/cfgtoollogs/dbca/oradb/oradb.log
数据库信息:
全局数据库名:oradb
系统标识符 (SID) 前缀:orcl5、测试连接数据库
查看 grid 集群状态
[gridrac1 ~]$ crs_stat -t
查看集群SCAN VIP信息访问数据库使用这个地址
[gridrac1 ~]$ srvctl config scan
SCAN 名称: rac-scan, 网络: 1/192.168.111.0/255.255.255.0/ens32
SCAN VIP 名称: scan1, IP: /rac-scan/192.168.111.222
创建用户
[oraclerac1 ~]$ sqlplus / as sysdba##创建一个新用户abc和密码123456
SQL create user abc identified by 123456;##授予DBA权限。
SQL grant connect,resource,dba to abc;
本地plsql连接
RAC (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 192.168.111.222)(PORT 1521))(CONNECT_DATA (SERVER DEDICATED)(SERVICE_NAME oradb)))select instance_name, status from v$instance;
在不同的session得到的实例名不相同说明正常负载均衡了。
当开启第二个session连接时发现实例名为orcl2可以看出scan-ip的加入可以具有负载均衡的作用。
正常安装好后不需要做任何操全部节点关机重启后会自动加入集群正常工作。 十三、RAC 增加节点
给RAC系统扩充一个节点
新增节点之前主机规划
主机名public ipprivate ipvirtual ip (VIP)scan ip用户名密码rac1192.168.111.201192.168.63.201192.168.111.211192.168.111.222grid oraclegrid oraclerac2192.168.111.202192.168.63.202192.168.111.212
新增节点之后主机规划
主机名public ipprivate ipvirtual ip (VIP)scan ip用户名密码rac1192.168.111.201192.168.63.201192.168.111.211192.168.111.222grid oraclegrid oraclerac2192.168.111.202192.168.63.202192.168.111.212rac3192.168.111.203192.168.63.203192.168.111.213
1、创建完整克隆。虚拟机名称为 rac3 2、添加网卡VMnet1参考上面。 3、添加5个共享磁盘设置为独立永久参考上面。 4、设置虚拟机 rac3.vmx
scsi0.sharedBus virtual
disk.locking false
diskLib.dataCacheMaxSize 0
diskLib.dataCacheMaxReadAheadSize 0
diskLib.DataCacheMinReadAheadSize 0
diskLib.dataCachePageSize 4096
diskLib.maxUnsyncedWrites 0
5、修改网卡有2个网卡修改为静态ip
vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPEEthernet
BOOTPROTOstatic
NAMEens32
DEVICEens32
ONBOOTyesIPADDR192.168.111.203
NETMASK255.255.255.0
GATEWAY192.168.111.2
DNS18.8.8.8
DNS2114.114.114.114仅主机模式这张网卡不要配置网关否则不能正常联网。 vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPEEthernet
BOOTPROTOstatic
NAMEens33
DEVICEens33
ONBOOTyesIPADDR192.168.63.203
NETMASK255.255.255.0
NETWORK192.168.63.0重启生效
service network restart
6、修改主机名为 rac3
hostnamectl set-hostname rac3
7、关闭防火墙
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
8、修改时间保持3台节点的时间一致时间相差太大不能安装时间大致相同就忽略此步骤。
# 节点1 查询时间
date %Y-%m-%d %H:%M:%S## 节点3 修改时间
#修改日期时间
date -s 2024-01-07 20:00:34
#将当前时间和日期写入BIOS避免重启后失效
hwclock -w
9、设置host3个节点都需要修改以前的节点也需要修改
vi /etc/hosts
#Public IP
192.168.111.201 rac1
192.168.111.202 rac2
192.168.111.203 rac3#Private IP
192.168.63.201 rac1-priv
192.168.63.202 rac2-priv
192.168.63.203 rac3-priv#Virtual IP
192.168.111.211 rac1-vip
192.168.111.212 rac2-vip
192.168.111.213 rac3-vip#Scan IP
192.168.111.222 rac-scan
10、创建用户和组这个组id和组名称要和以前的节点一致。
# 创建组
groupadd -g 1000 oinstall
groupadd -g 1001 dba
groupadd -g 1002 oper
groupadd -g 1003 asmadmin
groupadd -g 1004 asmdba
groupadd -g 1005 asmoper# 创建用户
useradd -u 1100 -g oinstall -G dba,asmdba,asmoper,asmadmin grid
useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle#创建安装目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/# 设置密码
# 这里密码分别设置为oracle 和 grid
echo oracle | passwd --stdin oracle #为oracle用户设置密码为oracle
echo grid | passwd --stdin grid #为grid用户设置密码为grid#设置oracle和grid用户密码永不过期
chage -M -1 oracle
chage -M -1 grid
chage -l oracle
chage -l grid
11、设置系统参数
在配置文件 /etc/sysctl.conf 末尾添加以下内容
kernel.msgmnb 65536
kernel.msgmax 65536
kernel.shmmax 68719476736
kernel.shmall 4294967296
kernel.shmmni 4096
kernel.sem 250 32000 100 128
fs.aio-max-nr 1048576
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 1048586
net.ipv4.tcp_wmem 262144 262144 262144
net.ipv4.tcp_rmem 4194304 4194304 4194304
执行以下命令生效
sysctl -p
配置shell限制,修改 /etc/security/limits.conf 配置文件末尾添加以下内容
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
配置login在 /etc/pam.d/login 文件最后添加一行内容
session required pam_limits.so12、配置用户环境变量
grid用户
su - grid
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDASM3 # RAC3
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
umask 022
执行 source .bash_profile 命令使配置生效。
Oracle用户
su - oracle
vi .bash_profileexport TMP/tmp
export TMPDIR$TMP
export ORACLE_SIDorcl3 # RAC3
export ORACLE_UNQNAMEoradb
export ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/11.2.0/db_1
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
执行 source .bash_profile 命令使配置生效。
13、ssh互信oracle和grid用户
节点 rac3 切换至oracle用户
# 执行后一直回车
[oraclerac3 ~]$ ssh-keygen -t rsa# 将rac1节点的key复制到当前节点
[oraclerac3 ~]$ scp rac1:~/.ssh/authorized_keys ~/.ssh/#新生成的公钥追加到key文件中
[oraclerac3 ~]$ cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
[oraclerac3 ~]$ chmod 600 ~/.ssh/authorized_keys#最新key复制到另外两个节点中
[oraclerac3 ~]$ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys
[oraclerac3 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
节点 rac3 切换至grid用户
# 执行后一直回车
[gridrac3 ~]$ ssh-keygen -t rsa# 将rac1节点的key复制到当前节点
[gridrac3 ~]$ scp rac1:~/.ssh/authorized_keys ~/.ssh/#新生成的公钥追加到key文件中
[gridrac3 ~]$ cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
[gridrac3 ~]$ chmod 600 ~/.ssh/authorized_keys#最新key复制到另外两个节点中
[gridrac3 ~]$ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys
[gridrac3 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys测试一下相互之间是否在oracle用户下已经免密登录了 提示 (yes/no)? 输入yes
ssh rac1
ssh rac2
ssh rac3ssh rac1-priv
ssh rac2-priv
ssh rac3-priv
14、安装依赖
yum install -y binutils compat-libcap1 compat-libstdc-33 elfutils-libelf-devel smartmontools gcc gcc-c glibc glibc-devel ksh libaio libaio-devel libgcc libstdc libstdc-devel libXi libXtst make sysstat kmod-oracleasm unzip
安装cvuqdisk否则集群验证时程序就无法发现共享磁盘。
[rootrac3 ~]# scp rac1:/home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm .[rootrac3 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm
准备中... ################################# [100%]
Using default group oinstall to install package
正在升级/安装...1:cvuqdisk-1.0.9-1 ################################# [100%]
15、安装ASM软件
涉及3个包 备份下载地址https://download.csdn.net/download/u014644574/88671993
# kmod-oracleasm 这个前面已经安装
# yum -y install kmod-oracleasm
# 上传另外两个安装包下地址参考上面安装如下
[rootrac3 ~]# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm
[rootrac3 ~]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm
初始化 ASM
[rootrac3 ~]# oracleasm configure -iDefault user to own the driver interface []: grid # 选择用户grid
Default group to own the driver interface []: asmadmin # 选择用户所在的组asmadminStart Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
初始化
[rootrac3 ~]# oracleasm init
查看 ASM 的状态
[rootrac3 ~]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
# 扫描 ASM 磁盘信息
[rootrac3 ~]# oracleasm scandisks# 重新查看 ASM 磁盘列表
[rootrac3 ~]# oracleasm listdisks
BAK1
DATA1
OCR1
OCR2
OCR3 16、检查环境是否满足安装grid软件
在节点rac1校验新增节点rac3安装环境是否准备好了。在节点rac1中执行。
[gridrac1 ~]$ cluvfy stage -pre nodeadd -n rac3 -fixup我只有一个pdksh 的 包存在性 检查失败pdksh只有在Linux 4上需要Linux 5/6/7都已经被ksh取代忽略改错误。
17、新增节点安装grid软件
接下来在rac1执行如下操作此时要先导入 ignore_preaddnode_checks 环境变量否则后面的命令无法安装
[rootrac1 ~]# su - grid
[gridrac1 ~]$ export IGNORE_PREADDNODE_CHECKSY[gridrac1 ~]$ cd $ORACLE_HOME/oui/bin/
[gridrac1 bin]$ ./addNode.sh CLUSTER_NEW_NODES{rac3} CLUSTER_NEW_VIRTUAL_HOSTNAMES{rac3-vip} CLUSTER_NEW_PRIVATE_NODE_NAMES{rac3-priv}成功后的提示
. 100% 已完成。
保存产品清单完成
WARNING:已在此会话中的一个或多个节点上创建了新的产品清单。但是, 尚未将它注册为此系统的主产品清单。
要注册新的产品清单, 请以 root 权限在节点 rac3 上的 /u01/app/oraInventory/orainstRoot.sh 中运行脚本。
如果不注册产品清单, 可能无法更新所安装的产品或对其打补丁。
以下配置脚本需要以各个新集群节点中的 root 用户的身份执行。以下列表中的每个脚本后面跟随一个节点列表。
/u01/app/oraInventory/orainstRoot.sh #On nodes rac3
/u01/app/11.2.0/grid/root.sh #On nodes rac3
要执行配置脚本, 请执行以下操作:1. 打开终端窗口2. 以 root 身份登录3. 在每个集群节点中运行脚本/u01/app/11.2.0/grid 的 添加集群节点 已成功。执行完之后需要 以root用户在新加节点rac3上执行两个脚本。
# 脚本1
[rootrac3 ~]# /u01/app/oraInventory/orainstRoot.sh# 脚本2
[rootrac3 ~]# /u01/app/11.2.0/grid/root.sh
Check /u01/app/11.2.0/grid/install/root_rac3_2024-01-04_17-04-54.log for the output of root script
执行第二个脚本另开一个窗口查看日志
[rootrac3 ~]# tail -500f /u01/app/11.2.0/grid/install/root_rac3_2024-01-04_17-04-54.logCreating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
Adding Clusterware entries to oracle-ohasd.service
CRS-4402: CSS 守护程序已在独占模式下启动, 但在节点 rac1 (编号为 1) 上发现活动 CSS 守护程序, 因此正在终止
An active cluster was found during exclusive startup, restarting to join the cluster
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user root, privgrp root..
Operation successful.
sh: /bin/netstat: 没有那个文件或目录
Configure Oracle Grid Infrastructure for a Cluster ... succeeded配置成功检查节点是否正常添加到GI在任意一台主机上执行查看后台进程是否正常
可以看见3个节点都正常了。
[gridrac3 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.BAK.dg ora....up.type ONLINE ONLINE rac1
ora.DATA.dg ora....up.type ONLINE ONLINE rac1
ora....ER.lsnr ora....er.type ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type ONLINE ONLINE rac2
ora.OCR.dg ora....up.type ONLINE ONLINE rac1
ora.asm ora.asm.type ONLINE ONLINE rac1
ora.cvu ora.cvu.type ONLINE ONLINE rac2
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type ONLINE ONLINE rac2
ora.ons ora.ons.type ONLINE ONLINE rac1
ora.oradb.db ora....se.type ONLINE ONLINE rac1
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type ONLINE ONLINE rac2
ora....SM3.asm application ONLINE ONLINE rac3
ora....C3.lsnr application ONLINE ONLINE rac3
ora.rac3.gsd application OFFLINE OFFLINE
ora.rac3.ons application ONLINE ONLINE rac3
ora.rac3.vip ora....t1.type ONLINE ONLINE rac3
ora.scan1.vip ora....ip.type ONLINE ONLINE rac2
18、新增节点安装oracle软件
接下来在rac1执行如下操作
[rootrac1 ~]# su - oracle
[oraclerac1 ~]$ export IGNORE_PREADDNODE_CHECKSY
[oraclerac1 ~]$ cd $ORACLE_HOME/oui/bin/
[oraclerac1 bin]$ ./addNode.sh CLUSTER_NEW_NODES{rac3}成功后的提示
在节点上保存产品清单 (2024年1月7日 星期日 下午10时23分34秒 CST)
. 100% 已完成。
保存产品清单完成
WARNING:
以下配置脚本需要以各个新集群节点中的 root 用户的身份执行。以下列表中的每个脚本后面跟随一个节点列表。
/u01/app/oracle/product/11.2.0/db_1/root.sh #On nodes rac3
要执行配置脚本, 请执行以下操作:1. 打开终端窗口2. 以 root 身份登录3. 在每个集群节点中运行脚本/u01/app/oracle/product/11.2.0/db_1 的 添加集群节点 已成功。
请查看 /tmp/silentInstall.log 以获取详细资料。
在新节点 rac3上使用root用户执行脚本
[rootrac3 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
执行结果若有报错如果不需要nmhs这个功能不影响。 如果需要这个功能上传oracle软件手动安装参照上面步骤十二、安装 Oracle 软件
The following environment variables are set as:ORACLE_OWNER oracleORACLE_HOME /u01/app/oracle/product/11.2.0/db_1Copying dbhome to /usr/local/bin ...Copying oraenv to /usr/local/bin ...Copying coraenv to /usr/local/bin ...Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
/bin/chown: 无法访问/u01/app/oracle/product/11.2.0/db_1/bin/nmhs: 没有那个文件或目录
/bin/chmod: 无法访问/u01/app/oracle/product/11.2.0/db_1/bin/nmhs: 没有那个文件或目录
Finished product-specific root actions.
Finished product-specific root actions.19、新增节点创建数据库实例
接下来是在rac1上用DBCA创建实例的过程 在rac1上以Oracle用户登录使用dbca silent模式创建数据库实例
[rootrac1 ~]# su - oracle[oraclerac1 ~]$ dbca -silent -addInstance -nodeList rac3 -gdbName oradb -instanceName orcl3 -sysDBAUserName sys -sysDBAPassword oracle#成功提示
正在添加实例
1% 已完成
2% 已完成
6% 已完成
13% 已完成
20% 已完成
26% 已完成
33% 已完成
40% 已完成
46% 已完成
53% 已完成
66% 已完成
正在进行实例管理。
76% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 /u01/app/oracle/cfgtoollogs/dbca/oradb/oradb0.log。
-silent: 这个选项让DBCA在静默模式下运行。 -addInstance: 这个选项指示添加一个新的数据库实例。 -nodeList rac3: 这个参数指定了新实例将被添加到名为rac3的节点。 -gdbName oradb: 这个参数指定了新实例将加入到名为oradb的全局数据库名db_name或者SERVICE_NAME。 -instanceName orcl3: 这个参数指定了新实例的名称orcl3。 -sysDBAUserName sys: 这个参数指定了具有系统管理员权限的用户名sys。 -sysDBAPassword oracle: 这个参数指定了具有系统管理员权限的用户的密码oracle。
查询节点实例
[gridrac3 ~]$ srvctl status database -d oradb
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行
实例 orcl3 正在节点 rac3 上运行
查看集群状态
[gridrac3 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
ora.asmONLINE ONLINE rac1 StartedONLINE ONLINE rac2 StartedONLINE ONLINE rac3 Startedora.oradb.db1 ONLINE ONLINE rac1 Open2 ONLINE ONLINE rac2 Open3 ONLINE ONLINE rac3 Open
执行如下命令只有gsd是OFFLINE离线状态表示集群正常。
[gridrac1 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac3.gsd application OFFLINE OFFLINE 十四、RAC 删除节点
如果只是需要关闭其中一个节点这个节点需要重启维护直接关闭该节点CRS即可。 如果您关闭了其中一个节点的 CRS该节点将无法处理任何新的连接请求或提供服务直到您重新启动 CRS 并重新加入到集群中。在此期间其他节点将继续正常运行并处理连接和服务请求。
# 停止当前节点crs
[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs#启动当前节点crs
[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs如果实在要删除节点往下看。 这里测试删除节点rac3。
查看节点状态
[gridrac1 ~]$ crsctl stat res -t
[gridrac1 ~]$ crs_stat -t#如下只有gsd是OFFLINE离线状态表示集群正常
[gridrac1 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac3.gsd application OFFLINE OFFLINE1、备份ocr
在添加/删除节点前建议手工备份一下OCR在某些情况下添加/删除节点失败可以通过恢复原来的OCR来解决问题。我这里有自动备份没有再执行手动备份。
# 查看自动备份
[gridrac1 ~]$ ocrconfig -showbackup autorac1 2024/01/07 05:04:27 /u01/app/11.2.0/grid/cdata/rac-cluster/backup00.ocr
rac1 2024/01/07 05:04:27 /u01/app/11.2.0/grid/cdata/rac-cluster/day.ocr
rac1 2024/01/07 05:04:27 /u01/app/11.2.0/grid/cdata/rac-cluster/week.ocr
2、查看将要删除的节点是被pin住如果pin住需要unpin节点
[gridrac3 ~]$ olsnodes -t -s
rac1 Active Unpinned
rac2 Active Unpinned
rac3 Active Unpinned[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl unpin css -n rac3
CRS-4667: Node rac3 successfully unpinned.[gridrac3 ~]$ olsnodes -t -s
rac1 Active Unpinned
rac2 Active Unpinned
rac3 Active Unpinned
3、删除数据库实例
在节点rac1上使用oracle用户删除节点rac3的实例。
[oraclerac1 ~]$ dbca -silent -deleteInstance -nodeList rac3 -gdbName oradb -instanceName orcl3 -sysDBAUserName sys -sysDBAPassword oracle-nodeList rac3 是删除节点名rac3 -gdbName oradb 是全局数据库名oradb -instanceName orcl3 是删除的实例名orcl3 -sysDBAUserName sys 是拥有sysdba权限的oracle用户名称 -sysDBAPassword oracle 是sysdba用户的密码
删除后查看实例已经少了一个监听还是3个
[gridrac1 ~]$ srvctl status database -d oradb
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行[gridrac1 ~]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac2,rac1,rac3
4、禁用和停止监听
[gridrac1 ~]$ srvctl disable listener -n rac3
[gridrac1 ~]$ srvctl stop listener -n rac3# 停止rac3的监听后集群监听只有rac1和rac2
[gridrac1 ~]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac2,rac15、更新删除节点 rac3上的 inventory 清单目录可选在要删除节点 rac3 的 $ORACLE_HOME/oui/bin 目录下执行oracle用户
[oraclerac3 ~]$ cd $ORACLE_HOME/oui/bin
[oraclerac3 bin]$ ./runInstaller -updateNodeList ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{rac3} -local6、卸载 oracle 软件
在要删除节点 rac3 中删除 RAC 数据库软件卸载节点rac3的oracle软件。注意 卸载过程提示[]:直接回车如果提示输入(是 - 是, 否 - 否)输入是
#测试下ssh若提示输入yes
[oraclerac3 ~]$ ssh rac3[oraclerac3 ~]$ cd $ORACLE_HOME/deinstall/
[oraclerac3 deinstall]$ ./deinstall -local## 注意
## 卸载过程提示[]:直接回车
## 如果提示输入(是 - 是, 否 - 否)输入是指定在此 Oracle 主目录中配置的数据库名的列表 []:是否要继续 (是 - 是, 否 - 否)? [否]: 是Oracle 卸载工具已成功清除临时目录。
#################################################################################### ORACLE DEINSTALL DECONFIG TOOL END #############7、更新保留的节点的 inventory 清单目录 在集群的保留节点上 $ORACLE_HOME/oui/bin 目录下执行
[oraclerac1 ~]$ cd $ORACLE_HOME/oui/bin/
[oraclerac1 bin]$ ./runInstaller -updateNodeList ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{rac1,rac2}8、重新配置CRS在要删除节点 rac3上使用root用户执行
[rootrac3 ~]# /u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force[rootrac3 ~]# cd /u01/app/11.2.0/grid/crs/install/
./rootcrs.pl -deconfig -force
保报错-bash: ./rootcrs.pl: /usr/bin/perl: 坏的解释器: 没有那个文件或目录
yum -y install perl kernel-headers kernel-devel
9、从集群中删除节点
停止需要删除节点rac3的CRS
[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs在保留节点运行(任何一个正常节点)使用root用户运行
[rootrac1 ~]# /u01/app/11.2.0/grid/bin/crsctl delete node -n rac3
CRS-4661: Node rac3 successfully deleted.#删除后节点rac3已经没有了
[rootrac1 ~]# /u01/app/11.2.0/grid/bin/olsnodes -t -s
rac1 Active Unpinned
rac2 Active Unpinned10、更新删除节点 rac3上的 inventory 清单目录可选在要删除节点 rac3 的 $ORACLE_HOME/oui/bin 目录下执行grid用户
[gridrac3 ~]$ cd $ORACLE_HOME/oui/bin
[gridrac3 bin]$ ./runInstaller -updateNodelist ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{rac3} CRSTRUE -local11、卸载grid软件
在要删除节点 rac3 执行从rac3中删除集群软件GI。
注意 如果提示输入 直接回车。 如果提示输入(y|n)输入y 如果提示输入(是 - 是, 否 - 否)输入是 中途还是让另外开一个窗口使用root用户执行一个脚本按提示执行就行。 另外开一个窗口执行完后回来继续按回车。
#测试下ssh若提示输入yes
[gridrac3 ~]$ ssh rac3[gridrac3 ~]$ cd $ORACLE_HOME/deinstall
[gridrac3 deinstall]$ ./deinstall –local## 注意
## 如果提示输入 直接回车。
## 如果提示输入(y|n)输入y
## 如果提示输入(是 - 是, 否 - 否)输入是
## 中途还是让另外开一个窗口使用root用户执行一个脚本按提示执行就行。
## 另外开一个窗口执行完后回来继续按回车。输入一个地址或在节点 rac3 上使用的虚拟 IP 的名称[rac3-vip] 直接回车在此 Oracle 主目录中未检测到 ASM 配置。此 Oracle 主目录 (y|n) 中是否配置了 ASM [n]: y是否要继续 (是 - 是, 否 - 否)? [否]: 是以 root 用户或管理员身份在节点 rac3 上运行以下命令。/tmp/deinstall2024-01-14_02-28-54PM/perl/bin/perl -I/tmp/deinstall2024-01-14_02-28-54PM/perl/lib -I/tmp/deinstall2024-01-14_02-28-54PM/crs/install /tmp/deinstall2024-01-14_02-28-54PM/crs/install/rootcrs.pl -force -deconfig -paramfile /tmp/deinstall2024-01-14_02-28-54PM/response/deinstall_Ora11g_gridinfrahome1.rsp -lastnodeOracle 卸载工具已成功清除临时目录。
#################################################################################### ORACLE DEINSTALL DECONFIG TOOL END #############
注意如果不指定-local选项那么默认将会把所有的集群信息全部删除这是非常危险的操作 运行此命令过程中需要进行多次手动配置请注意
在要删除节点 rac3 执行卸载完成后使用root用户删除残留文件。
[rootrac3 ~]# rm -rf /etc/oraInst.loc
[rootrac3 ~]# rm -rf /opt/ORCLfmap
[rootrac3 ~]# rm -rf /etc/oratab
12、更新保留的节点的 inventory 清单目录 在集群的保留节点上 $ORACLE_HOME/oui/bin 目录下执行
[gridrac1 ~]$ cd $ORACLE_HOME/oui/bin
[gridrac1 bin]$ ./runInstaller -updateNodeList ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{rac1,rac2} CRSTRUE -silent13、验证节点是否删除成功
在保留节点上执行
[gridrac1 ~]$ cluvfy stage -post nodedel -n rac3 -verbose执行 删除节点 的后期检查正在检查 CRS 完整性...集群件版本一致性测试已通过
Oracle Clusterware 在节点 rac2 上处于健康状态
Oracle Clusterware 在节点 rac1 上处于健康状态CRS 完整性检查已通过
结果:
删除节点检查通过删除节点 的后期检查成功。 十五、节点的启动和关闭
正常安装好后不需要做任何操全部节点关机重启后会自动加入集群正常工作。
由于单节点操作系统需要重启维护。
查询nodename、dbname、instancename
需要查询需要启动/关闭节点的3个名称 节点名称nodename、数据库名称dbname、实例名称instancename
## 1、查询节点名称
[rootrac3 ~]# uname -n
rac3## 2、查询数据库名称和实例名称
[oraclerac3 ~]$ sqlplus / as sysdba
SQL show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string oradb
db_unique_name string oradb
instance_name string orcl3
service_names string oradb
我这查询结果如下 节点名称 nodename rac3 节点名称 dbname oradb 节点名称 instancename orcl3
关闭过程
1、停止Oracle实例和监听器
#停止实例
srvctl stop instance -d dbname -i instancename
#停止监听
srvctl stop listener -n nodename
请将dbname替换为你的数据库名称instancename替换为实例名称nodename替换为节点名称。
#启动实例
[gridrac3 ~]$ srvctl stop instance -d oradb -i orcl3
#启动监听
[gridrac3 ~]$ srvctl stop listener -n rac3
2、查看集群中实例和监听运行情况 srvctl status database -d dbname
## 查看集群中实例运行情况
[gridrac3 ~]$ srvctl status database -d oradb
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行
实例 orcl3 没有在 rac3 节点上运行## 查看集群中监听运行情况
[gridrac3 ~]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac2,rac1
3、关闭CRS服务
[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs
启动过程
1、启动CRS服务
[rootrac3 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs
CRS-4123: Oracle High Availability Services has been started.
2、启动Oracle实例和监听器
#启动实例
srvctl start instance -d dbname -i instancename
#启动监听
srvctl start listener -n nodename 请将dbname替换为你的数据库名称instancename替换为实例名称nodename替换为节点名称。
#启动实例
[gridrac3 ~]$ srvctl start instance -d oradb -i orcl3
#启动监听
[gridrac3 ~]$ srvctl start listener -n rac3
3、查看集群中实例和监听运行情况
## 查看集群中实例运行情况
[gridrac3 ~]$ srvctl status database -d oradb
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行
实例 orcl3 正在节点 rac3 上运行## 查看集群中监听运行情况
[gridrac3 ~]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac2,rac1,rac3
4、再次查看只有 ora.gsd OFFLINE 是离线其余全部处于ONLINE在线状态。
[gridrac3 ~]$ crs_stat -t#如下只有gsd是OFFLINE离线状态表示集群正常
[gridrac3 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac3.gsd application OFFLINE OFFLINE 十六、cssd故障的处理
问题描述 oracle rac 11.2.0.4 主机重启重启之后发现oracle rac集群无法启动。 节点rac2主机启动后发现rac集群启动不了检查集群进程状态发现cssd一直处于starting状态
[rootrac2 ~]# /u01/app/11.2.0/grid/bin/crsctl status res -t -init
ora.cssd 1 ONLINE OFFLINE STARTING[rootrac2 ~]# tail -f /u01/app/11.2.0/grid/log/rac2/cssd/ocssd.log
由于集群启动到cssd无法继续正常启动查看cssd的日志ocssd.log
发现有报错has a disk HB, but no network HB
我这里错误是由于防火墙未关闭关闭防火墙就好了。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
十七、crs启动失败
1、检查has是否启动
2、检查 ora.crsd 是否启动大多数情况是正因为这个没有启动
/u01/app/11.2.0/grid/bin/crsctl status res -t -init
#分析集群的alter日志
tail -500f /u01/app/11.2.0/grid/log/rac3/alertrac3.log
手动启动crsd
[gridrac3 rac3]$ crsctl start resource ora.crsd -init#查看crsd已经启动成功
/u01/app/11.2.0/grid/bin/crsctl status res -t -init
#启动实例
[gridrac3 log]$ srvctl start instance -d oradb -i orcl3参考
VMware超详细Oracle RAC安装及搭建指南-CSDN博客
VMware超详细Oracle RAC安装及搭建指南_vm部署11g rac-CSDN博客
https://wanggx.blog.csdn.net/article/details/125269870
Oracle11g RAC在一个节点宕掉的情况下添加一个新的节点_一个添加一个-CSDN博客
https://www.cnblogs.com/bicewow/p/13577210.html