使用应用程序超过10年后,由于缺乏可扩展性而不断受到限制,我们决定从头开始重写它。由于新架构与旧应用程序不同,因此数据库也不同。问题出现了:是否存在将数据从以前的数据库迁移到新数据库的工业流程?有些表格相似,有些表格则不然。总的来说,我们需要一个流程来帮助我们确保在迁移过程中不会丢失任何数据或逻辑约束。
PS:旧数据库和新数据库都是Oracle数据库。
答案 0 :(得分:6)
虽然您没有在问题中指明这一点,但我假设您要开发新版本的应用程序/数据库,然后在某个转换点,您需要迁移旧版本的所有实时数据数据库进入你的新数据库。
如果是这种情况,那么你真的会问两个不同的过程:数据库结构的迁移(有一些修改),之后是数据本身的迁移。
对于第一个过程,最好的工具是你,开发人员(我不是说你是一个“工具” - 你知道我的意思)。你可以带来旧数据库的结构,然后根据新版本的需要进行更改;然而,这种方法通常会留下过多的旧结构。我认为最好利用这种情况并从头开始重建数据库,使用原始数据库作为一般参考。
对于第二个过程,我会将数据迁移视为一个单独的任务,需要单独编写和测试的应用程序。此应用程序可以是一组脚本或已编译的应用程序,也可以是最方便的任何内容。因为您的旧数据库和新数据库不具有相同的结构(实际上可能非常不同),所以没有商业工具可以自动处理此任务。通过将此视为您自己编写的独特应用程序,您可以在“上线”日期之前多次测试数据转换过程。
答案 1 :(得分:2)
我听说过几种不同的攻击方法。我见过的最简单的解决方案是使用Microsoft Access数据库并使用ODBC连接来连接新旧Oracle数据库。然后,您可以根据需要使用Access来迁移和转换数据。
更优雅的解决方案involes安装Microsoft SQL Server开发工具。您可以使用Business Intelligence Development Studio创建具有两个Oracle端点的SSIS包。 SSIS可以处理在数据库之间转换数据的繁重工作,您可以在本地运行该包,这样您就不必在任何地方运行SQL Server实例。
SSIS有一个教程系列:
http://www.developerdotstar.com/community/node/364
您可能还想查看Oracle Warehouse Builder (OWB)。这个名字有点令人困惑,但它是Oracle的ETL(提取,转换和加载)包。我从来没有亲自使用它,但它也可以做你想做的事。