熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

UNIX下讓ORACLE定時執行*.sql文件

2013-11-13 22:13:08  來源: Oracle 

  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/tnsnamesora 裡servie_name是否正確定義
   /etc/hostname 裡是否包含目的數據庫的主機名
  
   等等(其它的網絡檢查就不在這裡詳細列舉了)
  
   接著在scott用戶下運行測試的SQL語句:scott_selectsql
  
   SQL> SELECT DDNAMEEENAMEEJOBEHIREDATE
   FROM EMP EDEPT D
   WHERE TO_CHAR(EHIREDATEYYYY)= AND EDEPTNO=DDEPTNO;
  
   然後在目錄/oracle_backup/bin/下寫一個類似下面的shell文件scott_selectsh
  
   su oracle c sqlplus scott/tiger@servie_name<   spool /oracle_backup/log/scott_selecttxt;
   @/oracle_backup/bin/scott_selectsql;
   spool off;
   exit;
  
   說明
   spool語句把scott_selectsql語句的執行結果輸出到/oracle_backup/log/scott_selecttxt文件
   @符號是執行/oracle_backup/bin/scott_selectsql文件
   在要執行的*sql文件裡可以存放DMLDDL等多條SQL語句
  
   改變scott_selectsh的屬性成 可以執行
   $chmod /oracle_backup/bin/scott_selectsh
  
   這樣UNIX系統管理員(root權限)可以利用crontab命令把scott_selectsh加入定時操作隊列裡
   或者直接編輯OS下的配置文件
  
   Sun Solaris 文件 /var/spool/cron/crontabs/root
   Linux 文件 /var/spool/cron/root
  
   在root文件後面添加一行(含義每月的:分執行scott_selectsh)
   * * /oracle_backup/bin/scott_selectsh
    
     時間表按順序是分鐘() 小時() 日期() 月份() 星期幾()
   您可以根據不同的需求來組合它們
  
   重新啟動OS的定時服務使新添加的任務生效
   Sun Solaris
   #/etc/rcd/Scron stop
   #/etc/rcd/Scron start
  
   Linux
   #/etc/rcd/initd/crond restart
  
   這樣ORACLE數據庫就會定時執行scott_selectsql文件並把結果輸出到OS文件scott_selecttxt
  
   如果我們要新寫或者修改scott_selectsql文件直接編輯它就可以了

From:http://tw.wingwit.com/Article/program/Oracle/201311/18513.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.