Oracle - 自动创建回滚脚本

3

有没有办法自动生成 SQL 回滚脚本?

例如:

  SQL script      : Delete from table_A where name = 'John Doe'

  rollback script : Insert into table_A values (..... )

这里似乎有编程上的错误。 - alexherm
@alexherm - 如果您了解生产部署,"回滚脚本"或"回滚计划"几乎是必需的。它们用于撤销更改。不确定您所说的"程序上的错误"是什么意思。 - oradbanj
4
为什么?您可以使用闪回功能在提交事务后撤销该事务(尽管这可能取决于您的UNDO配置方式),并在此过程中获取还原脚本(尽管通常情况下,您会运行 dbms_flashback.backout_transaction 命令而不是运行还原脚本)。https://oracle-base.com/articles/11g/flashback-and-logminer-enhancements-11gr1#flashback_transaction 另一种选择是创建恢复点并进行数据库闪回以进行还原。 - Justin Cave
3
因此,询问业务问题是必要的——作为生产部署的一部分进行回退与想要撤销运行测试套件时所做的任何更改以将数据库恢复到已知良好状态是不同的。对于生产部署,进行事务回退可能是一个可行的解决方案,但它可能需要与您的部署流程集成一些工作(即如果必须上传脚本以进行变更控制才能进行部署)。 - Justin Cave
1
@oradbanj,如果不在某处存储值,你打算如何反转更新脚本?UPDATE t SET col = 1 WHERE id BETWEEN 1 AND 1000000;我怀疑是否存在这样的工具可以自动处理这种情况。你应该尝试备份/快照/或将所有内容包装在事务中,并在出现问题时回滚。 - Lukasz Szozda
显示剩余3条评论
1个回答

0

TOAD有一个内置功能,可以生成INSERT脚本。

  1. 在TOAD中编写SELECT查询并执行它

    SELECT * from table_A where name = 'John Doe'

  2. 在数据网格窗口中显示的数据中,右键单击并选择“导出数据集”选项。

  3. 在“导出数据集”窗口中,从“导出格式”下拉菜单中选择“插入语句”选项。

  4. 在“文件”字段中指定文件名以将输出保存到文件中,或者您也可以选择输出到剪贴板。

  5. 单击“确定”按钮以生成插入语句脚本。

    希望对你有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接