AIX下自动执行Oracle中的sql语句
在日常的工作中,我们经常要使用crontab计划自动执行shell程序。例如:数据备份、日志清理、机器重启等等。前些时候,有朋友问:为什么使用crontab自动执行oracle的sql语句不能实现。下面我就讲述一下如何自动执行oracle的sql语句。
首先,建立一个sql文件,并且在sqlplus中测试,手工运行这个sql文件看是否能够成功:
test.sql文件内容:
select count(*) from test;
然后进入sqlplus:
sqlplus scott/tiger
运行test.sql文件:
SQL>start test.sql
如果显示了sql语句的结果,则表示此sql文件能够正常执行。
其次,我们建立一个shell文件,要注意的是这个shell文件中必须将oracle的初始环境设置加上去,才能让unix系统能够执行sqlplus程序,下面给出一个shell例子(文件名test.sh):
ORACLE_OWNER=oracle
ORACLE_TERM=vt100
DISPLAY=`hostname`:0.0
ORACLE_SID=test
ORACLE_USER=$HOME
ORACLE_BASE=/disk01/oracle
ORACLE_HOME=$ORACLE_BASE/product/8.1.7
ORACLE_DOC=$ORACLE_HOME/doc
NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/ccs/lib
PATH=$PATH:$ORACLE_HOME/bin:/bin:/usr/ccs/bin:/usr/local/bin
TEMP=/tmp
TMPDIR=/tmp
export ORACLE_OWNER ORACLE_TERM DISPLAY ORACLE_SID ORACLE_USER ORACLE_BASE ORACLE_HOME ORACLE_DOC NLS_LANG ORA_NLS33 LD_LIBRARY_PATH PATH TEMP TMPDIR
cd /usr/test/sql
/disk01/oracle/product/8.1.7/bin/sqlplus scott/tiger <<EOF
@ test.sql
exit
EOF
最后,我们建立一个crontab计划,让unix定期执行:
00 20 * * * /usr/test/sql/test.sh
就此,一个自动执行sql语句的crontab就建成了。大家可以通过mail检查crontab的执行情况。(via)(Crontab实例)(Crontab 笔记)

下载:
访问:



