轮询 Oracle DB 以了解更改

sca*_*cci 3 c# oracle plsql

我试图弄清楚如何在不使用触发器的情况下轮询对 Oracle 表所做的更改。我目前关心的唯一变化是新的/插入的记录。任何建议将不胜感激。

我也真的不想使用其他表来跟踪已更改的内容。

谢谢!

Jus*_*ave 5

CDC 是一种选择,但如果您只是编写需要收到新数据通知的应用程序,那么这可能会有点繁重,数据更改通知可能是更合适的解决方案。这也避免了轮询数据库的需要,因为数据库可以将更改通知应用程序。

您还可以潜在地使用 Streams 将更改记录发送到应用程序。

如果您真的想轮询表,并且假设您使用的是 10g 或更高版本,则可以使用ORA_ROWSCN伪列。默认情况下,这将为您提供对特定块的最后更改的近似 SCN(系统更改编号)。如果您不关心获得一些虚假行,那可能就足够了。如果在启用 ROWDEPENDENCIES 的情况下重建表,ORA_ROWSCN则将在行级别而不是在表级别进行跟踪。当然,由于ORA_ROWSCN未编入索引,因此检索自特定 SCN 以来已修改的行将需要进行表扫描。使用序列生成的主键或CREATED_DATE表中的列来跟踪插入行的时间可能会更好。