一、环境准备
1、环境信息
192.168.184.161 rac01
192.168.184.162 rac02
2、集群网络规划
interface | p19c01 | p19c02 |
---|---|---|
public ip | 192.168.184.161 | 192.168.184.162 |
private ip | 1.1.1.1 | 1.1.1.2 |
vip | 192.168.184.171 | 192.168.184.172 |
scan | 192.168.184.181 |
3、查看集群状态
su - grid
crsctl stat res -t
4、进行连接
注意:
实例名称为p19c0
ip为192.168.184.181
SELECT instance_name FROM v$instance;
SELECT value FROM v$parameter WHERE name='service_names';
SELECT name FROM v$database;
二、常用命令
1、crsctl
crsctl全称是Cluster Ready Services Control,是Oracle Clusterware的核心管理工具,用于控制集群服务、资源状态及配置。
crsctl 管理集群底层服务(如CSS、CRS、EVM等),属于集群层控制。
(1)查看集群中所有资源状态
su - grid
crsctl status res -t
(2)守护进程状态
su - grid
crsctl status res -t -init
(3)启动/关闭 集群服务
需要使用root用户才能执行,且这里的停止只是停止当前节点的服务,另外节点上如果要停止的话,也要进行操作。
su - root
停止
cd /u01/app/19.3.0/grid/bin
./crsctl stop crs
查看集群状态
./crsctl status res -t
启动
cd /u01/app/19.3.0/grid/bin
./crsctl start crs
查看集群状态
需要等一会,大概几分钟,集群才能启动成功,查看集群状态:
./crsctl status res -t
(4)独占模式启动集群
是一种高级恢复模式,适用于集群关键组件(如OCR、表决盘)故障时的修复场景。通过隔离节点并限制服务启动范围,管理员可以安全地执行底层维护操作,避免影响整个集群的稳定性。
先使用root用户关闭集群
两个节点都进行停止。
cd /u01/app/19.3.0/grid/bin
./crsctl stop crs
再使用root用户进行启动独占模式,这里启动独占模式,是在一个节点上进行,这里我在rac01节点进行启动独占模式。
cd /u01/app/19.3.0/grid/bin
./crsctl start crs -excl -nocrs
这里,一定要注意,如果你是两个节点的rac集群,一定要2个节点都先停掉集群,然后再启动独占模式,否则会出现下面的错误:
注意,使用独占模式启动后,在修复完问题后,需要强制关闭集群,再重启集群,否则会出现不一致的问题!!
强制关闭
cd /u01/app/19.3.0/grid/bin
./crsctl stop crs -f
重新启动
这里2个节点要一起正常启动。
cd /u01/app/19.3.0/grid/bin
./crsctl start crs
查看集群状态
cd /u01/app/19.3.0/grid/bin
./crsctl status res -t
启动优点慢,稍等几分钟。
如下,就启动好了
(5)检查集群服务状态:
su - grid
crsctl check crs
(6)集群自启动
在设置之前,先检查是否设置了自启动,注意,节点名称不一样。
cat /etc/oracle/scls_scr/p19c01//root/ohasdstr
cat /etc/oracle/scls_scr/p19c02//root/ohasdstr
内容是enable说明设置了自启动。
禁止自启动
crsctl enable disable crs
设置自启动
crsctl disable crs
(7)查看集群有哪些资源
crsctl status res -t
crsctl stat res -t
crsctl stat res -t -init
(8)查看资源属性
crsctl status res res_name -f
crsctl status res ora.LISTENER.lsnr -f
2、srvctl
srvctl全称是Server Control,是一个核心的命令行工具,主要用于管理集群资源和服务。
srvctl 管理集群资源(如数据库、监听器、服务等),属于应用层控制
(1)查询所有实例的状态
注意集群实例名称
srvctl status database -d racdb
srvctl status database -d p19c0
(2)查看单节点实例状态
注意集群实例名称
srvctl status instance -d racdb -i racdb1
srvctl status instance -d p19c0 -i p19c01
srvctl status instance -d p19c0 -i p19c02
(3)关闭所有节点的实例
注意集群实例名称,一个节点操作就行
srvctl stop database -d racdb
srvctl stop database -d p19c0
查看实例状态
srvctl status database -d p19c0
(4)启动所有节点实例
注意集群实例名称,一个节点操作就行
srvctl start database -d racdb
srvctl start database -d p19c0
查看实例状态
srvctl status database -d p19c0
(5)关闭单节点的实例
注意集群实例名称,一个节点操作即可
srvctl stop instance -d racdb -i racdb2
srvctl stop instance -d p19c0 -i p19c02
查看实例状态
srvctl status database -d p19c0
(6)启动单节点的实例
注意集群实例名称,一个节点操作即可
srvctl start instance -d racdb -i racdb2
srvctl start instance -d p19c0 -i p19c02
查看实例状态
srvctl status database -d p19c0
(7)查看数据库配置
注意集群实例名称
srvctl config database -d racdb
srvctl config database -d p19c0
(8)查询配置了Oracle Grid Infrastructure 网络资源的详细信息
显示配置了 Oracle Grid Infrastructure 网络资源的详细信息,例如子网、节点名称、IP 地址等。
srvctl config network
(9)查询配置了虚拟 IP(VIP)资源的详细信息
显示配置了虚拟 IP(VIP)资源的详细信息,包括 VIP 名称、所在节点和 VIP 地址等。
srvctl config vip -node p19c01
srvctl config vip -node p19c02
srvctl config vip -n p19c01
srvctl config vip -n p19c02
(10)查询当前运行状态下的虚拟 IP(VIP)资源的详细信息
显示当前运行状态下的虚拟 IP(VIP)资源的详细信息,例如节点名称、VIP 地址和状态。
srvctl status vip -node p19c01
srvctl status vip -node p19c02
(11)查询配置了 SCAN(Single Client Access Name)的详细信息
显示配置了 SCAN(Single Client Access Name)的详细信息,包括 SCAN 名称和地址列表。
srvctl config scan
(12)查询当前运行状态下的 SCAN(Single Client Access Name)资源的详细信息
显示当前运行状态下的 SCAN(Single Client Access Name)资源的详细信息,例如名称、地址和状态。
srvctl status scan
(13)查询配置了监听器的详细信息
显示配置了监听器的详细信息,包括监听器名称、所在节点和监听端口。
srvctl config listener
(14)显示当前运行状态下的监听器的详细信息
显示当前运行状态下的监听器的详细信息,例如名称、监听地址和状态。
srvctl status listener
(15)启动或停止指定的监听器
srvctl stop listener
srvctl status listener
srvctl start listener
srvctl status listener
(16)显示配置了 SCAN 监听器的详细信息
显示配置了 SCAN 监听器的详细信息,包括监听器名称、所在节点和监听端口。
srvctl config scan_listener
(17)显示当前运行状态下的 SCAN 监听器的详细信息
显示当前运行状态下的 SCAN 监听器的详细信息,例如名称、监听地址和状态。
srvctl status scan_listener
(18)显示配置了 Automatic Storage Management (ASM) 的详细信息
显示配置了 Automatic Storage Management (ASM) 的详细信息,包括 ASM 实例名称、监听器名称和磁盘组名称等。
srvctl config asm
(19)显示当前运行状态下的 ASM 实例的详细信息
显示当前运行状态下的 ASM 实例的详细信息,例如实例名称、ASM 状态和监听器状态。
srvctl status asm
(20)显示指定磁盘组(这里是 data)的详细信息
显示指定磁盘组(这里是 data)的详细信息,包括磁盘组名称、状态和成员磁盘列表。
srvctl status diskgroup -g data
srvctl status diskgroup -g ocr
(21)移除指定的数据库(这里是 orcl)
移除指定的数据库(这里是 orcl),将删除与数据库相关的资源配置。
srvctl remove database -d orcl
(22)查看集群VIP
srvctl config nodeapps -a
(22)查看集群网卡
oifcfg getif
(23)删除集群网卡
oifcfg delif
(24) 重新配置集群网卡
oifcfg setif
3、asm
ASM(Automatic Storage Management,自动存储管理) 是一个核心组件。
存储管理:
ASM提供平台无关的文件系统、逻辑卷管理及软RAID服务,支持条带化(Striping)和磁盘镜像(Mirroring),实现动态扩展磁盘和I/O负载均衡。
高可用性:
ASM以独立实例运行,管理磁盘组(Disk Group),确保数据库文件在集群节点间共享存储,支持故障切换和负载均衡。
(1)创建磁盘组
create diskgroup FLASH_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK1' ;
(2)查看磁盘组状态
select name,state from v$asm_diskgroup;
(3)磁盘组挂载与卸载
alter diskgroup FLASH_DISK mount/dismount;
(4)查看磁盘名与设备的关系
select name,path from v$asm_disk_stat;
(5)查看每个磁盘组可用大小
select name,allocation_unit_size,free_mb,total_mb from v$asm_diskgroup;
(6)向磁盘组中增加一个磁盘
ALTER DISKGROUP ARCH_DISK ADD DISK '/dev/oracleasm/disks/ASMDISK3' (name ARCHDISK2);
(7)从磁盘组中删除一个磁盘:
ALTER DISKGROUP ARCH_DISK DROP DISK ARCHDISK2;
(8)删除一个磁盘组
确保该磁盘被所有实例所卸载dismount
drop diskgroup FLASH_DISK;
(9)删除一个有内容的磁盘组:
drop diskgroup ocr2 including contents;
(10)手动重新平衡磁盘组
ALTER DISKGROUP data2 REBALANCE
ALTER DISKGROUP data2 REBALANCE power 5
如果不指定power,以初始化参数值ASM_POWER_LIMIT为默认值
对于ASM磁盘组兼容性设定为11.2.0.2或更高,值的操作范围是0到1024用于重新平衡能力。
对于ASM磁盘组兼容性设定为小于11.2.0.2,该值的操作范围是0到11。如果ASM_POWER_LIMIT大于11,则使用11。
(11)关闭ASM
需要与crs一起关闭
srvctl stop crs
4、OCR
OCR(Oracle Cluster Registry) 是核心概念之一,其全称为 Oracle Cluster Registry,中文译为“Oracle集群注册表”。
存储集群配置信息:
OCR是Oracle Clusterware和RAC集群的中央配置存储库,记录以下关键信息:
集群节点列表、数据库实例和服务配置、监听器、VIP、网络资源等集群资源、集群服务依赖关系、集群资源组(Resource Group)的配置
高可用性保障:
OCR确保集群在节点故障时能快速识别并重新分配资源,避免脑裂(Split-Brain)问题
(1)检查OCR
ocrcheck
(2)添加OCR镜像盘
ocrconfig -add +data2
(3)删除OCR镜像盘
ocrconfig -delete +data2
(4)触发OCR备份
需要使用root权限
cd /u01/app/19.3.0/grid/bin/
./ocrconfig -manualbackup
(5)查看OCR备份
cd /u01/app/19.3.0/grid/bin/
./ocrconfig -showbackup
(6)导出OCR
cd /u01/app/19.3.0/grid/bin/
./ocrconfig -export /root/back_ocr_20250515
vim /root/back_ocr_20250515
(7)导入OCR
ocrconfig -import file_name
5、OLR
OLR(Offline Local Registry) 是Oracle Clusterware的关键组件之一,其核心作用是本地存储集群配置信息,用于保障集群的高可用性和故障恢复能力。
本地备份OCR:
OLR是OCR(Oracle Cluster Registry)的本地副本,存储在每个节点的本地磁盘上,用于在OCR损坏或不可用时快速恢复集群配置12。
集群状态同步:
OLR记录集群节点的状态信息,辅助Clusterware管理集群成员和资源。
故障恢复:
当OCR损坏时,可通过OLR重建OCR内容,避免集群服务中断
/etc/oracle/ocr.loc
/etc/oracle/olr.loc
6、VF
VF(Voting File,表决磁盘文件) 是集群高可用架构的核心组件之一,主要用于维护集群节点间的协调与仲裁。
集群心跳机制:
通过“磁盘心跳”确认节点存活状态。
脑裂(Split-Brain)仲裁:
当节点间网络中断时,VF通过多数投票机制(需奇数个VF)决定哪些节点保留集群成员资格,避免数据冲突。
节点状态管理:
记录节点添加、删除等操作信息
(1)替换VF(常用于更换存储)
crsctl replace votedisk diskgroup_name
(2)集群层面查看VF信息
crsctl query css votedisk
(3)这两个视图中包含voting_file列
select voting_file from v$asm_disk;
select * from v$asm_diskgroup;
(4)查看某个磁盘是否为VF
select name,path,voting_file from v$asm_disk;