设为首页 收藏本站
查看: 1085|回复: 0

[经验分享] 在UNIX下让ORACLE定时执行*.sql文件

[复制链接]

尚未签到

发表于 2016-7-28 06:02:40 | 显示全部楼层 |阅读模式
ORACLE数据
库自带的DBMS_JOB功能可以实现定时执行PL/SQL的存储过程,但是如果SQL语句很复杂,SQL语句很多,以及经常要改变SQL语句的写法,用
写PL/SQL存储过程的方法再定时执行会比较繁琐。何况还有一些UNIX系统管理员不会写PL/SQL存储过程,所以我介绍一个简单的shell程序可
以在安装了ORACLE SERVER或CLIENT的UNIX机器上实现定时执行一个*.sql文件。
首先我们在安装了ORACLE SERVER或CLIENT的UNIX机器上连接目的数据库:
 

$sqlplus username/password@servie_name
如果能够成功进入SQL>状态,并执行简单的SQL语句
 

SQL> SELECT SYSDATE FROM DUAL;
表明连接成功,否则检查/$ORACLE_HOME/network/admin/tnsnames.ora里servie_name是否正确定义。
/etc/hostname里是否包含目的数据库的主机名等等(其它的网络检查就不在这里详细列举了)。
接着在scott用户下运行测试的SQL语句:scott_select.sql
 

SQL> SELECT D.DNAME,E.ENAME,E.JOB,E.HIREDATE
FROM EMP E,DEPT D
WHERE TO_CHAR(E.HIREDATE,'YYYY')='1981' AND E.DEPTNO=D.DEPTNO;
然后在目录/oracle_backup/bin/下写一个类似下面的shell文件scott_select.sh
 

------------------------------------------------------------------------
su - oracle -c "sqlplus scott/tiger@servie_name"<<EOF
spool /oracle_backup/log/scott_select.txt;
@/oracle_backup/bin/scott_select.sql;
spool off;
exit;
-------------------------------------------------------------------------
说明:
spool语句把scott_select.sql语句的执行结果输出到/oracle_backup/log/scott_select.txt文件
@符号是执行/oracle_backup/bin/scott_select.sql文件
在要执行的*.sql文件里可以存放DML、DDL等多条SQL语句。
改变scott_select.sh的属性成755, 可以执行
 

$chmod 755 /oracle_backup/bin/scott_select.sh
这样,UNIX系统管理员(root权限)可以利用crontab命令把scott_select.sh加入定时操作队列里。
或者直接编辑OS下的配置文件:
 

Sun Solaris文件/var/spool/cron/crontabs/root
Linux文件/var/spool/cron/root
在root文件后面添加一行(含义:每月的18日4:40分执行scott_select.sh)
 

40 4 18 * * /oracle_backup/bin/scott_select.sh
时间表按顺序是:分钟(0—59) 小时(0—23) 日期(1—31) 月份(1—12) 星期几(0—6)
您可以根据不同的需求来组合它们。
重新启动OS的定时服务,使新添加的任务生效。
 

Sun Solaris
#/etc/rc2.d/S75cron stop
#/etc/rc2.d/S75cron start
Linux
#/etc/rc.d/init.d/crond restart
这样ORACLE数据库就会定时执行scott_select.sql文件,并把结果输出到OS文件scott_select.txt。
如果我们要新写或者修改scott_select.sql文件,直接编辑它就可以了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250277-1-1.html 上篇帖子: oracle数据文件(表空间文件)被rm掉了。表空间如何删除 下篇帖子: Oracle数据库常见真实问题处理步骤(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表