网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.orale的tnsping与TCP/IP的ping命.
.Linux核心数据结构.
.利用PHP创建由Oracle驱动的SOAP服.
.Oracle常见错误代码的分析与解决.
.oracle分析函数(二).
.解决Oracle 9i和Tomcat端口冲突.
.上班第一天,制定学习计划.
.深入探讨ORA-04031的产生原因及解.
.如何在硬碟建置Linux系统之关於 .
.ExactPapers Oracle 1Z0-024 200.
.oracle数据库运算:intersect和m.
.Oracle 中的OOP概念.
.Oracle9i新特性-使用DBMS_METADA.
.优化Oracle数据库性能.
.Oracle与Access表之间的导入和导.
.ORACLE常用傻瓜问题1000问(之十二.
.Oracle8i和Microsoft SQL Server.
.PL/SQL基本语法要素.
.学在oracle数据库中插入特殊符号.
.Oracle数据库系统性能优化策略.

在UNIX下让ORACLE定时执行*.sql文件

发表日期:2008-2-9



  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"<   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文件,直接编辑它就可以了。
上一篇:常用的SQL归纳 人气:617
下一篇:PL/SQL初学者必读:几十个实用的PL/SQL 人气:716
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