Oracle创建作业与计划程序详细步骤

需积分: 9 0 下载量 184 浏览量 更新于2024-09-10 收藏 2KB TXT 举报
"Oracle创建job的示例" 在Oracle数据库中,`job` 是一个计划的任务,它允许你在预定义的时间点或按照特定的周期执行数据库操作。本示例介绍了如何创建、配置和管理Oracle job。 1. 创建Job 创建一个名为 `HR.CREATE_LOG_TABLE_JOB` 的job,它的主要目的是在`America/New_York` 时间区创建一个名为 `session_history` 的表。首先,你需要定义job的基本属性,如名称、类型、动作、开始时间、作业类等。以下是如何创建此job的PL/SQL代码: ```sql BEGIN sys.dbms_scheduler.create_job( job_name => '"HR"."CREATE_LOG_TABLE_JOB"', job_type => 'PLSQL_BLOCK', job_action => 'begin execute immediate ''create table session_history ( snap_time TIMESTAMP WITH LOCALTIMEZONE, num_sessions NUMBER )''; end;', start_date => systimestamp at time zone 'America/New_York', job_class => 'DEFAULT_JOB_CLASS', comments => 'Create the SESSION_HISTORY table', auto_drop => FALSE, enabled => TRUE ); END; / ``` 在上述代码中,`job_name` 指定了作业的名称,`job_type` 为PL/SQL块,`job_action` 定义了要执行的PL/SQL代码,即创建 `session_history` 表。`start_date` 设置了作业的开始时间,`job_class` 为默认的作业类,`auto_drop` 为FALSE表示不自动删除作业,`enabled` 为TRUE表示作业创建后立即启用。 2. 创建Program 程序 (`program`) 是Oracle调度器中的另一种资源,它可以封装一个可执行的操作,比如SQL命令或操作系统命令。以下是如何创建一个名为 `mypro` 的program,该program用于切换日志文件: ```sql BEGIN DBMS_SCHEDULER.CREATE_PROGRAM( program_name => 'mypro', program_action => 'execute immediate ''alter system switch logfile'';', program_type => 'PLSQL_BLOCK', enabled => TRUE ); END; / ``` 这里的 `program_action` 设定了执行的PL/SQL块,即切换数据库的日志文件。 3. 创建Scheduler(调度) 创建一个名为 `mysch` 的调度,它将决定job或program何时运行。你可以设置调度的开始时间、频率和其他参数。例如: ```sql BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name => 'mysch', start_date => systimestamp at time zone 'America/New_York', repeat_interval => 'FREQ=DAILY;INTERVAL=1;' ); END; / ``` 在这个例子中,`repeat_interval` 参数定义了调度的重复间隔,这里是每天一次。 4. 链接Job和Scheduler 一旦有了job、program和schedule,你需要将它们关联起来,以便作业在指定的时间运行。例如,你可以这样链接 `HR.CREATE_LOG_TABLE_JOB` 和 `mysch`: ```sql BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => 'HR.CREATE_LOG_TABLE_JOB', attribute => 'schedule', value => 'mysch' ); END; / ``` 这使得 `HR.CREATE_LOG_TABLE_JOB` 在 `mysch` 规定的时间运行。 5. 查看Job状态 要监控作业的运行情况,可以运行以下查询: ```sql SELECT job_name, status, error#, run_duration FROM DBA_SCHEDULER_JOB_RUN_DETAILS; ``` 这将显示job的名称、状态、错误号以及运行持续时间。 总结: Oracle的job、program和scheduler机制为数据库管理员提供了强大的自动化工具,可以按需执行各种任务,如数据维护、报告生成等。通过创建、配置和管理这些资源,你可以确保数据库操作按照预定的时间表自动进行,从而提高效率并减少手动干预的需求。