【发布时间】:2021-08-17 01:55:10
【问题描述】:
我正在编写一个 unix 脚本来检查服务器中的数据库连接。当我的数据库连接出错或在连接到数据库时观察到延迟时,我希望输出为“未连接”。如果它被连接,我的输出应该是“已连接”。它是一个 Oracle 数据库。
当数据库连接出现延迟时,我的代码无法运行并且我的脚本被挂起。我应该在我的代码中进行哪些更改,以便它能够处理这两种情况(当我连接到数据库时出错以及在连接到数据库时观察到延迟时)??
if sqlplus $DB_USER/$DB_PASS@$DB_INSTANCE< /dev/null | grep 'Connected to'; then
echo "Connectivity is OK"
else
echo "No Connectivity"
fi
【问题讨论】:
-
那么,它挂了多长时间? 10秒? 10分钟?这里有几个关于检查Oracle数据库状态的问题;他们中的大多数人基本上说“这并不容易”但是您可以通过
tnsping命令进行快速但不完全准确的检查。这只是说明数据库的侦听器是否可访问。 -
即使一个简单的连接工作正常,数据库也可能有任何问题。但是对于一个简单的检查来说就足够了,这取决于要求。我对unix批处理知之甚少,但您至少需要两个进程:一个作为观察者,它需要时间并在需要时杀死另一个,另一个尝试连接。我会在 python、lazarus 或类似的东西中这样做。但可能也可以通过批处理。
-
@Mark Stewart 我希望在数据库未连接超过 5 分钟时触发邮件。我应该如何修改我的代码??
-
您使用哪种风格的 Unix/Linux shell 脚本语言?
ksh或bash或其他?请edit您的问题并将 [unix] 标记替换为适当的脚本语言,或将该信息添加到您的问题文本中。
标签: database oracle shell unix scripting