Oracle ora_rowscn 何时换行

Posted

技术标签:

【中文标题】Oracle ora_rowscn 何时换行【英文标题】:When does Oracle ora_rowscn wrap 【发布时间】:2013-12-18 21:24:17 【问题描述】:

我正在使用 ora_rowscn 从 oracle 数据库到 MS SQL Server 数据仓库进行增量加载。这很好用。

但是,我找不到 ora_rowscn 换行时会发生什么以及 ora_rowscn 的数据类型到底是什么。

有人能解释一下吗?

当使用浮点列通过 SSIS 导入 ora_rowscn 时,建议使用浮点列,因为到目前为止我使用 bigint 是一个整数值。

文档:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns007.htm http://www.orafaq.com/node/2194 这提到 ROWDEPENDENCIES 需要 6 个字节,这是每个 ora_rowscn 值需要 6 个字节吗?

那么ora_rowscn 能得到的最大的是什么?

【问题讨论】:

【参考方案1】:

来自Ask Tom,回答问题:

当 COMMIT 发生时,SCN 加一。这是一个序列吗?当它必须回收时,它是否会走到尽头?

汤姆说:

它不是一个序列,它只是一个内部数字,它不是 像序列一样维护在 seq$ 中(它不能,它用于 管理数据文件,不能在数据文件的表中)

它不回收,它可以很高,你可以生成 每秒数千,仍然需要等待数十万 在我们用尽它之前的几年。

ora_rowscn 伪列显示行(或其块)受事务影响时的 SCN,因此它不会包装/回收。

大约两年前because of bugs 有很多关于 SCN 的讨论。有人提到,软限制为 16384 * 自 1988 年 1 月 1 日以来的秒数。我没有任何官方的链接,但它应该让你很好地了解它在近期或中期的未来可能会达到多高。即使当时确实如此,它也可能在 12c 中发生了变化,或者在未来再次发生变化,因为处理能力允许达到该软限制(即使没有错误)。

【讨论】:

这增加了我的解决方案的信心。虽然我还在想它到底能达到什么尺寸……

以上是关于Oracle ora_rowscn 何时换行的主要内容,如果未能解决你的问题,请参考以下文章

ora_rowscn 在 USING 子句中时的 Oracle 合并语句行为

SCN_TO_TIMESTAMP (Max(ora_rowscn)) 为表列表创建一个新的修改表

ORACLE中如何查找定位表最后DML操作的时间小结

ORACLE中如何查找定位表最后DML操作的时间小结

ORACLE中如何查找定位表最后DML操作的时间小结

ORACLE 最后表数据更新的时间