当前位置:首页 » 数据仓库 » 如何用job配置定时产生快照
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

如何用job配置定时产生快照

发布时间: 2022-05-14 16:20:10

Ⅰ 怎么用JOB定时执行带有传入参数的过程

最佳答案检举 【问题现象】 1. Windows任务管理器“应用程序”选项卡中莫名出现“job1”进程。 2. Windows任务管理器“进程”选项卡中用户名列内容不显示,是由于Terminal Services服务被禁用,手动开启服务无效,启动服务后自动禁用。 3. 运行程序时,CPU使用提高了5%左右,表现为程序运行比较卡。 4. 会有莫名windows自动更新提示要求安装新补丁更新,但从“添加/删除程序”可以发现这些更新早就安装过了。 【问题分析】 1. 根据System Safety Monitor监控显示,“job1”进程出现前,“svchost”进程会调用“rundll32”进程。 2. 根据System Safety Monitor监控显示,“job1”进程出现后,某程序经常访问网络。 3. 根据Windows清理助手扫描显示,重要系统文件userinit.exe文件被非法替换。 4. job1进程通过rundll32.exe进程调用,禁用rundll32.exe进程,job1进程自动终止。 【问题解决】 不知道怎么解决,先换回userinit.exe文件再说,看看效果。 暂时处理方法:使用Ststem Safety Monitor阻止rundll32.exe进程的运行。 将userinit.exe文件换回正常文件后,现象2解决。其他问题现象有待观察。 观察结果,问题完全解决。都是userinit.exe惹的祸。 @ CSDN下载userinit.exe点这里。 @ userinit.exe位置:C:\WINDOWS\system32\userinit.exe 和 C:\WINDOWS\system32\dllcache\userinit.exe 【问题后记】 体验到了“工欲善其事必先利其器”的道理,这次真是多亏了“windows清理助手”的帮助了,否则还真不知道问题出在 userinit.exe 文件上,SSM也是非常好的IDS,继续深入探索会很有帮助。 不知道如果这个job1病毒如果会自身隐藏进程怎么办,复杂,怎么查看被隐藏的进程?又是一个问题。 查看进程需要知道什么?现在感觉就是要看“进程名,和调用路径,最好还有是否联网,使用哪个端口”能知道就更好了。 纯粹的复制 别拍我

Ⅱ oracle的job怎么设置一个过程每5分钟执行一次

dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+5/1440');--每天1440分钟,即一分钟运行test过程一次,分子为5则为每分钟执行一次

具体可以参考我的网络云笔记:
http://wenzhang..com/page/view?key=dd5fd5e21b9d6ecc-1427393850

一、设置初始化参数 job_queue_processes
sql> alter system set job_queue_processes=n;(n>0)
job_queue_processes最大值为1000

查看job queue 后台进程
sql>select name,description from v$bgprocess;

二,dbms_job package 用法介绍
包含以下子过程:

Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。

1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job 、broken与next_date。

PROCEDURE Broken (job IN binary_integer,
BrokenIN boolean,
next_date IN date :=SYSDATE)

job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 网管联盟www.bitsCN.com
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;
a、利用dbms_job.run()立即执行该job
sql>begin
sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
sql>end;
sql>/
b、利用dbms_job.broken()重新将broken标记为false
sql>begin
sql>dbms_job.broken (:job,false,next_date)
sql>end;
sql>/
2、Change()过程用来改变指定工作的设置。
这个过程有四个参数:job、what 、next_date与interval。

PROCEDURE Change (jobIN binary_integer,
What IN varchar2,
next_dateIN date,
interval IN varchar2)

此job参数是一个整数值,它唯一标识此工作。
What参数是由此工作运行的一块PL/SQL代码块。
next_date参数指示何时此工作将被执行。
interval参数指示一个工作重执行的频度。 中国网管论坛bbs.bitsCN.com

3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。这个过程有两个参数:job与interval。

PROCEDURE Interval (jobIN binary_integer,
Interval IN varchar2)

job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。

4、ISubmit()过程用来用特定的工作号提交一个工作。这个过程有五个参数:job、what、next_date、interval与no_parse。

PROCEDURE ISubmit (job IN binary_ineger,
WhatIN varchar2,
next_date IN date,
intervalIN varchar2,
no_parseIN booean:=FALSE)

这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。

5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。

PROCEDURE Next_Date(job IN binary_ineger,
next_date IN date) 54ne.com
job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。

6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:

PROCEDURE Remove(job INbinary_ineger);

job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。

7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:

PROCEDURE Run(job IN binary_ineger)

job参数标识将被立即执行的工作。

8、使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。

PROCEDURE Submit ( job OUT binary_ineger,
WhatINvarchar2,
next_date INdate,
intervalINvarchar2,
no_parseINbooean:=FALSE)

job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。 中国网管论坛bbs.bitsCN.com
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。

9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
此程序有两个参数:job与my_call。

PROCEDURE User_Export(jobIN binary_ineger,
my_callIN OUT varchar2)

job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。

10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。

PROCEDURE What (jobIN binary_ineger,
What IN OUT varchar2)
job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。

三、查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息
54com.cn


2、查看相关信息

SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
SQL>FROM DBA_JOBS;

JOB NEXT_DATE NEXT_SEC FAILURES B
------- --------- -------- -------- -
9125 01-JUN-01 00:00:00 4 N
14144 24-OCT-01 16:35:35 0 N
9127 01-JUN-01 00:00:00 16 Y
3 rows selected.

正在运行的JOB相关信息

SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
FROM DBA_JOBS_RUNNING r, DBA_JOBS j
WHERE r.JOB = j.JOB;

SID JOB LOG_USER THIS_DATE THIS_SEC
----- ---------- ------------- --------- --------
12 14144 HR 24-OCT-94 17:21:24
25 8536 QS 24-OCT-94 16:45:12
2 rows selected.

JOB QUEUE LOCK相关信息

SELECT SID, TYPE, ID1, ID2
FROM V$LOCK
WHERE TYPE = 'JQ';

SID TY ID1 ID2
--------- -- --------- ---------
12 JQ 0 14144
1 row selected.

四、简单例子
一个简单例子: 网管网bitsCN.com

创建测试表
SQL> create table TEST(a date);

表已创建。

创建一个自定义过程
SQL> create or replace procere MYPROC as
2begin
3insert into TEST values(sysdate);
4end;
5/

过程已创建。

创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
3end;
4/

PL/SQL 过程已成功完成。

运行JOB
SQL> begin
2dbms_job.run(:job1);
3end;
4/

PL/SQL 过程已成功完成。

SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;

时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24

删除JOB
SQL> begin
2dbms_job.remove(:job1);
3end;
4/ 网管网bitsCN.com

PL/SQL 过程已成功完成。

Ⅲ 怎样动态的配置job和cronExpression应用quartz实现定时任务

public void task() throws SchelerException { // Initiate a Schele Factory SchelerFactory schelerFactory = new StdSchelerFactory(); // Retrieve a scheler from schele factory Scheler scheler = schelerFactory.getScheler(); // current time long ctime = System.currentTimeMillis(); // Initiate JobDetail with job name, job group, and executable job class JobDetail jobDetail = new JobDetail("jobDetail2", "jobDetailGroup2", SimpleQuartzJob.class); // Initiate CronTrigger with its name and group name CronTrigger cronTrigger = new CronTrigger("cronTrigger", "triggerGroup2"); try { // setup CronExpression CronExpression cexp = new CronExpression("取全局变量的表达式值"); // Assign the CronExpression to CronTrigger cronTrigger.setCronExpression(cexp); } catch (Exception e) { e.printStackTrace(); } // schele a job with JobDetail and Trigger scheler.scheleJob(jobDetail, cronTrigger); // start the scheler scheler.start(); }

Ⅳ Oracle job定时任务

1. oracle job可用来完成一些后台数据库定时任务,支持SQL、PL/SQL等,具体语法可以参考有关资料,简单的话可以使用TOAD,PLSQL Developer这种工具。
2. select * from table1 for update; 锁定此表其它用户不可以执行写入操作。
3. EM即Enterprise Manager,代替8i中Enterprise Manager Console的一个BS工具,浏览器中访问http://localhost:5500/em,首先要安装配置正确,服务开启,可以用这个工具完成很多数据库管理维护的工作,非常强大的工具,
不知道我的回答是否全面,具体的需要你查找手册仔细研究的。

Ⅳ 如何写一个定时跑的Job程序

直接写存储过程并在数据库中配置为SQL Job,或者写个程序配置为一个任务计划,或者如1楼所述,写应用程序,通过Timer或者通过Quartz、HangFire等任务调度框架实现定时同步操作。

Ⅵ java quartz job 执行时间配置

第一步:引包
要使用Quartz,必须要引入以下这几个包:
1、log4j-1.2.16
2、quartz-2.1.7
3、slf4j-api-1.6.1.jar
4、slf4j-log4j12-1.6.1.jar
这些包都在下载的Quartz包里面包含着,因此没有必要为寻找这几个包而头疼。
第二步:创建要被定执行的任务类
这一步也很简单,只需要创建一个实现了org.quartz.Job接口的类,并实现这个接口的唯一一个方法execute(JobExecutionContext arg0) throws JobExecutionException即可。如:
import java.text.SimpleDateFormat;

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class myJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}

}
import java.text.SimpleDateFormat;

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class myJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}

}

