關於ora_rowscn的一點理解
--ora_rowscn返回的是當前會話中對該行進行修改的最近的SCN scott@TESTDB11>select empno, ename, ora_rowscn from emp;
EMPNO ENAME ORA_ROWSCN ---------- ---------- ---------- 7369 SMITH 2583143 7499 ALLEN 2583143 7521 WARD 2583143 7566 JONES 2583143 7654 MARTIN 2583143 7698 BLAKE 2583143 7782 CLARK 2583143 7788 SCOTT 2583143 7839 KING 2583143 7844 TURNER 2583143 7876 ADAMS 2583143 7900 JAMES 2583143 7902 FORD 2583143 7934 MILLER 2583143
14 rows selected.
--檢視當前的SCN號 scott@TESTDB11>select current_scn from v$database;
CURRENT_SCN ----------- 2643927
--對資料進行更新並提交 scott@TESTDB11>update emp set sal = sal * 2 where empno = 7788;
1 row updated.
scott@TESTDB11>commit;
Commit complete.
--再次檢視ora_rowscn,都有所增長 scott@TESTDB11>select empno, ename, ora_rowscn from emp;
EMPNO ENAME ORA_ROWSCN ---------- ---------- ---------- 7369 SMITH 2644024 7499 ALLEN 2644024 7521 WARD 2644024 7566 JONES 2644024 7654 MARTIN 2644024 7698 BLAKE 2644024 7782 CLARK 2644024 7788 SCOTT 2644024 7839 KING 2644024 7844 TURNER 2644024 7876 ADAMS 2644024 7900 JAMES 2644024 7902 FORD 2644024 7934 MILLER 2644024
14 rows selected.
--為什麼更新一個人的工資,所有行的ora_rowscn都改變了呢,原因就是這些行都在同一資料檔案的相同的塊中 scott@TESTDB11>select empno, ename, rowid, dbms_rowid.rowid_relative_fno(rowid) file#, 2 dbms_rowid.rowid_block_number(rowid) block#, ora_rowscn from emp;
EMPNO ENAME ROWID FILE# BLOCK# ORA_ROWSCN ---------- ---------- ------------------ ---------- ---------- ---------- 7369 SMITH AAAUzoAAEAAAACVAAA 4 149 2644024 7499 ALLEN AAAUzoAAEAAAACVAAB 4 149 2644024 7521 WARD AAAUzoAAEAAAACVAAC 4 149 2644024 7566 JONES AAAUzoAAEAAAACVAAD 4 149 2644024 7654 MARTIN AAAUzoAAEAAAACVAAE 4 149 2644024 7698 BLAKE AAAUzoAAEAAAACVAAF 4 149 2644024 7782 CLARK AAAUzoAAEAAAACVAAG 4 149 2644024 7788 SCOTT AAAUzoAAEAAAACVAAH 4 149 2644024 7839 KING AAAUzoAAEAAAACVAAI 4 149 2644024 7844 TURNER AAAUzoAAEAAAACVAAJ 4 149 2644024 7876 ADAMS AAAUzoAAEAAAACVAAK 4 149 2644024 7900 JAMES AAAUzoAAEAAAACVAAL 4 149 2644024 7902 FORD AAAUzoAAEAAAACVAAM 4 149 2644024 7934 MILLER AAAUzoAAEAAAACVAAN 4 149 2644024
14 rows selected.
-- rowdepencencies選項:確定使用行級別的依賴性跟蹤。表中的每一行都有一個SCN,這個SCN >= 修改該行的最後的事務的提交的SCN scott@TESTDB11>create table emp1 rowdependencies as select * from emp;
Table created. --剛建立之後,所有行的ora_rowscn都一致 scott@TESTDB11>select empno, ename, rowid, dbms_rowid.rowid_relative_fno(rowid) file#, 2 dbms_rowid.rowid_block_number(rowid) block#, ora_rowscn from emp1;
EMPNO ENAME ROWID FILE# BLOCK# ORA_ROWSCN ---------- ---------- ------------------ ---------- ---------- ---------- 7369 SMITH AAAUz6AAEAAAAIzAAA 4 563 2644529 7499 ALLEN AAAUz6AAEAAAAIzAAB 4 563 2644529 7521 WARD AAAUz6AAEAAAAIzAAC 4 563 2644529 7566 JONES AAAUz6AAEAAAAIzAAD 4 563 2644529 7654 MARTIN AAAUz6AAEAAAAIzAAE 4 563 2644529 7698 BLAKE AAAUz6AAEAAAAIzAAF 4 563 2644529 7782 CLARK AAAUz6AAEAAAAIzAAG 4 563 2644529 7788 SCOTT AAAUz6AAEAAAAIzAAH 4 563 2644529 7839 KING AAAUz6AAEAAAAIzAAI 4 563 2644529 7844 TURNER AAAUz6AAEAAAAIzAAJ 4 563 2644529 7876 ADAMS AAAUz6AAEAAAAIzAAK 4 563 2644529 7900 JAMES AAAUz6AAEAAAAIzAAL 4 563 2644529 7902 FORD AAAUz6AAEAAAAIzAAM 4 563 2644529 7934 MILLER AAAUz6AAEAAAAIzAAN 4 563 2644529
14 rows selected.
scott@TESTDB11>update emp1 set sal = sal + 500 where empno = 7788;
1 row updated.
scott@TESTDB11>commit;
Commit complete. --更新一行之後,只有被更新的行的ora_rowscn與其它的不同 scott@TESTDB11>select empno, ename, rowid, dbms_rowid.rowid_relative_fno(rowid) file#, 2 dbms_rowid.rowid_block_number(rowid) block#, ora_rowscn from emp1;
EMPNO ENAME ROWID FILE# BLOCK# ORA_ROWSCN ---------- ---------- ------------------ ---------- ---------- ---------- 7369 SMITH AAAUz6AAEAAAAIzAAA 4 563 2644529 7499 ALLEN AAAUz6AAEAAAAIzAAB 4 563 2644529 7521 WARD AAAUz6AAEAAAAIzAAC 4 563 2644529 7566 JONES AAAUz6AAEAAAAIzAAD 4 563 2644529 7654 MARTIN AAAUz6AAEAAAAIzAAE 4 563 2644529 7698 BLAKE AAAUz6AAEAAAAIzAAF 4 563 2644529 7782 CLARK AAAUz6AAEAAAAIzAAG 4 563 2644529 7788 SCOTT AAAUz6AAEAAAAIzAAH 4 563 2644586 7839 KING AAAUz6AAEAAAAIzAAI 4 563 2644529 7844 TURNER AAAUz6AAEAAAAIzAAJ 4 563 2644529 7876 ADAMS AAAUz6AAEAAAAIzAAK 4 563 2644529 7900 JAMES AAAUz6AAEAAAAIzAAL 4 563 2644529 7902 FORD AAAUz6AAEAAAAIzAAM 4 563 2644529 7934 MILLER AAAUz6AAEAAAAIzAAN 4 563 2644529
14 rows selected. |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1151262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於latch的一點點理解
- 關於crontab 的一點理解
- 關於BP演算法的一點理解演算法
- 關於建構函式的一點理解函式
- 關於C#中Thread.Join()的一點理解C#thread
- ruby關於flip-flop理解上一個注意點
- 關於position的一些理解
- 關於PHP 的一點點小分享PHP
- 關於Java的一點想法Java
- 關於position定位的一些理解
- 關於DDD概念的一些理解和困惑,煩勞Banq點撥
- 關於共享段與SGA的一點理解 上一週買了兩本書,
- 關於B*tree索引(index)的中度理解及bitmap 索引的一點探究(zt)索引Index
- 關於模式爭論的一點點思考模式
- 關於 DOM 的理解
- 關於Vuex的理解Vue
- 關於servlet的理解Servlet
- 關於-this指向的理解
- 關於DCI的理解
- 關於同步的一點思考-下
- 關於git flow的一點思考Git
- 關於PostCSS的一點小科普CSS
- 關於ORACLE的一點總結Oracle
- 關於“日誌”的一點心得
- 關於本書的一點想法
- 關於Dart中Future的一些理解Dart
- 關於Swift中Properties的一些理解Swift
- 關於Base64的一些理解
- 關於WebWind一點想法Web
- 關於遊標的一些理解
- 關於GAN的個人理解
- 關於協程的理解
- 關於對Host的理解
- 關於SCN的理解(全面)
- 關於scn的理解 (zt)
- 關於社交圈子的一點思考
- 關於碳中和的一點淺談
- 關於開發流的一點思考