要确保连续的服务器可用性,不要在警报脚本中运行某些前台操作。
当数据库调用一个警报脚本时,服务器有时在诉讼前等待脚本完成。例如:
- 当由于致命错误而调用警报时,服务器会等待该脚本完成向错误日志写信息操作。在某些情况下,警报事件 5 和 6 会在前台运行。
- 一些 Enterprise Replication 事件警报会在前台运行,例如:事件警报 31 、34 、37 和 39 。
因为服务器可能会等待警报程序运行完成,所以不要在该警报脚本中的前台执行以下操作:
- 强制用户与服务器断开连接的 onmode 命令,例如:onmode -u 或 onmode -yuk
。这种类型的 onmode 命令可能会在服务器和警报程序中导致死锁,因为服务器可能等待警报脚本完成而执行 onmode
命令的警报脚本正等待用户会话关闭,并且这些会话中的任意会话正在运行警报脚本。
- 此操作结束可能要花费较长时间或它具有高可变的运行时间。要花费长时间的操作可能导致在操作运行时服务器出现类似没有响应的现象。
如果您需要在警报脚本中执行以上操作,请在使用以下其中之一的操作系统实用程序的后台下执行:
在 UNIX™ 上:使用 nohup 实用程序。例如:nohup onmode
-yuk & 指示 nohup 继续运行此命令,即使它的父命令终止并且有符号 &
在后台运行此命令,因此它不会阻塞警报程序脚本的执行。
On Windows™: 使用带有 /B 标志的 start
实用程序。例如:start /B onmode -yuk 。