熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle10g的current

2013-11-13 16:14:49  來源: Oracle 

  前幾天有一個朋友問我一個問題
Oracleg的current_scn是如何計算的?

  我們知道Oracleg在v$database視圖中引入了current_scn這個SCN來自底層表代表當前的SCN在Oraclei中我們可以通過dbms_flashbackget_system_change_number來獲得系統的SCN

  但是注意current_scn還是有所不同的我們看一下一個查詢


   [oracle@danaly ~]$ sqlplus / as sysdba

  SQL*Plus: Release Production on Thu Jun ::

  Copyright (c) Oracle All rights reserved

  Connected to:
Oracle Database g Enterprise Edition Release Production
With the Partitioning Oracle Label Security OLAP and Data Mining Scoring Engine options

  SQL> @scn
SQL> col current_scn for
SQL> select current_scn from v$database;

  CURRENT_SCN

  SQL> select dbms_flashbackget_system_change_number current_scn from dual;

  CURRENT_SCN

  SQL> select dbms_flashbackget_system_change_number current_scn from dual;

  CURRENT_SCN

  SQL> select current_scn from v$database;

  CURRENT_SCN

  SQL> select dbms_flashbackget_system_change_number current_scn from dual;

  CURRENT_SCN

  SQL> select dbms_flashbackget_system_change_number current_scn from dual;

  CURRENT_SCN

  SQL> select current_scn from v$database;

  CURRENT_SCN


 我們看到current_scn的查詢會直接導致SCN的增進而其他方式並不會也就是說在這裡的current_scn就像是一個Sequence一樣查詢會導致增進這也很好理解v$database只能通過增進當前的SCN才能保證獲得的SCN是Current的可是如果不查詢呢?這個值肯定是不會增長的

  也就是說你不查詢就不知道current_scn的值你查詢它就變化是不是有點向薛定谔的貓的那種感覺?

  The End


From:http://tw.wingwit.com/Article/program/Oracle/201311/18014.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.