使用Shell脚本检查数据库连接

我正在尝试编写一个shell脚本来检查数据库连接。 在我的脚本中,我正在使用该命令

sqlplus uid/pwd@database-schemaname 

连接到我的Oracle数据库。

现在我想要保存这个命令生成的输出(在下降到SQL提示符之前)在一个临时文件中,然后从这个文件中grep /findstring“Connected to”来查看连接是否正常。

任何人都可以请帮我赶上输出,并提出了这个提示,并testing连接是否正常?

Solutions Collecting From Web of "使用Shell脚本检查数据库连接"

使用这样的脚本:

 #!/bin/sh echo "exit" | sqlplus -L uid/pwd@dbname | grep Connected > /dev/null if [ $? -eq 0 ] then echo "OK" else echo "NOT OK" fi 

回声“退出”确保您的程序立即退出(这得到管道到sqlplus)。 -L确保sqlplus不会要求输入密码,如果证书不正确(这也会使其被卡住)。

(> / dev / null只是隐藏grep的输出,我们不需要,因为在这种情况下通过$?访问结果)

您可以通过执行以下操作来避免SQL提示:

 sqlplus uid/pwd@database-schemaname < /dev/null 

SqlPlus立即退出。

现在只需grep上面的输出为:

 if sqlplus uid/pwd@database-schemaname < /dev/null | grep 'Connected to'; then # have connectivity to Oracle else # No connectivity fi 
 #!/bin/bash output=`sqlplus -s "user/pass@POLIGON.TEST " <<EOF set heading off feedback off verify off select distinct machine from v\\$session; exit EOF ` echo $output if [[ $output =~ ERROR ]]; then echo "ERROR" else echo "OK" fi 
 #! /bin/sh if echo "exit;" | sqlplus UID/PWD@database-schemaname 2>&1 | grep -q "Connected to" then echo connected OK else echo connection FAIL fi 

不知道“连接到”消息是否被标准输出或标准错误,这两个检查。 假定Linux使用“qrep -q”而不是“grep …> / dev / null”。

这是一个很好的选项,不会在命令行上显示密码

 #!/bin/bash CONNECT_STRING=<USERNAME>/<PASS>@<SID> sqlplus -s -L /NOLOG <<EOF whenever sqlerror exit 1 whenever oserror exit 1 CONNECT $CONNECT_STRING exit EOF SQLPLUS_RC=$? echo "RC=$SQLPLUS_RC" [ $SQLPLUS_RC -eq 0 ] && echo "Connected successfully" [ $SQLPLUS_RC -ne 0 ] && echo "Failed to connect" exit SQLPLUS_RC