程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 在UNIX下讓ORACLE定時執行*.sql文件

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

編輯: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/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語句把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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved