我有一个问题要解决,它需要对 Oracle 数据库中每个已执行的 sql 文件进行撤消操作。
我使用 MSBuild 在 xml 文件中执行它们 - 使用登录和 @*.sql 执行命令 sqlplus。
显然回滚是不行的,因为它不能回滚已经提交的事务。
我已经搜索了几天,仍然找不到答案。我学到的是 Oracle 闪回和时间点恢复。问题是我希望仅对当前用户撤消更改,即如果另一个用户同时进行了一些更改,那么我的解决方案仅对用户' X '而不是' Y '执行撤消。
我在 flashback_transaction_query 中找到了 start_scn 和 commit_scn。但它是否只识别一个用户?如果我闪回到给定的SCN怎么办?是否只会为我或其他用户撤消?我已经拿出
从 flashback_transaction_query 中选择 start_scn WHERE logon_user='MY_USER_NAME'
和
WHERE table_name = "MY_TABLE NAME"
并执行
闪回 SCN"这里是它的编号"
在所选操作的 SCN 上。这对我有用吗?
我还发现了有关时间点恢复的信息,但是当我阅读它时,它会使整个数据库不可用,因此其他用户将无法使用它。
所以我需要一些可以撤销整个 *.sql 文件的东西。