这个例子很简单,就不用解说了。

第三步:创建任务调度,并执行
这一步应该算是最难的一步的,但其实是非常简单的,直接上代码


import static org.quartz.CronScheleBuilder.cronSchele;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheler;
import org.quartz.SchelerFactory;
import org.quartz.impl.StdSchelerFactory;

public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheler的引用
SchelerFactory sf = new StdSchelerFactory();
Scheler sched = sf.getScheler();
//jobs可以在scheled的sched.start()方法前被调用

//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
Date ft = sched.scheleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());

// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchele(cronSchele("15 0/2 * * * ?")).build();
ft = sched.scheleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());

// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}

public static void main(String[] args) throws Exception {

Test test = new Test();
test.go();
}

}
import static org.quartz.CronScheleBuilder.cronSchele;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheler;
import org.quartz.SchelerFactory;
import org.quartz.impl.StdSchelerFactory;

public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheler的引用
SchelerFactory sf = new StdSchelerFactory();
Scheler sched = sf.getScheler();
//jobs可以在scheled的sched.start()方法前被调用

//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
Date ft = sched.scheleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());

// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchele(cronSchele("15 0/2 * * * ?")).build();
ft = sched.scheleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());

// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}

public static void main(String[] args) throws Exception {

Test test = new Test();
test.go();
}

}

OK了,Job1和Job2就会被安排为定时执行了。此时程序是可以执行的了,但是可能会输出WARN级别日志,这是因为没有加log4j的配置文件,加上配置文件,就OK了。这里需要说明的地方只有一个,其它的可以直接Copy到您的项目里面。看代码:
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();

