我们这里有一个非常老的Oracle 8.0.5.0.0数据库,不幸的是,它仍然作为每天的生产系统大量使用。
我想开始计划如何将这个DB升级到最近的Oracle 12c。
不幸的是,这两个DB版本似乎都不能互相交流了(*)。因此,据我目前所知,唯一的解决方案是将每天的备份从8.0.5.0.0导入到12c,从技术角度来看,这是可行的,但不可行,因为8.0.5.0.0用于日常业务。此外: 8.0.5.0.0服务器上的数据非常大,以至于在12c服务器(在最近的Dell服务器上)导入备份需要大约6-8小时。
因此,问题是:
谢谢你的意见。
(*)当然,旧的Oracle 8.0.5.0.0客户端可以与Oracle 8.0.5.0.0服务器对话,最近的12c客户端可以与12c服务器对话。但是,似乎没有一个客户端解决方案可以同时与8.0.5.0.0和12c进行对话。
发布于 2015-10-08 13:31:32
这个问题有多种解决方案,但驱动问题是成本、允许停机时间和复杂性。
一种可以轻易测试的方法:
这种方法需要停机时间。一个周末应该已经足够了,只需花费一台新服务器、Oracle12许可证和一些VMWare软件许可证。请记住,测试和验证可能比导入数据花费更多的时间。
发布于 2015-10-08 16:02:25
这与其说是一个完整的回答,不如说是一个延伸的评论。
迁移有多种方法:
exp/imp是一个很好的方法。我认为出口/进口缓慢的主要原因是只有一项工作能完成这项工作。如果将表分组并并行执行这些组的导出/导入,则可以加速导出/导入。此外,可以从导入中删除索引创建和约束启用功能,以加快导入速度。这需要很多准备,但对于6G来说,这似乎是一种可能的方法。我认为所有这些方法对于您的数据库都是可能的(6Gb,12h停机时间),您选择的方法应该进行彻底的测试。
您不应该忘记,除了您的数据库,您的客户端必须升级和测试,也。这里,Oracle描述了主要的升级步骤:
发布于 2015-10-08 19:11:10
这不是一个完整的答案,而是对其他答案的补充。
在我工作的地方,我们必须将数据从旧的9.2 Oracle数据库转移到11.1 Oracle数据库。旧数据库位于AIX上,新数据库位于RHEL或Oracle Linux上。
对我来说,没有“好”的答案,这取决于许多因素:
我们使用(主要)两种不同的技术来迁移数据库。
第一种方法是用"exp“实用程序导出,用"imp”实用程序导入,并使用NOARCHIVELOG语言进行导入,因为它减缓了迁移过程。此操作所需的停机时间取决于数据库的大小。为了减少这一停机时间(我们需要一次在1小时内迁移500 G数据库),我们花费了时间和开发精力进行冷热数据分段、基于表/分区传输持续时间的优先级、源服务器和目标服务器之间的同步,以便在导出结束后直接启动导入,并最终将并行性添加到所有这些中。
第二个是自制的解决方案,与另一个答案中提到的金门一样: 1)复制结构(表、视图、函数等)。在ROWS=N 2中使用exp/imp工具)完全传输表的快照,并开始跟踪使用表上的触发器、全局操作序列和日志表进行的修改。3)利用这个日志表进行增量负载。一旦您想要实际迁移数据库,就可以更频繁地执行增量负载,从而将停机时间降到最低。该方法直到9.2.0.8版本才确定,因为LOB对象的触发器中存在bug。
希望这能有所帮助。
https://dba.stackexchange.com/questions/117375
复制相似问题