java - 仅使用一组示例数据创建生产的测试数据库副本

标签 java database oracle database-link

我们有 2 个 Oracle 数据库。一个是我们的生产客户数据库。另一个是测试数据库。测试数据库是生产的副本,没有任何数据......只是空表。我正在尝试想出一种高效且有效的方法来将样本数据集从生产数据库复制到测试。

我需要从我们的客户表中的 PK 样本列表开始,并编写一个流程来使用该样本填充测试数据库客户表。然后,我需要根据样本用相关数据填充子表。

我们曾经有一个 Java 进程,它会使用准备好的语句从生产环境中选择数据...根据结果集构建一个文件...然后使用更新语句将其放入测试数据库中。这是非常低效的。

我不是 DBA,所以我不太了解这个领域。我试着用谷歌搜索一些关于数据库链接的信息,但找不到很好的例子。

有谁知道这样做的方法...或者至少给我一个起点?

最佳答案

如果你有足够的空间,我建议复制整个生产数据来测试。这将更容易管理,它也可能是测试备份的好机会(从备份恢复到新实例)。

从开发人员的角度来看,如果没有一组具有代表性的数据,您将无法可靠地测试应用程序的性能。该数据集应具有与生产数据相同的属性(数据量、物理分布……)。实现这一目标的最简单方法是在测试中使用与生产中相同的数据。

如果您可以承受停机时间,您可以停止生产数据库,将文件复制到测试服务器并安装两个数据库。如果您无法承受停机时间,那么学习一些 DBA 技能可能是个好主意(并最终了解热备份然后恢复到新实例)。


更新:如果物理复制你的数据库不可行,你应该研究使用 expdpimpdp(或旧的 exp/imp).您可以复制所有模式或 filter the data on export .在这种情况下,您可以手动选择合适的 WHERE 子句。批量导出和导入比逐行复制数据快几个数量级。

关于java - 仅使用一组示例数据创建生产的测试数据库副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719881/

相关文章:

database - 图数据库的实现

sql - 如何使用 PLSQL 仅更改年份而不更改日期或月份来更新日期列?

java - 运行其他类的 main 方法

mysql - 数据库可移植性(sql server 到 mysql、postgresql)

php - 使用 Web 服务处理多个 mysql 数据库

c# - ora-00972 标识符太长 oracle 10g

java - "see"Java标准库可以离线吗

java - Java 中的 2D 软件光照问题

java - 转换具有文本初始化的文件后,我的字节数组充满零的原因是什么?

java - sleep 连接-奇怪的增加