當前位置:首頁 » 數據倉庫 » 如何用job配置定時產生快照
擴展閱讀
計算機雙硬碟 2022-05-24 16:40:08
塞爾達荒野之息矢量存儲 2022-05-24 16:38:36

如何用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 時,訂閱伺服器具有快照。