SCN提供了Oracle的內(nèi)部時(shí)鐘機(jī)制,可被看作邏輯時(shí)鐘,這對(duì)于恢復(fù)操作是至關(guān)重要的
注釋:Oracle 僅根據(jù) SCN 執(zhí)行恢復(fù)。
它定義了數(shù)據(jù)庫(kù)在某個(gè)確切時(shí)刻提交的版本。在事物提交時(shí),它被賦予一個(gè)唯一的標(biāo)示事物的SCN .一些人認(rèn)為 SCN 是指, System Commit Number ,而通常 SCN 在提交時(shí)才變化,所以很多情況下,
這兩個(gè)名詞經(jīng)常被交替使用。
究竟是哪個(gè)詞其實(shí)對(duì)我們來(lái)說并不是最重要的,重要的是我們知道 SCN 是 Oracle 內(nèi)部的時(shí)鐘機(jī)制, Oracle 通過 SCN 來(lái)維護(hù)數(shù)據(jù)庫(kù)的一致性,并通過SCN 實(shí)施 Oracle 至關(guān)重要的恢復(fù)機(jī)制。
下面我們來(lái)介紹一下獲得當(dāng)前SCN的幾種有效方式:
一。在Oracle9i中,可以使用dbms_flashback.get_system_change_number來(lái)獲得
示例:
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER ------------------------ 2982184
二。在Oracle9i之前你可以通過查詢x$ktuxe來(lái)獲得
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
|