【问题标题】:Oracle SCN clarificationOracle SCN 说明
【发布时间】:2015-08-02 12:16:34
【问题描述】:

我想知道为什么我在以下查询中得到不同的 SCN 号码

  1. SELECT TIMESTAMP_TO_SCN(SYSDATE) FROM DUAL - 我将它用于 POINT IN TIME RECOVER FOR TABLESPACE 。

  2. 从 V$DATABASE 中选择 CURRENT_SCN。 - 我将它用于数据库恢复(RMAN)

为什么我会得到两个不同的 SCN?

我知道 SCN 的基本知识,但我仍然很困惑。 任何人都可以澄清查询的确切含义是什么

【问题讨论】:

    标签: oracle recovery tablespace rman


    【解决方案1】:

    timestamp_to_scn 给出一个近似结果。在任何给定的时间内,一个数据库都可能经过数千个 SCN,因此结果无法准确。维护一个将时间戳与系统遇到的每个 SCN 相关联的表将非常昂贵。在幕后,Oracle 维护一个表,每隔几秒存储一次当前 SCN,并将该数据保存几天。在最近的版本中,该表的粒度是每 3 秒 1 个 SCN,尽管这可能会随着时间而改变。

    因此,当您致电timestamp_to_scn 时,您会得到一个在您感兴趣的日期后几秒钟内创建的 SCN,但它永远不会准确,也不会永远有效。这通常足够接近时间点恢复 - 您知道您想要恢复到 2015 年 5 月 20 日凌晨 12:05:00,但您并不真正关心您是否恢复到早一两秒的状态,或者之后。如果您正在识别一个特定的错误事务,您希望将系统恢复到(或之前),您不会想使用timestamp_to_scn

    【讨论】:

      【解决方案2】:

      这不是关于 2 个不同的查询,即使您尝试使用任何一个查询,SCN 每次都是不同的,因为它每实时生成一次。即使运行您的查询也会强制数据库每次创建新的 SCN .因此每次触发查询时,您都会获得不同的 SCN 数据库编号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-26
        • 2018-08-28
        • 1970-01-01
        • 1970-01-01
        • 2018-01-01
        相关资源
        最近更新 更多