首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级场景: Oracle 8.0.5.0.0到Oracle 12c?

升级场景: Oracle 8.0.5.0.0到Oracle 12c?
EN

Database Administration用户
提问于 2015-10-08 08:31:05
回答 4查看 2.3K关注 0票数 3

我们这里有一个非常老的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小时。

因此,问题是:

,什么是从8.0.5.0.0升级到12c的好方法?

谢谢你的意见。

(*)当然,旧的Oracle 8.0.5.0.0客户端可以与Oracle 8.0.5.0.0服务器对话,最近的12c客户端可以与12c服务器对话。但是,似乎没有一个客户端解决方案可以同时与8.0.5.0.0和12c进行对话。

EN

回答 4

Database Administration用户

回答已采纳

发布于 2015-10-08 13:31:32

这个问题有多种解决方案,但驱动问题是成本、允许停机时间和复杂性。

  • 金门可以用一年的许可证购买,并且将完成从Oracle8i到12的零停机时间升级,您仍然需要从8.05升级到8i。
  • 通过使用VmWare P2V将机器转换为虚拟机,可以简化您的生活,而不需要任何停机时间。此方法允许您:
    • 在更好的硬件上获取生产数据库,这将提高大多数操作的速度。
    • 允许您复制机器,将其放在不同的子网上,并开始测试各种策略。

  • 我已经将模式从我们的Oracle 8i数据库直接导入到Oracle 11.2中,没有任何问题。您的里程可能因字符集、许可特性和程序员在PL/SQL代码中的任何非常规策略而有所不同。

一种可以轻易测试的方法:

  • 购买一台新服务器,安装32 RAM内存等硬件,安装VMWare Esxi。
  • 将旧机器转换为虚拟机器
  • 创建Oracle 8.05的开发副本
  • 用Oracle 12安装另一台虚拟机
  • 使用Oracle 10 or或11 or安装另一台虚拟机
  • 拍摄所有机器的快照,不作任何更改。
  • 获取8.05开发的导出,导入Oracle 10 an或11 an,进行测试和验证
  • 数据泵到12个数据库
  • 验证12上的数据,离线8.05和oracle 10 on或11 on

这种方法需要停机时间。一个周末应该已经足够了,只需花费一台新服务器、Oracle12许可证和一些VMWare软件许可证。请记住,测试和验证可能比导入数据花费更多的时间。

票数 4
EN

Database Administration用户

发布于 2015-10-08 16:02:25

这与其说是一个完整的回答,不如说是一个延伸的评论。

迁移有多种方法:

  1. 如果在不同版本之间存在如此大的差异,exp/imp是一个很好的方法。我认为出口/进口缓慢的主要原因是只有一项工作能完成这项工作。如果将表分组并并行执行这些组的导出/导入,则可以加速导出/导入。此外,可以从导入中删除索引创建和约束启用功能,以加快导入速度。这需要很多准备,但对于6G来说,这似乎是一种可能的方法。
  2. 可传输表空间在8.1中是可能的,因此您可以将数据库升级到8.1,并执行可传输表空间导出/导入。
  3. 最后,您可以从8.0升级到8.1到10.2到12.1:
    • 选择甲骨文数据库的升级方法(12c)
    • 选择升级方法(10g)

我认为所有这些方法对于您的数据库都是可能的(6Gb,12h停机时间),您选择的方法应该进行彻底的测试。

您不应该忘记,除了您的数据库,您的客户端必须升级和测试,也。这里,Oracle描述了主要的升级步骤:

  • 甲骨文数据库升级过程中的主要步骤
票数 3
EN

Database Administration用户

发布于 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。

希望这能有所帮助。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/117375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档