gpt4 book ai didi

sql - Oracle RDBMS 记录是否有索引或时间戳,如何获取?

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:11 24 4
gpt4 key购买 nike

我目前正在进行一些重新设计工作,因为我现在无法获得有关内部系统逻辑的信息,该系统是在印度 build 的(外包)。

在这个过程中,如果我能够以某种方式确定插入特定表的记录(并可能更新)的顺序,那将对我很有帮助。出于某种原因,没有添加任何明确揭示这一点的时间戳,所以我正在寻找一些隐藏的 Oracle RDBMS 索引/时间戳以及如何获取它。我想使用全选返回记录的顺序不是随机的,所以我想一定有某种顺序。

我希望能够在选择中引用这个索引/时间戳,以便它作为记录集中的一个字段返回。这可能吗,我该怎么做?

最佳答案

默认情况下,Oracle 不会跟踪这类事情。您需要某种审核表、表中的一列、审核日志等才能正确检索此类信息。

假设您使用的是相当新的 Oracle 版本(当然是 10.2 或更高版本),ORA_ROWSCN 伪列可能足够接近。这是上次修改该行的系统更改号 (SCN) 的上限。但是,除非表是在启用 ROWDEPENDENCIES 的情况下构建的,否则 ORA_ROWSCN 仅在 block 级别而不是行级别进行跟踪。如果您假设一个 block 中的所有行都在大致相同的时间点插入,那么这可能已经足够接近了。当然,这不会是完美的——特别是在行从 block 中删除并且随后的插入在很晚的时间点填满了 DELETE 操作释放的空间的情况下.不过,如果您真的很幸运,该表是在启用 ROWDEPENDENCIES 的情况下构建的,ORA_ROWSCN 将为您提供上次修改(插入或更新)行的 SCN。

SCN_TO_TIMESTAMP 函数可用于将 SCN 转换为时间戳,但仅适用于相对有限的时间段(通常为几天)且粒度级别有限(+/- 5 分钟或 3 秒,具体取决于 Oracle 版本)。在大多数使用 ORA_ROWSCN 的示例中都使用了它,但不幸的是,它可能不会对您有太大帮助。

关于sql - Oracle RDBMS 记录是否有索引或时间戳,如何获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com