测试服务器的二节点数据库宕掉了,原因不明,需要产环境重新安装。我想上次在自己虚拟机安装实验过一次,应该一天能搞定,事实证明,你永远有学不完的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:
- MTU(最大传输单元): MTU 是指网络中的数据包的最大大小。它是以字节为单位的,表示网络接口可以在单个数据包中传输的最大数据量。通常情况下,MTU 的默认值为1500字节。
- RX-OK(接收成功的数据包数): RX-OK 表示网络接口成功接收并处理的数据包的数量。这些数据包已经通过网络接口传输到了主机的内存中。
- RX-ERR(接收错误的数据包数): RX-ERR 表示由于一些错误而导致网络接口无法接收数据包的数量。这可能是由于物理层面的问题、驱动程序问题或其他原因导致的。
- RX-DRP(接收丢弃的数据包数): RX-DRP 表示网络接口在接收过程中丢弃的数据包的数量。这可能是由于网络接口缓冲区溢出或其他原因导致的。
- RX-OVR(接收缓冲区溢出的次数): RX-OVR 表示网络接口的接收缓冲区溢出的次数。当接收到的数据包超过了接收缓冲区的容量时,就会发生溢出。
- TX-OK(成功发送的数据包数): TX-OK 表示网络接口成功发送的数据包的数量。这些数据包已经通过网络接口传输到了网络中。
- TX-ERR(发送错误的数据包数): TX-ERR 表示由于一些错误而导致网络接口无法发送数据包的数量。这可能是由于物理层面的问题、驱动程序问题或其他原因导致的。
- 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 命令清理磁盘头的一种方法:
- 确认目标磁盘:首先,确保你选择了正确的目标磁盘。清理磁盘头将擦除磁盘的前几个扇区,所以确保你选择的是正确的磁盘,否则可能会导致数据丢失。
- 使用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的故障以确保系统的高可用性。