【问题标题】:Rollback data in integration environment after every test每次测试后在集成环境中回滚数据
【发布时间】:2015-04-21 13:23:49
【问题描述】:

我们有一个使用 Java 和 Oracle 数据库的旧系统。

我现在想建立一个集成环境,我们可以在其中通过 HTTP 调用运行测试。

在整个测试周期开始之前,将重新设置数据库。我们已经为此提供了功能。

现在,在每次测试之后,仅应回滚来自该测试的修改数据。这在 Oracle 数据库上是否可行?

【问题讨论】:

  • “不使用数据库事务”是什么意思?没有它你如何使用数据库?
  • 我不明白:您有一个“重新”设置数据库的程序,但是......它没有?
  • @kevinsky 也许我对交易有误,并以错误的方式表达了我的问题。假设在测试之前我的数据库中有状态 A。然后在测试后我有状态 B。但在每次测试后状态 A 应该再次恢复。
  • @Mat 我们的数据库设置删除了一些模式并创建了表。但我不想在每一次之后都使用这个功能。每次测试后,只应恢复测试前的状态。

标签: java oracle automated-tests integration-testing rollback


【解决方案1】:

如果您使用的是 Oracle 11,则可以使用 FLASHBACK 命令将表恢复到某个时间点。用法是这样的

FLASHBACK TABLE employees_test
  TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' minute);

您的用户将需要特殊权限

  • SELECT ANY DICTIONARY 或 FLASHBACK ANY TABLE 或 SELECT_CATALOG_ROLE

我假设这是针对开发或测试实例,因为这些权限不允许所有生产用户使用。

【讨论】:

    【解决方案2】:

    我看到了两个选项:

    • Flashback database - 您可以将数据库全局“回滚”到预定义的还原点。
    • 使用Datapump:当您的架构准备好时,将其导出。每次测试后,使用CONTENT=DATA_ONLYTABLE_EXISTS_ACTION=TRUNCATE 导入它(例如)。可以相当快,不需要设置闪回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2023-01-11
      • 1970-01-01
      • 2012-11-26
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多