我想知道为什么我为以下的quires获得不同的SCN号码
SELECT TIMESTAMP_TO_SCN(SYSDATE)FROM DUAL - 我使用它来获取TABLESPACE的时间恢复点。
从V $ DATABASE中选择CURRENT_SCN。 - 我将它用于数据库恢复(RMAN)
为什么我要获得两个不同的SCN?
我知道SCN的基本知识,但我仍感到困惑。 任何人都可以澄清查询的确切含义
答案 0 :(得分:1)
timestamp_to_scn
给出了近似结果。在任何给定的秒内,数据库可能会经历数千个SCN,因此结果可能不准确。维护一个将时间戳与系统遇到过的每个SCN相关联的表会非常昂贵。在幕后,Oracle维护了一个表,该表每隔几秒就存储一次当前的SCN,并将该数据保留几天。在最近的版本中,该表的粒度是每3秒1 SCN,尽管可能随时间而变化。
因此,当您致电timestamp_to_scn
时,您会获得一个SCN,该SCN是在您感兴趣的日期的几秒钟内创建的,但它永远不会是精确的,并且不会永远有效。这通常足够接近时间点恢复 - 你知道你想要恢复到2015年5月20日上午12:05:00但你真的不在乎你是否恢复到一个或两个早期的状态或后来。如果您要识别要将系统还原到(或之前)的特定错误事务,则不希望使用timestamp_to_scn
。
答案 1 :(得分:0)
它不是大约2个不同的查询,即使您尝试使用任何一个查询,SCN每次都会因为每次实时生成而不同。甚至运行查询会强制数据库创建新的SCN evry时间.Hence每次触发查询时,都会获得不同的数据库SCN编号。