Oracle10g调度例行任务解放DBA时间
2007-05-11 12:21:19 来源:WEB开发网图1:调度程序核心组件
图2:调度程序资源管理
开始
要创建并运行任务,你需要至少具有CREATE JOB 系统权限。如果你是一位 DBA,那么你将通过授予DBA 角色的SCHEDULER_ADMIN角色而具有 CREATE JOB权限和所有其它调度程序权限。你可以将 CREATE JOB 权限授予数据库用户,允许他们在其自己的模式中创建和运行他们自己的任务。例如,下面的语句将 CREATE JOB 授予用户 gennick: GRANT CREATE JOB TO gennick;
与你应用DBMS_JOB时的情况不同,你不需要设置一个初始化参数,以启动一个任务协调程序后台进程。如果你使用该新的调度程序创建任务,则你的实例会在需要时自动启动一个任务协调程序后台进程。
如果你计划使用资源计划和使用者组来控制数据库资源的分配,则将你实例的RESOURCE_LIMIT 参数设置为TRUE。可以通过 ALTER SYSTEM完成该项设置,如下所示: ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
最后,如果您将CREATE JOB 权限授予了一个非DBA用户,而且你希望该用户能够使用数据库控制的图形用户界面来调度任务,那么你还需要授予该用户 SELECT ANY DICTIONARY 系统权限。
你还可以使用 DBMS_SCHEDULER 包。通过SQL*Plus 调用DBMS_SCHEDULER使你完全可以通过命令行访问该调度程序。DBMS_SCHEDULER 还提供了将调度程序功能内嵌于用户应用程序中的能力。
创建你的第一个任务
要创建一个重复性任务,你首先需要定义程序和调度表。假定你需要在每隔一天的下午6:00加载一个外部表。首先创建一个调度程序,它提供一个 PL/SQL 块以执行该加载。代码清单1中的PL/SQL 块发出一个对DBMS_SCHEDULER.CREATE_PROGRAM的调用,作为程序操作所提供的 PL/SQL 块包含有一个简单的INSERT...SELECT FROM 语句,用于从该外部表中载入新的客户。
更多精彩
赞助商链接