ubuntu

如何在Ubuntu上配置Oracle定时任务

小樊
49
2025-10-12 09:34:48
栏目: 云计算

在Ubuntu上配置Oracle定时任务主要有两种方式:通过Oracle内置的DBMS_SCHEDULER(数据库级定时任务)通过Ubuntu的cron(操作系统级定时任务)。以下是详细步骤及注意事项:

一、Oracle DBMS_SCHEDULER(数据库级定时任务)

适用于需要在数据库内部定期执行PL/SQL代码、存储过程或SQL脚本的场景,无需依赖操作系统环境。

1. 登录Oracle数据库

使用sqlplus工具以具有足够权限(如SYSDBA或拥有CREATE JOB权限的用户)登录数据库:

sqlplus username/password@database_name

2. 创建定时作业

通过DBMS_SCHEDULER.CREATE_JOB过程创建作业,示例如下:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'daily_backup_job',          -- 作业名称(唯一标识)
    job_type        => 'PLSQL_BLOCK',               -- 作业类型(PL/SQL块)
    job_action      => 'BEGIN my_package.my_procedure; END;', -- 要执行的PL/SQL代码
    start_date      => SYSTIMESTAMP,                -- 启动时间(立即启动)
    repeat_interval => 'FREQ=DAILY; BYHOUR=0; BYMINUTE=0; BYSECOND=0', -- 重复间隔(每天午夜)
    enabled         => TRUE,                        -- 是否启用
    comments        => 'Daily database backup job'  -- 备注
  );
END;
/

3. 管理作业

4. 注意事项

二、Ubuntu Cron(操作系统级定时任务)

适用于需要通过操作系统调度执行Oracle相关脚本(如数据泵导出、备份、日志清理等)的场景,依赖Shell脚本和Oracle环境变量。

1. 编写Shell脚本

创建执行Oracle操作的Shell脚本(如/home/oracle/scripts/oracle_backup.sh),并添加以下内容:

#!/bin/bash
# 设置Oracle环境变量(根据实际路径调整)
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=ORCLCDB
export PATH=$ORACLE_HOME/bin:$PATH

# 执行Oracle数据泵导出(示例)
expdp system/password@ORCLCDB schemas=test directory=backdir dumpfile=backup_$(date +%Y%m%d).dmp logfile=backup_$(date +%Y%m%d).log

# 压缩并清理旧备份(保留7天)
tar -zcvf /backup/full/backup_$(date +%Y%m%d).tar.gz /backup/full/*.dmp /backup/full/*.log --remove-files
find /backup/full -type f -mtime +7 -exec rm {} \;

2. 赋予脚本执行权限

chmod +x /home/oracle/scripts/oracle_backup.sh

3. 编辑Cron任务

使用crontab命令编辑当前用户的定时任务(如需root权限,用sudo crontab -e):

crontab -e

添加以下行(每天凌晨2点执行脚本,并将输出重定向到日志文件):

0 2 * * * /home/oracle/scripts/oracle_backup.sh >> /var/log/oracle_backup.log 2>&1

4. 验证Cron任务

5. 注意事项

总结

0
看了该问题的人还看了