我们在生产中有一个Oracle企业数据库,另一个实例同时用作QA和开发数据库。QA要求在数据库中为它们提供单独的模式,这样它们就可以测试独立于开发人员所做更改的应用程序。例如,假设在开发中使用的模式和将在生产中使用的模式称为app_owner,而app_owner可能包含对其他模式中的表(例如在base_owner中)具有fk引用的表。其想法是创建一个qa-app-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的地方,我需要更改fks上的引用。我不知道如何才能导出DDL,手动更改它,然后手动导入数据。这不是一个有吸引力的选择,因为许多引用都指向同样引用其他表的表,并且app_owner模式本身也有过多的表。我担心的是,越是手工操作,越有可能出现错误,当移动到生产环境中时,被测试的东西就越容易被破坏。一个不错的解决方案是同时为Oracle的dev和qa实例提供许可证,但我被告知这样做“不在预算之内”。