淘先锋技术网

首页 1 2 3 4 5 6 7
< p>Oracle作为目前全球最流行的数据库管理系统之一,其强大的功能在企业级应用中扮演着重要的角色。其中的Job功能更是Oracle DBA经常用来实现自动化操作的一个有力工具。那么本文就来介绍如何增加Oracle数据库的Job,并且通过实例来进一步说明。< /p>< p>首先说一下创建Job的一般步骤,我们需要在Oracle的SQL Developer或者PL/SQL Developer中执行下面的代码:< /p>< pre>BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name =>'JOB_NAME', job_type =>'PLSQL_BLOCK', job_action =>'BEGIN proc1; END;', start_date =>SYSTIMESTAMP, repeat_interval =>'FREQ=DAILY;BYHOUR=23;', end_date =>NULL, enabled =>TRUE, comments =>'job comments here'); END; /< p>其中,job_name即为这个Job的名称,job_type可以有多种类型选择,这里我们选用的是PLSQL_BLOCK类型,job_action中则填入相应的PL/SQL代码,用于执行Job所需的具体操作。< /p>< p>我们来看一个实例,假设我们现在需要创建一个每天晚上9点执行备份操作的Job,那么代码可以写成这样:< /p>< pre>BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name =>'backup_job', job_type =>'PLSQL_BLOCK', job_action =>' DECLARE backup_dir VARCHAR2(200) := ''/u01/backup/''; BEGIN EXECUTE IMMEDIATE ''CREATE DIRECTORY backup_dir AS ''''''||backup_dir||'''''''''; EXPORT all dumpfile=scott.dmp directory=backup_dir dumpfile=sales.dmp directory=backup_dir; END;', start_date =>SYSTIMESTAMP, repeat_interval =>'FREQ=DAILY;BYHOUR=21;', end_date =>NULL, enabled =>TRUE, comments =>'every night backup'); END; /< p>可以看到,我们在这个Job中选择将导出文件存放在/u01/backup/目录下,并且在代码中先判断了该目录是否存在,如果不存在则自动创建。在开始日期,重复间隔和结束日期等方面,网上有很多详细的介绍,这里就不再赘述了。< /p>< p>当然,增加Job也并不一定就是这种静态方式,其实还有更灵活的方法。比如,我们可以通过一个存储过程来动态地增加Job。代码如下:< /p>< pre>CREATE OR REPLACE PROCEDURE ADD_JOB ( job_name_in IN VARCHAR2, repeat_interval_in IN VARCHAR2, job_action_in IN VARCHAR2) AS BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name =>job_name_in, job_type =>'PLSQL_BLOCK', job_action =>job_action_in, start_date =>SYSTIMESTAMP, repeat_interval =>repeat_interval_in, end_date =>NULL, enabled =>TRUE, comments =>'Dynamically created job'); END; /< p>这个存储过程传入三个参数,分别为Job名称、重复时间间隔以及Job代码。在使用时,我们只需要将具体的参数传进去,就可以动态地创建Job了。比如下面这样:< /p>< pre>BEGIN ADD_JOB('backup_dynamic', 'FREQ=DAILY;BYHOUR=23;', ' DECLARE backup_dir VARCHAR2(200) := ''/u01/backup/''; BEGIN EXECUTE IMMEDIATE ''CREATE DIRECTORY backup_dir AS ''''''||backup_dir||'''''''''; EXPORT all dumpfile=scott.dmp directory=backup_dir dumpfile=sales.dmp directory=backup_dir; END;'); END; /< p>在这个例子中,我们就成功地通过存储过程增加了一个每天晚上9点执行备份操作的Job。< /p>< p>总之,增加Oracle的Job有多种方式,我们可以根据自己的情况选择相应的方式来进行操作。无论采用哪种方式,都需要仔细地设计好Job的具体操作,以达到自动化操作的效果。< /p>