RAC 攻击 - Oracle 集群数据库实战 / RAC 攻击 12c / 节点隔离
外观
本实验的目标是通过强制触发 Oracle 集群软件的内置隔离功能,来演示 Oracle 集群软件的隔离能力。在 Oracle 集群软件中,隔离是在节点级别处理的,通过重启无响应或故障节点。这类似于“射杀另一台机器”(STOMITH)算法,但实际上是自杀而不是影响另一台机器。在线上有很多好的信息来源。
- 从一个正常运行的集群开始,数据库实例正常运行。 监控每个节点上的集群软件日志文件。在每个节点上,打开一个新的窗口并运行以下命令[oracle@<node_name> ~]$ tail –f /u01/app/12.1.0/grid/log/`hostname -s`/crsd/crsd.log [oracle@<node_name> ~]$ tail –f /u01/app/12.1.0/grid/log/`hostname -s`/cssd/ocssd.log
- 我们将模拟“拔掉”网络接口,通过将一个私有网络接口关闭。在 collabn2 节点上,通过运行以下命令(作为 root 用户)关闭私有网络接口。 [root@collabn2 ~]# ifconfig eth1 down或者,您也可以通过在 VirtualBox 中物理地将 **内部网络** 接口断开连接来模拟此操作。 转到 collabn2 -> 设置 -> 网络 -> 适配器 2,取消选中 **电缆已连接** 并单击 **确定**。
- 运行此命令后,观察您在步骤 2 中开始监控的日志文件。您应该在这些日志文件中看到错误,最终(可能需要一两分钟,实际上)您将观察到一个节点自行重启。 如果您使用 **ifconfig** 触发了故障,则该节点将重新加入集群,并且实例应该自动启动。 如果您使用 **VirtualBox** 触发了故障,则该节点将不会重新加入集群。
- 哪个文件包含指示节点未重新加入集群原因的错误消息?
- 重启的节点总是与发生故障的节点相同吗?为什么或为什么不?
在我的 12.1.0.2 实验环境中,集群软件日志文件的位置现在位于 $ORACLE_BASE/diag/crs/$HOSTNAME/crs/trace 目录下的 diag_dest 中。 例如:/u01/app/oracle/diag/crs/collabn1/crs/trace/alert.log |