【发布时间】:2011-04-21 10:39:04
【问题描述】:
我们有一个用于生产的 Oracle Enterprise 数据库和另一个用作 QA 和开发数据库的实例。 QA 要求在数据库中为他们提供单独的模式,以便他们可以测试与开发人员所做的更改隔离的应用程序。例如,假设在开发中使用的模式和将在生产中使用的模式称为 APP_OWNER 并且 APP_OWNER 可以包含对其他模式中的表具有 FK 引用的表,例如在 BASE_OWNER 中。这个想法是创建一个 QA_APP_OWNER 模式并将生产数据拉入该模式,并将任何引用的 BASE_OWNER 表也拉入 QA_APP_OWNER 模式。一个简化的例子是:
Prod Setup:
----------------
BASE_OWNER.users
APP_OWNER.users (synonym to BASE_OWNER.users)
APP_OWNER.audit_users with FK to BASE_OWNER.users
QA Setup:
----------------
QA_APP_OWNER.users (copied data from prod)
QA_APP_OWNER.audit_users (FK to APP_OWNER.users)
这应该是可能的,因为我们不编写包含模式的代码/SQL。 (即,我们为运行应用程序的架构之外的表创建基于架构的同义词)
我的问题是,有没有很好的工具可以轻松创建这样的 QA_APP_OWNER 架构?我知道导出的 FROMUSER TOUSER 选项,但如果我没记错的话,这会将整个模式移动到另一个模式,但它不会让我一直到我想要的地方 b/c 我需要更改FK 上的参考资料。我不知道没有办法导出 DDL,手动更改它,然后手动导入数据。这不是一个有吸引力的选项,因为许多引用是对还引用其他表的表的引用,并且 APP_OWNER 模式本身具有过多的表。我担心的是,这越是手动,就越有可能发生错误,从而使被测试的东西在转移到生产环境时发生故障。一个不错的解决方案是为 Oracle 的开发人员和 QA 实例提供许可证,但有人告诉我“这不在预算之内”。
【问题讨论】:
-
咨询您的 Oracle 代表。有了处理器许可,您应该能够在您的许可服务器上运行任意数量的实例。
-
我们没有运行另一个实例的选项。
-
'与开发人员对架构所做的更改隔离'也许,但与数据库更改(修补、初始化参数等)无关。拥有一个单独的 QA 环境是一个很好的想法,即使不是必不可少的,但这样做似乎并没有给你(他们)带来太多好处。无论如何,最好在 QA 中准确复制生产模式和同义词,以便在上线之前发现新对象的潜在问题。 (如果你不能有一个新的 QA 实例,你可以有一个新的 dev 实例来代替吗?*8-)
标签: database oracle database-design testing oracle11g