用AnySQL在沒有oracle客戶端的伺服器上傳送郵件

space6212發表於2019-06-06


最近要監控一個沒有安裝oracle客戶端的伺服器,如果發現異常,將傳送郵件通知。目前已經有現成的oracle傳送郵件的儲存過程,需要做的是從一個沒有oracle客戶端的伺服器上呼叫該儲存過程。在網上搜尋一番後,發現AnySQL是一個不錯的免客戶端工具。


AnySQL是一個d.c.b.a()開發的、類似於SQL*PLUS的工具,它是基於java寫的,所以執行這個工具必須要有JDK 1.4或者以上版本。
這個工具的好處是不用安裝oracle客戶端。

AnySQL只有Windows的版本直接下載, 要在Unix/Linux下使用,需要按照如下步驟做就可以了:

1、下載一個windows版本的AnySQL(http:///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:///anysql/anysql_in_unix.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63779/,如需轉載,請註明出處,否則將追究法律責任。

相關文章