代码之家  ›  专栏  ›  技术社区  ›  Peter G.

如何获取与我的提交相对应的SCN?

  •  1
  • Peter G.  · 技术社区  · 14 年前

    在Oracle中提交事务时,如何获取包含事务更改的最早SCN?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Gary Myers    14 年前

    提交后,使用DBMS\u FLASHBACK获取当前SCN。

    http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_flashb.htm#i997043

    亚当提出的ORA_ROWSCN概念并不是100%安全的。

    在6月1日上午10点,我插入了1000条1MB的记录。 上午10:30,我又做了一个同样大小的插页。A

    这些插入(几乎可以肯定)已作为脏块(即包含未提交的更改)写入数据库。它们将根据写入的时间拥有一个SCN,但是记录将被标记为锁定(并且块存储持有锁的事务的id)。

    7月15日,我读了那些积木。它们仍然是“脏的”,看起来是锁着的。读取一致性机制检查事务,发现它已经不存在了(而且已经有一段时间不存在了)。因此,系统知道这些记录已提交,但实际上无法给出提交时间的准确记录。它会清理脏的积木,然后在里面粘上一个SCN。SCN不是提交它们的准确时间,但是SCN对应于DB可以应用的最早时间。

        2
  •  1
  •   Adam Musch    14 年前

    使用 ORA_ROWSCN CREATE TABLE ... ROWDEPENDENCIES