如何配置快照属性(复制 Transact

可以使用复制存储过程以编程方式定义和修改快照属性,而使用的存储过程取决于发布的类型。在创建快照发布或事务发布时配置快照属性在发布服务器上,执行 sp_addpublication。为 @publication 指定发布名称,将 @repl_freq 的值指定为 snapshot 或continuous,并指定一个或多个下列与快照相关的参数:@alt_snapshot_folder - 如果此发布的快照可从某位置访问,而不是或者也能从快照的默认文件夹访问,则指定相应路径。@compress_snapshot - 如果备用快照文件夹内的快照文件是 Microsoft CAB 文件格式的压缩文件,则将值指定为 true。@pre_snapshot_script - 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。@post_snapshot_script - 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。@snapshot_in_defaultfolder - 如果快照仅在非默认位置可用,则将值指定为 false。有关创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。创建合并发布时配置快照属性在发布服务器上,执行 sp_addmergepublication。为 @publication 指定发布名称,将 @repl_freq 的值指定为 snapshot 或continuous,并指定一个或多个下列与快照相关的参数:@alt_snapshot_folder - 如果此发布的快照可从某位置访问,而不是或者也能从快照的默认文件夹访问,则指定相应路径。@compress_snapshot - 如果备用快照文件夹内的快照文件是 CAB 文件格式的压缩文件,则将值指定为 true。@pre_snapshot_script - 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。@post_snapshot_script - 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。@snapshot_in_defaultfolder - 如果快照仅在非默认位置可用,则将值指定为 false。有关创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。修改现有快照发布或事务发布的快照属性在发布服务器上,对发布数据库执行 sp_changepublication。将 @force_invalidate_snapshot 的值指定为 1,并为 @property 指定下列值之一:alt_snapshot_folder - 也为 @value 指定备用快照文件夹的新路径。compress_snapshot - 也将 @value 的值指定为 true 或false,以指示备用快照文件夹内的快照文件是否为 CAB 文件格式的压缩文件。pre_snapshot_script - 也为 @value 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。post_snapshot_script - 也为 @value 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。snapshot_in_defaultfolder - 也将值指定为 true 或false,以指示快照是否仅在非默认位置可用。(可选)在发布服务器上,对发布数据库执行 sp_changepublication_snapshot。 指定 @publication 以及将要更改的一个或多个计划或安全凭据参数。安全说明如果可能,请在运行时提示用户输入安全凭据。 如果必须在脚本文件中存储凭据,则必须保护文件以防止未经授权的访问。在命令提示符处运行复制快照代理或启动快照代理作业以生成新的快照。 有关详细信息,请参阅如何创建初始快照(复制 Transact-SQL 编程)。 修改现有合并发布的快照属性在发布服务器上,对发布数据库执行 sp_changemergepublication。将 @force_invalidate_snapshot 的值指定为 1,并为 @property 指定下列值之一:alt_snapshot_folder - 也为 @value 指定备用快照文件夹的新路径。compress_snapshot - 也将 @value 的值指定为 true 或false,以指示备用快照文件夹内的快照文件是否为 CAB 文件格式的压缩文件。pre_snapshot_script - 也为 @value 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。post_snapshot_script - 也为 @value 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 .sql 文件的文件名和完整路径。snapshot_in_defaultfolder - 也将值指定为 true 或false,以指示快照是否仅在非默认位置可用。在命令提示符处运行复制快照代理或启动快照代理作业以生成新的快照。 有关详细信息,请参阅如何创建初始快照(复制 Transact-SQL 编程)。示例此示例创建一个使用备用快照文件夹和压缩快照的发布。TSQL -- This script uses sqlcmd scripting variables. They are in the form -- $(MyVariable). For information about how to use scripting variables -- on the command line and in SQL Server Management Studio, see the -- "Executing Replication Scripts" section in the topic -- "Programming Replication Using System Stored Proceres". --Declarations for adding a merge publication DECLARE @publicationDB AS sysname; DECLARE @publication AS sysname; DECLARE @article AS sysname; DECLARE @owner AS sysname; DECLARE @snapshot_share AS sysname; SET @publicationDB = N'AdventureWorks'; SET @publication = N''; SET @article = N'SpecialOffer'; SET @owner = N'Sales'; SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder'; -- Enable merge replication on the publication database, using defaults. USE master EXEC sp_replicationdboption @dbname = @publicationDB, @optname=N'merge publish', @value = N'true'; -- Create new merge publication with an alternate snapshot location. USE [AdventureWorks] EXEC sp_addmergepublication -- required parameters @publication = @publication, @snapshot_in_defaultfolder = N'false', @alt_snapshot_folder = @snapshot_share, @compress_snapshot = N'true'; -- Create the snapshot job for the publication. EXEC sp_addpublication_snapshot @publication = @publication, @job_login = $(Login), @job_password = $(Password); -- Add an article. EXEC sp_addmergearticle @publication = @publication, @article = @article, @source_object = @article, @type = N'table', @source_owner = @owner, @destination_owner = @owner; -- Start the snapshot job. EXEC sp_startpublication_snapshot @publication = @publication; GO 请参阅概念备用快照文件夹位置压缩的快照在应用快照之前和之后执行脚本复制系统存储过程概念通过FTP 传输快照更改发布和项目属性

Ⅷ 想请教一下如何用oracle 中JOB实现定时存储过程。

如果是10g的话就用scheler来代替job吧,比job稳定多了。

先解释一下基础概念,scheler 包含了以下几个实体对象
Program -- 提供了scheler 将要运行什么,包含program name,program type(PLSQL块、存储过程、外部程序),program action(具体的程序实体,比如说一个PLSQL块、或者是存储过程的名称、或者是外部程序的路径加名称) 。

Scheles -- 指定何时何种频率来运行job,可以被不同的job重复的利用。比如说我有两个job都要求在每天的凌晨4点运行,那么两个job可以同时指定相同的schele。

Jobs -- 具体的作业的名称,依赖于那个program、schele。也可以不指定program、schele,而直接写入program、schele的相应参数。

Chains -- 把一组program像一个单独的实体连接在一起,作为一个对象。Job可以指向Chains代替单一的program 。这样就能完成类似如下功能:运行A,然后运行B,当A、B都运行成功则运行C,否则运行D。

下面参考文档边看边做。

1.创建一张表 create table scheler_test(id number,instime date);

2.创建一个存储过程,实现往表中插入资料。

create or replace procere p_insSysdate as
id number;
begin
select count(*) into id from scheler_test;
insert into scheler_test values(id,sysdate);
commit;
end;
/
3.创建一个schele,这个仅仅是一个时间上的安排,由DBMS_SCHEDULER.CREATE_JOB调用。这样就可以重用schele,并且schele在时间的安排上强大与原先的JOB 。语法如下:

BEGIN
SYS.DBMS_SCHEDULER.CREATE_SCHEDULE
(
schele_name => 'SCOTT.EVERY_MINUTE'
,start_date => NULL
,repeat_interval => 'FREQ=MINUTELY'
,end_date => NULL
,comments => NULL
);
END;
/

以下给出部分repeat_interval的写法实例,以供参考
EVERY DAY 'FREQ=DAILY;INTERVAL=1'
EVERY MINUTE 'FREQ=MINUTELY;INTERVAL=1'
EVERY 4 HOURS ON THE HOUR 'FREQ=HOURLY;INTERVAL=4;BYMINUTE=0;BYSECOND=0'
1st DAY OF EVERY MONTH 'FREQ=DAILY;BYMONTHDAY=1'
WEEKDAYS AT 7am and 3pm 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15; BYMINUTE=0;BYSECOND=0'

4.创建DBMS_SCHEDULER.CREATE_PROGRAM,指定运行什么样的程序。

BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'SCOTT.PRG_INSSYSDATE'
,program_type => 'STORED_PROCEDURE'
,program_action => 'p_insSysdate'
,number_of_arguments => 0
,enabled => TRUE
,comments => NULL
);
END;
/

