Oracle DBMS_JOB 僅支持 PL/SQL 存儲過程,SQL 複雜、頻繁變更時維護成本高。利用 Shell 腳本調用 sqlplus 執行 .sql 文件,配合 cron 定時任務,實現零侵入、易維護的定時 SQL 執行。
$ sqlplus username/password@service_name
SQL> SELECT SYSDATE FROM DUAL;
# 成功返回當前時間,說明網絡、TNS、賬號均正常
失敗時檢查 $ORACLE_HOME/network/admin/tnsnames.ora、/etc/hosts、防火牆、監聽狀態。
scott_select.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;
scott_select.sh)#!/bin/sh
# 以 oracle 用戶身份執行 sqlplus,利用 Here Document 傳遞命令
su - oracle -c "sqlplus scott/tiger@service_name" <
spool 將查詢結果導出文本文件。@ 執行外部 SQL 文件,支持多條 DML/DDL。su - oracle 確保環境變量(ORACLE_HOME、LD_LIBRARY_PATH 等)正確加載。chmod 755 /oracle_backup/bin/scott_select.sh
# Root 權限編輯
crontab -e
# 或直接編輯系統文件
# Solaris: /var/spool/cron/crontabs/root
# Linux: /var/spool/cron/root
40 4 18 * * /oracle_backup/bin/scott_select.sh
時間字段順序:分(0-59) 時(0-23) 日(1-31) 月(1-12) 周(0-6)。
# Solaris
/etc/rc2.d/S75cron stop
/etc/rc2.d/S75cron start
# Linux
/etc/rc.d/init.d/crond restart
.sql 文件,無需重新編譯存儲過程。run-parts 執行目錄下所有腳本。scott/tiger 默認賬號。LVM 卷組遺失災難恢復實戰:pvcreate --uuid 恢復實體卷識別碼、vgcfgrestore 還原配置
Linux 核心指令速查手冊 (三):tar、unzip、gunzip 壓縮備份與解壓縮完整參數詳解
Linux 系統管理自動化利器:Expect 腳本進階用法與實戰技巧
Linux 網路新聞系統全景解析:從 Usenet 起源到 INN 架構與傳輸協議深度剖析
讓掃描儀在 Linux 系統安家:從核心修補到 SANE 驅動完整部署指南
Linux 下 PHP 三種執行模式深度解析: 模組化、CGI、FastCGI