UNIX下讓ORACLE定時執行*.sql檔案(轉)
UNIX下讓ORACLE定時執行*.sql檔案(轉)[@more@]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 -s 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)
您可以根據不同的需求來組合它們。
如果想每2分鐘(偶數)執行一次, 分鐘欄裡是這樣寫 0-59/2
如果想每2分鐘(單數)執行一次, 分鐘欄裡是這樣寫 1-59/2
依此類推,時間表定時的欄位總是在起始時間開始,間隔除數的的單位時間後繼續,直到終止值。
重新啟動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語句很多,以及經常要改變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 -s scott/tiger@servie_name"<
@/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)
您可以根據不同的需求來組合它們。
如果想每2分鐘(偶數)執行一次, 分鐘欄裡是這樣寫 0-59/2
如果想每2分鐘(單數)執行一次, 分鐘欄裡是這樣寫 1-59/2
依此類推,時間表定時的欄位總是在起始時間開始,間隔除數的的單位時間後繼續,直到終止值。
重新啟動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檔案,直接編輯它就可以了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961790/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在UNIX、windows下讓ORACLE定時執行*.sql檔案WindowsOracleSQL
- 在unix下定時執行oracle的sql方法(轉)OracleSQL
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- oracle 中使用批處理檔案,同時執行,多個.sql檔案。OracleSQL
- unix下複製檔案(轉)
- Linux/Unix平臺可執行檔案格式分析(轉)Linux
- [轉]SQL Server 2000定時執行SQL語句SQLServer
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- c#實現用SQL池(多執行緒),定時批量執行SQL語句 (轉)C#SQL執行緒
- UNIX系統下各檔案的作用(轉)
- Linux定時執行指定的指令碼檔案Linux指令碼
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- MySQL cron定時執行SQL語句MySql
- Unix與FreeBSD下檔案的屬性(轉)
- spring boot 執行sql檔案Spring BootSQL
- 執行大資料量SQL檔案大資料SQL
- UNIX/LINUX平臺可執行檔案格式分析Linux
- window下執行sh檔案
- mysql sql語句執行超時設定MySql
- ubuntu 把檔案設定為可執行檔案Ubuntu
- Windows環境下實現批量執行Sql檔案勒鴛WindowsSQL
- 定時 MYSQL 動作-LINUX下用CRON實現定時執行指令碼(轉)MySqlLinux指令碼
- Linux/Unix下pid檔案作用淺析(轉)Linux
- oracle 中將unix/linux時間戳進行轉換(轉)OracleLinux時間戳
- python3執行.sql檔案PythonSQL
- CMD 執行大檔案SQL指令碼SQL指令碼
- 關於SCO unix 系統下定時備份oracle資料庫dmp檔案(轉)Oracle資料庫
- unix口令檔案介紹(轉)
- UNIX的檔案處理(轉)
- UNIX 中的檔案切割(轉)
- 修補Oracle可執行檔案路徑丟失(轉)Oracle
- 多執行緒下載檔案執行緒
- [ORACLE] SQL執行OracleSQL
- unix下透過ftp定時備份FTP
- [MSSQL]sql 儲存過程定時執行方法SQL儲存過程
- Unix 下批量解壓zip檔案
- Oracle用指令碼定時執行備份Oracle指令碼
- sqlplus執行sql檔案報錯SQL