最近要监控一个没有安装oracle客户端的服务器,如果发现异常,将发送邮件通知。目前已经有现成的oracle发送邮件的存储过程,需要做的是从一个没有oracle客户端的服务器上调用该存储过程。在网上搜索一番后,发现AnySQL是一个不错的免客户端工具。
AnySQL是一个d.c.b.a(www.anysql.net)开发的、类似于SQL*PLUS的工具,它是基于java写的,所以运行这个工具必须要有JDK 1.4或者以上版本。
这个工具的好处是不用安装oracle客户端。
AnySQL只有Windows的版本直接下载, 要在Unix/Linux下使用,需要按照如下步骤做就可以了:
1、下载一个windows版本的AnySQL(http://www.anysql.net/software/anysql.zip)
2、 确定安装目录, 如/usr/AnySQL.
mkdir -p /usr/AnySQL/jlib
3、 将下载得到的文件解压,并将oasql.jar和oracle.jar拷到jlib目录
4、 编辑一个名称为asql的Shell文件, 以方便地运行AnySQL
文件名可随意取,路径也随意。这里就放在AnySQL目录下。
脚本内容如下:
[root@lb AnySQL]# more asql
#!/bin/sh
ASQL_CMD=`which $0`
ASQL_HOME=`dirname $ASQL_CMD`
$JAVA_HOME/bin/java -server -Xms8m -Xmx16m
-cp $ASQL_HOME/jlib/oasql.jar com.asql.tools.ASQL $*
注意:必须要安装了JDK,并设置了JAVA_HOME。
5、 将安装目录放到PATH路径中, 这样在任何目录运行asql就启动了AnySQL.
编辑.bash_profile文件,把asql的路径添加到PATH变量中。
vi ~/.bash_profile
export PATH=$PATH:/usr/AnySQL
保存后,执行source使环境变量生效。
source ~/.bash_profile
6、编写调用发送邮件存储过程脚本
文件名可随意取,路径也随意。这里就放在AnySQL目录下。
[root@lb AnySQL]# more Send_Mail
#set env
ORACLE_USER=system
ORACLE_PASSWORD=xxx
ORACLE_SID=xxx
ORACLE_IP=xxx.xxx.xxx.xxx
ORACLE_PORT=1521
# function
help_msg()
{
cat << help
+----------------------------------------------------+
+ you enter $# parameters
+ the total paramenter number must be $paranum
+ 1st : the email context
+ 2nd : the email title
+ 3nd : the Address the mail come from
+ 4th : the Address the mail sent to
+ 5th : 'the Email Server Address
+----------------------------------------------------+
help
}
# validate the parameters
paranum=5
if [ $# -lt $paranum ]
then
help_msg
exit
fi
#if no errors ,send email by oracle
asql <conn ${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_IP}:${ORACLE_PORT}:${ORACLE_SID}
set queryonly false
exec SendEmail($1,$2,$3,$4,$5);
exit
EOF
这里由于Send_Mail已经包含在$PATH中了,所以,可以像一般命令一样调用它了。
到这里,就差不多了。什么地方需要发送邮件的话,只需要写一个简单脚本调用Send_Mail就可以了。
参考文档:
http://www.anysql.net/anysql/anysql_in_unix.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63779/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/231499/viewspace-63779/