RAC 攻击 - Oracle 集群数据库实战/集群软件调用
外观
本实验的目的是演示 Oracle 快速应用程序通知 (FAN) 调用。在 11g 之前的版本中,这些也被称为 Oracle 集群软件调用。
此功能是 Oracle 集群软件的一个相对鲜为人知的特性,它可以触发一个脚本(或一个完整的目录)来执行您可能希望在集群范围事件发生时执行的任何任务。
有关更多信息,请参阅此处的文档:http://download.oracle.com/docs/cd/B28359_01/rac.111/b28254/hafeats.htm#BABGCEBF
在本练习中,我们将配置每个节点上的一些 FAN 调用脚本,然后触发各种集群事件以查看每个事件如何触发调用脚本。
- 从一个正常的、运行的集群开始,两个节点都启动并运行。
- 从每个服务器上的一个 shell 提示符(以 oracle 用户身份登录)开始,导航到 /u01/grid/oracle/product/11.2.0/grid_1/racg/usrco。使用 vi(或您喜欢的编辑器)在其中创建一个名为 callout1.sh 的文件。文件内容应为:#!/bin/ksh umask 022 FAN_LOGFILE=/tmp/`hostname`_uptime.log echo $* "reported="`date` >> $FAN_LOGFILE &注意在主机名和日期命令周围使用反引号。
- 确保使用以下命令将文件的权限设置为 755:[oracle@<node_name> ~]$ chmod 755 \ > /u01/grid/oracle/product/11.2.0/grid_1/racg/usrcocallout1.sh
- 监视每个节点上集群软件的日志文件。在每个节点上,启动一个新窗口并运行以下命令:[oracle@<node_name> ~]$ tail –f \ /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/crsd/crsd.log
- 接下来,我们需要触发一个事件,该事件将导致调用触发。一个这样的事件是节点关闭。关闭节点 collabn2 上的集群软件。[root@collabn2 ~]# crsctl stop crs 正在停止资源。这可能需要几分钟。成功停止了 Oracle 集群软件资源正在停止集群同步服务。正在关闭集群同步服务守护进程。已成功发出关闭请求。
- 执行完此命令后,观察您在步骤 2 中开始监视的日志文件。由于我们在测试集群上设置了很长的超时时间,您可能需要等待几分钟才能看到任何内容。
- 您最终应该观察到表明节点已失败的条目,紧随其后的是在 /tmp/<hostname>_uptime.log 文件中放置的一个条目,表明节点已关闭。
- 注意哪些成员运行集群软件调用脚本。(一个幸存的成员可以运行命令来通知客户端和/或应用程序服务器集群节点之一已关闭。)
- 重新启动集群软件。是否有节点启动事件?[root@collabn2 bin]# crsctl start crs
- 尝试关闭其中一台虚拟机 - 与之前的测试有什么不同?如果您禁用 Linux 网络接口或 VMware 网络卡会怎样?
- 您可以根据需要进行更多测试。另一个有趣的事件是数据库实例意外关闭。安装数据库后,请返回本实验测试这种情况。[oracle@collabn2 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 1 14:49:29 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options SQL> shutdown abort; ORACLE 实例已关闭。SQL> INSTANCE VERSION=1.0 service=RAC.vm.ardentperf.com database=RAC instance=RAC2 host=collabn2 status=down reason=user timestamp=01-Aug-2008 12:34:02 reported=Fri Aug 1 12:34:03 CDT 2008
集群软件调用的一个流行用途是通知管理员(可能是通过电子邮件)集群事件已发生。您可以使用脚本的参数(您将在我们创建的日志文件中看到参数)来有条件地执行通知。例如,您可能不希望在节点意外崩溃时通知任何人。通过测试这些参数,您可能能够仅在需要时发送通知。 |