某个制造业客户,产线数据库版本为较早的9.2.0.8版本,存在性能以及后续支持问题,必须升级至最新的11.2.0.3版本。

大致情况如下

                  **操作系统**        **Cluster Package**        **Database Package**        存储管理                  **老平台**        Winodws 2003 x86        9.2.0.8        9.2.0.8        OCFS                  **新平台**        Windows 2008 R2 SP1 x64        11.2.0.3        11.2.0.3        ASM          

升级存在的几个难点:

  1. 跨平台,Windows 2003 x86 –>Windows 2008 x642. 跨版本,9i RAC与11g RAC之间的特性差异较大3. 数据文件的字节序,从32bit到64bit,RMAN的备份还原方式不一定兼容4. 停机时间,每天中午有1小时停机时间

讨论了几个方案,主要有一下几种:

**1. 滚动升级。*

先在新平台安装一套GI 11.2.0.3+RDBMS 9.2.0.8,通过RMAN备份还原到新平台

之后新平台的数据库再滚动升级到11.2.0.3版本

说明:该方案,中间过程存在“全新安装老版本DB”,“新GI搭配老DB”,“RMAN的跨版本不同字节序兼容性”和“滚动升级可能遇到的未知错误”等不可控制因素,首先被否决。

**2. DataGuard复制*

先在新平台安装一套GI 11.2.0.3+RDBMS 11.2.0.3,通过RMAN初始化数据文件,之后不断应用Redo Log来实现数据同步

说明:该方案是可选方案之一,存在的疑点为“RMAN的跨版本不同字节序兼容性”以及“更新数据字典时间过长”

现在回想起来,如果停机时间允许,只要验证过RMAN的兼容性问题,这个方案就是个不错的选择。

**3. TTS表空间迁移*

先在新平台安装一套GI 11.2.0.3+RDBMS 11.2.0.3,通过TTS表空间传输,把现有的表空间迁移过去即可

说明:该方案同事使用了RMAN和Import的处理方法,据熟稔此道的DBA大师们总结,此方法用在迁移整库的可行性不高,中间可能遇到各种未知错误。

**4. Export / Import导入导出*

先在新平台安装一套GI 11.2.0.3 + RDBMS 11.2.0.3,建立相应的实例和数据库对象

按照一定规则,Export导出9i平台的数据,Import导入到新平台,再重新创建索引,存储过程等对象即可。 > 说明:该方案最终被选用。Export/Import工具的使用,可以避开难点1~3。只要合理规划,可以确保升级过程无严重错误。 > 导入导出过程中出现的一些警告和简单错误,只须依照报错做Repair动作即可。 > 至于停机时间,经过双方协调,可以安排在春节长假期间,预留充分的时间,用于数据导入导出、修正错误以及测试。

**实施详细步骤*

more

历经3天的加班,最终数据库得以平滑升级成功。

最终的实施文档,受商业合约限制,不便透露用户信息。

这里只能贴个目录,跟大家说明一下大致的流程。

![201304252348.jpg](http://99dev.net/wp-content/uploads/2013/04/201304252348.jpg

 

**

**