我们在生产中有一个Oracle Enterprise数据库,另一个实例用作QA和Development数据库。 QA已要求在数据库中为它们提供单独的模式,以便它们可以测试与开发人员所做更改隔离的应用程序。例如,假设开发中使用的模式和将在生产中使用的模式称为APP_OWNER,APP_OWNER可以包含对其他模式中的表具有FK引用的表,例如BASE_OWNER。我们的想法是创建一个QA_APP_OWNER模式,并将生产数据转移到该模式中,同时拉出引用到QA_APP_OWNER模式中的任何BASE_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实例的许可,但我被告知“这不在预算中”这样做。
答案 0 :(得分:3)
不要这样做..设置单独的QA和开发数据库。你想要的只是不值得的麻烦。
答案 1 :(得分:1)
有点远,但impdp
REMAP_SCHEMA
选项会处理其他模式中的外键吗?我知道有一些事情并没有尝试处理,但不记得提到这种情况 - 可能只是因为它是不寻常的。
您可以在所有模式中执行单个expdp
,并impdp
将所有模式全部重新映射到QA_APP_OWNER
。显然,这不是我曾尝试过的......