我想获取一个由TIBCO数据库适配器不断更新的Oracle数据库的一致快照.
典型地,TIBCO一次更新一堆表,然后是COMMIT.如果我遍历所有表,每天拍摄一次快照,那么我可以在提交之前从表A获取数据,并在提交之后从表B获取数据 - 但如果A和B有关系,那么它们将不再匹配正常.
"SET TRANSACTION READ ONLY"是要走的路吗?
例如
COMMIT
SET TRANSACTION READ ONLY
SELECT * FROM A WHERE A.ADB_UPDATEDDATE > TODAY()-1
SELECT * FROM B WHERE B.ADB_UPDATEDDATE > TODAY()-1
etc.
COMMIT
Run Code Online (Sandbox Code Playgroud)
(今天语法可能不正确,不重要!)
或者我能做些什么更好的事情?
如果"快照"是指一致模式下数据库的完整副本,那么我将从备份中恢复数据库并将其恢复到所需的时间点.Oracle恢复过程将处理一致性(由系统变更编号或SCN跟踪).
如果您使用RMAN进行备份和恢复,则会出现一个带有time子句的"DUPLICATE DATABASE"命令,这将使此操作相对轻松.
另一方面,如果您只是想以一致模式提取几个表,我可以考虑两个选项: