在UNIX、windows下讓ORACLE定時執行*.sql檔案

47328983發表於2011-01-14
 

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檔案,直接編輯它就可以了。

2、windows下用批處理執行oracle指令碼:

如果在windows下可以建立一下個bat批處理檔案:test.bat,內容如下:

sqlplus system/oracle@orcl_108 @e:\select.sql > e:\select.log

其中select.sql 指令碼檔案內容為:

select * from all_users;
       exit;

其中e:\select.log檔案是select.sql 輸出的結果日誌。

然後可以建立系統任務定時執行這個test.bat檔案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-683835/,如需轉載,請註明出處,否則將追究法律責任。

相關文章