终于弄清楚一个问题了。linux创建定时任务,定时执行sql,其中分为两个case。
case-1 sql语句较少,因此直接在 shell脚本中 写sql语句。如下:
[oracle@Oracle11g scripts]$ cat add_data.sh#!/bin/bashORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOMEORACLE_SID=prod; export ORACLE_SIDORACLE_UNQNAME=prod; export ORACLE_UNQNAMEORACLE_TERM=xterm; export ORACLE_TERMORACLE_HOSTNAME=ora11g; export ORACLE_HOSTNAMEPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHsqlplus test/test <<EOFspool /home/oracle/scripts/add_data.log append --此处添加spool 为了取到sql的具体操作,留作日志insert into test values(sysdate);commit;spool offexit;
case-2 sql语句较多,因此重新整理了sql脚本,然后在 shell脚本中 写sql脚本。如下:
[oracle@Oracle11g scripts]$ cat add_data02.sh
#!/bin/bashORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOMEORACLE_SID=prod; export ORACLE_SIDORACLE_UNQNAME=prod; export ORACLE_UNQNAMEORACLE_TERM=xterm; export ORACLE_TERMORACLE_HOSTNAME=ora11g; export ORACLE_HOSTNAMEPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHsqlplus test/test <<EOFspool /home/oracle/scripts/add_data02.log append@/home/oracle/scripts/add_data.sql ---此处 add_data.sql 就是所要执行的sql脚本spool offexit;
sql脚本add_data.sql 如下:[oracle@Oracle11g scripts]$ cat add_data.sql
set linesize 1000 pagesize 1000 heading off feedback offinsert into test values(sysdate+1); commit;
以下附带sqlplus中的一些参数设置
一些常用设置:set echo on/off 是否显示脚本中的需要执行的命令 set feedback on/off 是否显示结果之后返回多少行的提示 set linesize n 设置一行最多显示多少字符 set timing on/off 显示sql语句执行多长时间 set termout on/off 在执行脚本时是否在屏幕上输出结果,如果 spool 到文件可以将其关闭 set heading on/off 是否显示查询结果的列名 set pagesize n 设置每页的行数 set trimspool on/off 在 spool 到文件时是否去除输出结果中行末尾的空白字符,之前的隔行可以用该参数去掉,和该参数对应的是 trimout,后者用于屏幕输出 set trimout on/off 是否去掉屏幕上输出结果行末尾的空白字符
转载于:https://www.cnblogs.com/iyoume2008/p/9007642.html
相关资源:Linux下定时自动执行Oracle_SQL