测试服务器的二节点数据库宕掉了,原因不明,需要产环境重新安装。我想上次在自己虚拟机安装实验过一次,应该一天能搞定,事实证明,你永远有学不完的bug!!!!
首先查看一下系统的基本信息,按理说应该没什么问题,但是还好检查了
发现节点二的Oracle环境变量都是错的,ORACLE_HOME基目录、掩码等错了,多了几个字符比如umask 022写成Pumask 022、$ORACLE_HOME=写成$ORACLE_HOMESHCBAK=????,这是宕机了吗,这应该是二节点就应该没装上吧???
用户和用户组缺少
这里我遇到过,在安装Grid时会检查,如果两个节点组号,用户ID不一样,会报错提醒,
可以通过id 用户 查看id和所属组
cat etc/group 查看有哪些组 组号复制出来 对比一下 或者 vi 里用 "/"查找对比
ps:不知道Linux目录结构功能的,可以查看往期Linux的专栏
public IP能ping通,priv ping 不通,重点,后面要说。
接着停掉集群清理环境,二节点虽然宕机了,但是也要停掉,不然一些守护进程杀不掉
问题一 杀进程时
ps -ef | grep has
crsctl stop has
在清理 二节点 has 进程的时候
[root@oratest01 bin]# ./crsctl stop has
CRS-4639: Could not contact Oracle High Availability Services CRS-4000: Command Stop failed, or completed with errors.
有一个子进程杀掉后会导致会话关闭,重新连接后,第一时间没有ps -ef | grep has进程
一会有一个进程,接着子进程又都出来了。
这里做发现忽略,后面没发现什么问题
问题二 清理磁盘头
Oracle在安装时选择ASM磁盘需要是干净的,需要把之前的信息清掉
我第一遍清理dd if=/dev/zero of=/dev/asm-ocr1 bs=8k count=1000
没清掉,难道是bs问题,这里我想难道是操作系统扇区(写数据)大小需要和bs保持一致没清理掉?
查看扇区大小 :fdisk -l /dev/asm-ocr1 显示210多G 扇区512K
再清 : dd if=/dev/zero of=/dev/asm-ocr1 bs=512k count=1000 还是没清掉。
原来bs大小值和清理数据速率有关,不用和扇区保持一直,那速率的就是操作系统的一些性能指标了(之前专栏里应该有)
那是什么原因呢?数据太多了 bs*count = 500M 没清干净呗?
全清理一遍: dd if=/dev/zero of=/dev/asm-data2 bs=4M status=progress
还是没删干净,安装界面没有可选择磁盘。
ok,注意地方来了,按理说是删干净了,也确实删干净了。原因是,刷新,没错,界面没反应过来,上一步下一步选择所偶有盘、可用盘刷新是没用的,要重新选择路径。
我的理解是,对比Web项目,一般有一个会话缓存, cookie和session分别保存到服务器和浏览器里面,保存当前的操作的一些缓存信息,比如图片、视频(流格式)等在yml里可以配置刷新时间,(用户操作刷新、实时刷新),这里是OUI界面,道理应该差不多,在选择路径时,读取到了第一次的磁盘信息,上一步下一步应该是没有刷新。“刷新”这个任务只在选择磁盘路径的时候生效。
所以总结就是,注意清理的大小,安装前我清理的8k*1000=5M没干净,后面清理500M就没了,OCR还能理解DATA数据盘就存这点信息吗?下次应该看看磁盘使用容量和剩余容量。而且物理文件没有删?
dd用法请查看:dd操作命令-CSDN博客
问题三 连接性问题
这里需要关注节点连接性问题,虚拟IP的两个节点不通,现在还没有解决,好像是TCP连接问题
这里贴一些参考命令
Host位置 | /etc/hosts hostnamectl set-hostname myhost |
网络IP位置 | /etc/sysconfig/network |
查看防火墙规则 | iptables -L |
查看路由表 | route -n |
进程监视器 | sestatus |
重新启动网络服务 | systemctl restart network systemctl start network |
查看TCP、UDP等 | netstat -nutlp |
Virtual IP出现故障,系统可能会影响高可用性功能,但不会影响Grid和数据库的安装过程。
解决不了就继续往下装,失败重新再清理环境呗😭
但是在执行脚本之前,数据库信息没有同步到二节点,,但是公共IP时没问题的,可以ping通,
查看日志:
这里做出假设;
假设一:在安装RAC时同步节点信息需要priv IP 保持畅通
假设二:设备网络故障
之前总结了一些安装时可以忽略的错误,大家可以看看:
1.物理内存推荐8G 只有4G 忽略,tip可以把swap内存设大一点。
2.因为测试环境,没有使用DNS,删除resolv.conf文件即可。或者直接 忽略该失败
# mv /etc/resolv.conf /etc/resolv.conf_bak
RAC GI安装,报"Task resolv.conf Integerity"验证失败-CSDN博客
3.支持配更多SCAN最多三个,这里只配了一个192.168.66.145 SCAN,忽略
PRVG-11368 : A SCAN is recommended to resolve to "3" or more IP addresses, but SCAN "oracle19c-rac-scan1" resolves to only "192.168.66.145"
4.19C RAC PRVG-11250 : “The check “RPM Package Manager database” was not performed”-CSDN博客
5.搭建rac时,DNS检查失败_verifying dns/nis name service ‘rac-scan’ ...faile-CSDN博客
Chat GPT
GPT归档,现在可以分享GPT提问链接了,因为是公司的服务器,所以就不透露详细的了,这里贴几个当时解惑的几个问题
脱敏事故提问 + Grid安装时的两个脚本的作用
https://chat.openai.com/share/3c9d02de-b6aa-4c97-a448-b856c2f013ef
dd 命令的格式
dd [选项]
dd 命令是一个用于复制和转换文件的工具,它可以从输入文件中读取数据,然后将数据写入到输出文件中,同时还支持对数据进行转换和处理。下面是一些常用的选项:
- if=<输入文件>:指定输入文件的路径。如果未指定输入文件,默认从标准输入中读取。
- of=<输出文件>:指定输出文件的路径。如果未指定输出文件,默认将数据写入到标准输出。
- bs=<块大小>:指定每个数据块的大小,可以使用不同的单位,如字节(b)、千字节(k)、兆字节(m)等,默认为512字节。
- count=<块数>:指定要复制或转换的数据块数量。
- seek=<偏移块数>:在写入数据时跳过指定数量的块。
- skip=<跳过块数>:在读取数据时跳过指定数量的块。
- status=<信号>:指定进程状态报告的信号,默认为info,可以使用none禁用状态报告。
- conv=<转换选项>:指定对数据进行的转换操作,常用的选项包括:
-
- notrunc:在写入数据时不截断输出文件。
- noerror:忽略读取或写入过程中的错误并继续进行操作。
- sync:在每个块之间进行同步,以确保数据已写入磁盘。
- iflag=<输入标志>:指定输入操作的标志,常用的标志包括direct(直接I/O操作)和sync(同步I/O操作)。
- oflag=<输出标志>:指定输出操作的标志,常用的标志包括direct(直接I/O操作)和sync(同步I/O操作)。
如何清理干净磁盘头
清理磁盘头通常意味着擦除磁盘的前几个扇区(通常称为磁盘头),以确保没有任何旧数据残留。这可以通过多种方法来实现,其中一种常见的方法是使用 dd 命令。
以下是使用 dd 命令清理磁盘头的一种方法:
- 确认目标磁盘:首先,确保你选择了正确的目标磁盘。清理磁盘头将擦除磁盘的前几个扇区,所以确保你选择的是正确的磁盘,否则可能会导致数据丢失。
- 使用dd命令擦除磁盘头:执行以下命令来使用 dd 命令擦除磁盘头。在这个例子中,我们将使用 /dev/zero 设备来写入零值来擦除磁盘头。
sudo dd if=/dev/zero of=/dev/your_disk bs=512 count=100
其中:
-
- if=/dev/zero:从 /dev/zero 设备读取零值。
- of=/dev/your_disk:将数据写入到你选择的目标磁盘。
- bs=512:每个数据块的大小为512字节,这是磁盘扇区的大小。
- count=100:指定要写入的数据块数量。这里写入100个扇区,你可以根据需要调整这个值。
- 等待命令完成:命令执行完成后,等待一段时间以确保所有数据都已经被擦除。这可能会花费一些时间,具体取决于磁盘的大小和速度。
- 验证清理结果:完成后,你可以使用其他工具或命令来验证磁盘头是否已被成功擦除。例如,你可以使用 hexdump 命令来检查磁盘的前几个扇区是否都是零值。
这种方法能够相对彻底地擦除磁盘头,但请注意,即使是在擦除后,仍然有可能恢复部分数据,特别是在物理损坏的情况下。如果你对数据的安全性有更高的要求,你可能需要考虑使用专业的数据擦除工具。
每个磁盘扇区大小一样吗?
磁盘扇区大小不一定都相同,它可以因磁盘类型、制造商和规格而异。然而,在大多数情况下,磁盘扇区大小通常是512字节或4KB。
在过去,512字节的扇区大小是最常见的,它被广泛应用于许多旧的硬盘和存储设备。然而,随着技术的发展和新型存储设备的出现,现在越来越多的磁盘开始采用4KB的扇区大小,这被称为高级格式(Advanced Format)。
一些最新的硬盘甚至支持更大的扇区大小,如4096字节或更高,这种情况下,它们通常被称为物理扇区大小(Physical Sector Size)。
值得注意的是,虽然磁盘扇区大小可能不同,但操作系统和文件系统通常会将其视为逻辑扇区,以简化操作和管理。在操作系统中,你通常不需要关心磁盘的物理扇区大小,因为大多数操作系统和文件系统会自动处理这些细节。
这个和 dd if=/dev/zero of=/dev/asm-data2 bs=8k count=1000 有什么区别
这两个命令都是使用 dd 命令来向磁盘写入零值来清理数据,但有一些区别:
- 写入数据的量:
-
- 第一个命令 dd if=/dev/zero of=/dev/asm-data2 bs=4M 会向磁盘 /dev/asm-data2 写入零值,直到磁盘被填满或者遇到写入错误为止。这样会覆盖整个磁盘的所有扇区,从而清理掉全部数据。
- 第二个命令 dd if=/dev/zero of=/dev/asm-data2 bs=8k count=1000 则只会向磁盘 /dev/asm-data2 写入零值,重复1000次。这样只会清理磁盘的前1000个8KB大小的数据块,而不会覆盖整个磁盘。
- 块大小:
-
- 第一个命令中使用的块大小是4MB(bs=4M),而第二个命令中使用的块大小是8KB(bs=8k)。块大小的选择会影响清理的效率,较大的块大小通常可以提高写入的速度。
- 数据覆盖程度:
-
- 第一个命令会覆盖整个磁盘,从而彻底清理掉所有数据,因为它会一直写入直到磁盘被填满或者遇到错误为止。
- 第二个命令只会清理磁盘的前1000个8KB大小的数据块,因此清理的数据量较少,可能不足以覆盖所有的原始数据。
综上所述,第一个命令通常会更彻底地清理磁盘上的数据,而第二个命令可能只是部分清理,具体取决于磁盘的大小和所需的清理程度。
Virtual IP(虚拟IP)
Virtual IP是用于提供高可用性和故障切换的IP地址。它是一个虚拟的IP地址,可以在集群中的多个节点之间进行切换。当某个节点发生故障时,Virtual IP会自动切换到其他健康的节点上,以保证数据库服务的连续性。Virtual IP通常与VIP资源相关联,由Oracle Clusterware动态管理。这个坏了能继续装Grid 和 数据库吗
如果Virtual IP(虚拟IP)出现故障,通常不会影响Grid和数据库的安装,因为Virtual IP只是用于提供高可用性和故障切换的IP地址,它并不是Grid和数据库安装的必需组件。
Grid和数据库的安装通常会依赖于各种资源和配置,包括主机IP地址、网络连接、存储配置等,而不仅仅是Virtual IP。如果Virtual IP出现故障,系统可能会影响高可用性功能,但不会影响Grid和数据库的安装过程。
当Virtual IP出现故障时,可能会影响Oracle Clusterware的高可用性功能,导致无法实现自动故障切换和连续性保证。在这种情况下,可能需要手动修复Virtual IP或其他相关配置,以恢复集群的正常运行。
因此,即使Virtual IP出现故障,你仍然可以继续进行Grid和数据库的安装,但可能需要在后续步骤中解决Virtual IP的故障以确保系统的高可用性。