如何獲得當(dāng)前數(shù)據(jù)庫的SCN值
2024-07-21 02:06:06
供稿:網(wǎng)友
如何獲得當(dāng)前數(shù)據(jù)庫的scn值
--scn定義及獲取方式
last updated: thursday, 2004-12-02 15:04 eygle
scn(system change number) ,也就是通常我們所說的系統(tǒng)改變號(hào),是數(shù)據(jù)庫中非常重要的一個(gè)數(shù)據(jù)結(jié)構(gòu)。
它定義數(shù)據(jù)庫在某個(gè)確切時(shí)刻提交的版本。在事物提交時(shí),它被賦予一個(gè)唯一的標(biāo)示事物的 scn 。 scn 提供 oracle 的內(nèi)部時(shí)鐘機(jī)制,
可被看作邏輯時(shí)鐘,這對(duì)于恢復(fù)操作是至關(guān)重要的 ( oracle 僅根據(jù) scn 執(zhí)行恢復(fù))。
一直以來,對(duì)于 scn 有很多爭(zhēng)議,很多人認(rèn)為 scn 是指, system commit number ,而通常 scn 在提交時(shí)才變化,所以很多時(shí)候,
這兩個(gè)名詞經(jīng)常被交替使用。
到底是哪個(gè)詞其實(shí)不是最重要的,重要的是我們知道 scn 是 oracle 內(nèi)部的時(shí)鐘機(jī)制, oracle 通過 scn 來維護(hù)數(shù)據(jù)庫的一致性,并通過
scn 實(shí)施 oracle 至關(guān)重要的恢復(fù)機(jī)制。 scn 由 lgwr 順序分配,用以標(biāo)示提交、回滾和檢查點(diǎn)。
我們來看一下獲得當(dāng)前scn的幾種方式:
1.在oracle9i中,可以使用dbms_flashback.get_system_change_number來獲得
例如:
sql> select dbms_flashback.get_system_change_number from dual;get_system_change_number------------------------ 2982184
2.在oracle9i之前
可以通過查詢x$ktuxe獲得
x$ktuxe-------------[k]ernel [t]ransaction [u]ndo transa[x]tion [e]ntry (table)
sql> select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;max(ktuxescnw*power(2,32)+ktuxescnb)------------------------------------ 2980613
本文作者:
eygle,oracle技術(shù)關(guān)注者,來自中國最大的oracle技術(shù)論壇itpub.
www.eygle.com是作者的個(gè)人站點(diǎn).你可通過[email protected]來聯(lián)系作者.歡迎技術(shù)探討交流以及鏈接交換.
原文出處:
http://www.eygle.com/faq/how.to.get.current.scn.of.database.htm