Oracle及SQL Server Job執行時間討論及夏令時問題

tolywang發表於2011-03-10

 

 

Oracle10g, SQL Server 2000, 2005
Linux AS 5.3 , Windows 2003 

 

一,討論Linux及Windows時間變化及硬體CMOS時間問題。

修改Linux時間命令:

[root@lhtestdb01 ~]# date
Thu Mar 10 11:11:50 CST 2011
[root@lhtestdb01 ~]#
[root@lhtestdb01 ~]# date -s 12:11:55
Thu Mar 10 12:11:55 CST 2011
[root@lhtestdb01 ~]# date -s 03/09/2011 

在Linux中修改OS時間後,等待一段時間(比如1小時,具體多長時間待查),CMOS
會與OS時間進行同步,以便下次啟動server時候讀取的cmos時間和os時間能匹配。


在Linux下修改時間後如果需要手工同步到硬體時鐘,可以使用:

# hwclock -r ; date  檢視硬體時間及系統時間
# hwclock --set --date="4/28/05 11:10:05"(月/日/年 時:分:秒) 
或者
# clock --set --date="07/07/06 10:19" (月/日/年 時:分:秒)

如果讓硬體時鐘與系統時間同步,則用
# hwclock –w
或者
# hwclock --hctosys  (hc代表硬體時間,sys代表系統時間)


修改Windows時間的命令非常簡單,不做介紹。windows在修改時間
後,會馬上將OS最新時間更新到cmos中。

 

 

二,討論Linux及Windows時間變化後Oracle及SQL Server的系統時間。


修改時間後我們可以透過查詢來確認Oracle及SQL Server系統中的時間。

select sysdate from dual ;  (oracle)

use master
select getdate() ;      (sql server)

可以測試發現,Oracle及SQL Server中無論OS時間如何變化,Oracle及
SQL Server資料庫中的系統時間都會跟著變化 。 

備註: 注意修改時區還是需要重新啟動Server的。


JOB在執行結束之後才會更新next_date,但是計算的方法是JOB剛開始的時間加上interval設定的間隔

 

三,討論Oracle的時間及job問題。

1. 時間由8:00am調整為9:00am,跨度為1小時。

Oracle job執行時間間隔為2分鐘,job執行時間為1秒。
-- 時間調整後Oracle job會正常自動執行,這時候last_date變成了
9:00:02, next_date變成了9:02:02 .

2. 時間由9:00am調整為8:00am,跨度為1小時。

Oracle job 不能正常執行,需要手工執行一次後,last_date變成執行
結束時候的時間,隨後恢復正常。 

 

四,討論SQL Server的時間及job問題。

修改時間:
1) 8:00->9:00  :
資料庫不需要重啟, getdate()時間會自動從8點修改到9點;
Job下次執行的時間會根據修改的時間自動調整到對應的時間點.

2) 8:00->7:00  :
資料庫不需要重啟,getdate()時間會自動從8點修改到7點;
Job下次執行的時間還是會保持不變,並且即使手動執行該Job之後,下次
執行時間仍然不會變化.會直接等到之前的"下次執行時間"的時候才執行的

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-689020/,如需轉載,請註明出處,否則將追究法律責任。

相關文章