历史遗留问题-Oracle 19c RAC 安装时节点连接性问题

时间:2024-05-01 07:24:25

测试服务器的二节点数据库宕掉了,原因不明,需要产环境重新安装。我想上次在自己虚拟机安装实验过一次,应该一天能搞定,事实证明,你永远有学不完的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操作命令-****博客

问题三 连接性问题

这里需要关注节点连接性问题,虚拟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通,

查看日志:

排除故障:
1.查看/etc/sysconfig/network信息
没错
2.ping域名能ping通,说明域名解析没有问题
3.!!!节点一节点二ping ens256虚拟网关ping不通
4.ping127.0.0.1

没问题 说明本地TCP/IP 协议栈在你主机上是正常工作的。本地回环地址用于在同一台主机内部进行通信,如果能够 ping 通本地回环地址,说明 TCP/IP 协议栈和网络接口都是正常的。确认 TCP/IP 没有问题,但这并不能保证在不同主机之间的 TCP 连接也是正常的。

5.traceroute 跟踪路由 、route -n 、ARP信息

traceroute to 192.168.xx.15 (192.168.xx.15), 30 hops max, 60 byte packets

1 oratest01-priv (192.168.xx.xx) 0.065 ms 0.016 ms 0.015 ms

[spduser@oratest01 ~]$ traceroute 192.168.59.16

traceroute to 192.168.xx.16 (192.168.xx.16), 30 hops max, 60 byte packets

1 oratest01-priv (192.168.xx.15) 3004.888 ms !H 3004.716 ms !H 3004.677 ms !H

目标主机不可达。可能由于网络配置问题、路由配置问题或目标主机故障等原因导致的。需要检查网络配置、路由设置以及目标主机的可用性。

arp -n查看ARP路由缓存表

网卡ens256 incomplete设备之间的通信尚未建立,或者设备未响应ARP请求

arp -s加入路由缓存表失败

6.查看网卡信息 ifconfig 、netstat -i查看丢包
一节点

netstat -i

Kernel Interface table

Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

ens192 1500 20614543 0 75 0 2921261 0 0 0 BMRU

ens256 1500 38513814 0 10 0 20682 0 0 0 BMRU

lo 65536 74733504 0 0 0 74733504 0 0 0 LRU

virbr0 1500 0 0 0 0 0 0 0 0 BMU

二节点

netstat -i

Kernel Interface table

Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

ens192 1500 313208 0 10 0 48642 0 0 0 BMRU

ens256 1500 3 0 0 0 7578 0 0 0 BMRU

lo 65536 24079 0 0 0 24079 0 0 0 LRU

virbr0 1500 0 0 0 0 0 0 0 0 BMU

ifconfig

ens192:

RX packets 312226 bytes 100760001 (96.0 MiB)

RX errors 0 dropped 10 overruns 0 frame 0

TX packets 48606 bytes 8722560 (8.3 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens256:

RX packets 3 bytes 180 (180.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 7578 bytes 1270250 (1.2 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

!!!!ens192网卡 TX 过程中丢包了 10 个,而 ens256 网卡没有丢包。可能是网络拥塞、硬件故障、驱动程序问题等

ps:

  1. MTU(最大传输单元): MTU 是指网络中的数据包的最大大小。它是以字节为单位的,表示网络接口可以在单个数据包中传输的最大数据量。通常情况下,MTU 的默认值为1500字节。
  2. RX-OK(接收成功的数据包数): RX-OK 表示网络接口成功接收并处理的数据包的数量。这些数据包已经通过网络接口传输到了主机的内存中。
  3. RX-ERR(接收错误的数据包数): RX-ERR 表示由于一些错误而导致网络接口无法接收数据包的数量。这可能是由于物理层面的问题、驱动程序问题或其他原因导致的。
  4. RX-DRP(接收丢弃的数据包数): RX-DRP 表示网络接口在接收过程中丢弃的数据包的数量。这可能是由于网络接口缓冲区溢出或其他原因导致的。
  5. RX-OVR(接收缓冲区溢出的次数): RX-OVR 表示网络接口的接收缓冲区溢出的次数。当接收到的数据包超过了接收缓冲区的容量时,就会发生溢出。
  6. TX-OK(成功发送的数据包数): TX-OK 表示网络接口成功发送的数据包的数量。这些数据包已经通过网络接口传输到了网络中。
  7. TX-ERR(发送错误的数据包数): TX-ERR 表示由于一些错误而导致网络接口无法发送数据包的数量。这可能是由于物理层面的问题、驱动程序问题或其他原因导致的。
  8. TX-DRP(发送丢弃的数据包数): TX-DRP 表示网络接口在发送过程中丢弃的数据包的数量。这可能是由于网络拥塞或其他原因导致的。

这里做出假设;

假设一:在安装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"验证失败-****博客

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”-****博客

5.搭建rac时,DNS检查失败_verifying dns/nis name service ‘rac-scan’ ...faile-****博客

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 命令清理磁盘头的一种方法:

  1. 确认目标磁盘:首先,确保你选择了正确的目标磁盘。清理磁盘头将擦除磁盘的前几个扇区,所以确保你选择的是正确的磁盘,否则可能会导致数据丢失。
  2. 使用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个扇区,你可以根据需要调整这个值。
  1. 等待命令完成:命令执行完成后,等待一段时间以确保所有数据都已经被擦除。这可能会花费一些时间,具体取决于磁盘的大小和速度。
  2. 验证清理结果:完成后,你可以使用其他工具或命令来验证磁盘头是否已被成功擦除。例如,你可以使用 hexdump 命令来检查磁盘的前几个扇区是否都是零值。

这种方法能够相对彻底地擦除磁盘头,但请注意,即使是在擦除后,仍然有可能恢复部分数据,特别是在物理损坏的情况下。如果你对数据的安全性有更高的要求,你可能需要考虑使用专业的数据擦除工具。

每个磁盘扇区大小一样吗?

磁盘扇区大小不一定都相同,它可以因磁盘类型、制造商和规格而异。然而,在大多数情况下,磁盘扇区大小通常是512字节或4KB。

在过去,512字节的扇区大小是最常见的,它被广泛应用于许多旧的硬盘和存储设备。然而,随着技术的发展和新型存储设备的出现,现在越来越多的磁盘开始采用4KB的扇区大小,这被称为高级格式(Advanced Format)。

一些最新的硬盘甚至支持更大的扇区大小,如4096字节或更高,这种情况下,它们通常被称为物理扇区大小(Physical Sector Size)。

值得注意的是,虽然磁盘扇区大小可能不同,但操作系统和文件系统通常会将其视为逻辑扇区,以简化操作和管理。在操作系统中,你通常不需要关心磁盘的物理扇区大小,因为大多数操作系统和文件系统会自动处理这些细节。

这个和 dd if=/dev/zero of=/dev/asm-data2 bs=8k count=1000 有什么区别

这两个命令都是使用 dd 命令来向磁盘写入零值来清理数据,但有一些区别:

  1. 写入数据的量
    • 第一个命令 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大小的数据块,而不会覆盖整个磁盘。
  1. 块大小
    • 第一个命令中使用的块大小是4MB(bs=4M),而第二个命令中使用的块大小是8KB(bs=8k)。块大小的选择会影响清理的效率,较大的块大小通常可以提高写入的速度。
  1. 数据覆盖程度
    • 第一个命令会覆盖整个磁盘,从而彻底清理掉所有数据,因为它会一直写入直到磁盘被填满或者遇到错误为止。
    • 第二个命令只会清理磁盘的前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的故障以确保系统的高可用性。