Ⅸ 数据库同步

这个问题比较有难度哦!

这里只能提供一些范例给你参考下:

SQLServer2000同步复制技术实现步骤

一、 预备工作
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
--治理工具
--计算机治理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户(SynUser)
2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择 "共享该文件夹 "
--通过 "权限 "按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限
--确定
3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--治理工具--服务
--右键SQLSERVERAGENT

--属性--登陆--选择 "此账户 "
--输入或者选择第一步中创建的windows登录用户名(SynUser)
-- "密码 "中输入该用户的密码
4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业治理器
--右键SQL实例--属性
--安全性--身份验证
--选择 "SQL Server 和 Windows "
--确定
5.在发布服务器和订阅服务器上互相注册
企业治理器
--右键SQL Server组
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个 "SQL Server身份验证 "
--下一步--输入用户名和密码(SynUser)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6.对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到)
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择 "tcp/ip "--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--假如你修改了SQL的端口,取消选择 "动态决定端口 ",并输入对应的端口号
二、 正式配置
1、配置发布服务器
打开企业治理器,在发布服务器(B、C、D)上执行以下步骤:
(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)
(3) [下一步] 设置快照文件夹
采用默认\\servername\Pub
(4) [下一步] 自定义配置
可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置
否,使用下列默认设置(推荐)
(5) [下一步] 设置分发数据库名称和位置 采用默认值
(6) [下一步] 启用发布服务器 选择作为发布的服务器
(7) [下一步] 选择需要发布的数据库和发布类型
(8) [下一步] 选择注册订阅服务器
(9) [下一步] 完成配置
2、创建出版物
发布服务器B、C、D上
(1)从[工具]菜单的[复制]子菜单中选择[创建和治理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQLSERVER答应在不同的数据库如 orACLE或ACCESS之间进行数据复制。
但是在这里我们选择运行 "SQL SERVER 2000 "的数据库服务器
(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
注重: 假如前面选择了事务发布 则再这一步中只能选择带有主键的表
(6)选择发布名称和描述
(7)自定义发布属性 向导提供的选择:
是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
否 根据指定方式创建发布 (建议采用自定义的方式)
(8)[下一步] 选择筛选发布的方式
(9)[下一步] 可以选择是否答应匿名订阅
1)假如选择署名订阅,则需要在发布服务器上添加订阅服务器
方法: [工具]-> [复制]-> [配置发布、订阅服务器和分发的属性]-> [订阅服务器] 中添加
否则在订阅服务器上请求订阅时会出现的提示:改发布不答应匿名订阅
假如仍然需要匿名订阅则用以下解决办法
[企业治理器]-> [复制]-> [发布内容]-> [属性]-> [订阅选项] 选择答应匿名请求订阅
2)假如选择匿名订阅,则配置订阅服务器时不会出现以上提示
(10)[下一步] 设置快照 代理程序调度
(11)[下一步] 完成配置
当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。

更具体的你可以看这里:

http://www.itzhe.cn/article/20080220/87279.html

希望对你有用!

Ⅹ 如何创建和应用初始快照

通过启动快照代理作业(异步)为快照发布或事务发布生成初始快照
使用 ServerConnection 类创建与发布服务器的连接。
创建 TransPublication 类的实例。 设置发布的 Name 和 DatabaseName 属性,并将 ConnectionContext 属性设置为步骤 1 中创建的连接。
调用 LoadProperties 方法以加载该对象的其余属性。 如果此方法返回 false,则说明步骤 2 中的发布属性定义不正确,或者此发布不存在。
如果 SnapshotAgentExists 的值为 false,请调用 CreateSnapshotAgent 为此发布创建快照代理作业。
调用 方法以启动为此发布生成快照的代理作业。
(可选)SnapshotAvailable 的值为 true 时,订阅服务器具有快照。