13号,晚上加班,将2台数据库从9.2.0.6 升级到9.2.0.8. 因为之前有个小bug,9.2.0.6 的DataGuard中会经常不能识别备库的监听,造成Data Guard不能同步。
Oracle 的升级包,path什么的,需要从metalink上下载,这个是Oralce的收费帐号,只有买了Oralcle的产品才有。 Oracle 的升级包里有readme.html文件,该文件里有升级的执行步骤,对于单实例,照上面的步骤操作就可以了。 这次升级是一个Data Guard 环境,所以要多几步操作。 关于Data Guard 环境下的Data Guard 升级,参考Blog:
Oracle Data Guard 环境下的数据库升级方法
http://blog.csdn.net/tianlesoftware/archive/2010/10/13/5938582.aspx
数据库是windows 2003 平台。 开始运行setup程序的时候,报了一个错误,虽然 oui窗口显示的中文是正常的,但是报错的窗口显示的却是乱码。
在执行程序之前,已经把所有的Oracle 服务都停掉了。 所以有点奇怪,后来又检查了一遍服务,还是没有问题。 想折腾出oui 界面乱码的问题,好看下报什么错,google 一下,说是JDK 的问题。 不想现在去解决这个问题,因为今天的任务是升级数据库,不想节外生枝。也是避免问题扩大化。
最终的找到的原因是因为一个sqlplus 窗口没有关闭,杯具。 所以,在升级的时候,切记把所有的服务和窗口都关闭。
这个错误之后,安装时又报了一个错误:
orapls9.dll(另一个程序正在使用此文件,进程无法访问)。
显示的界面还是乱码,因为不能确定问题,所以终止了安装,google 了一下。 有两种方法可以解决这个问题:
(1)找到使用该连接的进程,然后kill掉。
找进程可以用命令:tasklist /m orapls9.dll
杀进程可以用命令:orakill或者taskkill
(2) orapls9.dll会被Distributed Transaction Coordinator服务调用到,停掉这个服务后就可以继续安装了。
经过上面的折腾,数据库已经升级完成了。不过实例的相关组件还没有升级,需要执行2个脚本:@?/rdbms/admin/catpatch.sql 和 @ ?/rdbms/admin/utlrp.sql . catapatch.sql用来升级实例的相关组件,utlrp.sql 用来编译无效对象。
在这个执行这个脚本的时候,遇到了Oracle 的一个bug,还是9.2 的所有版本都有,到10g才修复。 关于这个bug 的处理过程,参考blog:
Oracle 9i 升级中的bug-- Sys.Cdc_alter_ctable_before ORA-04020 deadlock detected while trying to lock object
http://blog.csdn.net/tianlesoftware/archive/2010/10/13/5937398.aspx
把这个bug 搞定了,脚本也就执行完了,不过后来查看了一下组件的状态,有几个无效的,就又重新执行了一个catapatch.sql 脚本,最后还有一个组件, OLAP Catalog是无效的。最后从metalink上找到了解决方法。 具体参考Blog:
Oracle 9i 升级后 OLAP Catalog 组件 Invalid
http://blog.csdn.net/tianlesoftware/archive/2010/10/13/5937372.aspx
顺便也看了一下Oracle 组件的内容,参考Blog:
http://blog.csdn.net/tianlesoftware/archive/2010/10/13/5937382.aspx
上面工作结束了,单实例的升级也就ok了。 不过这个是Data Guard,所以又折腾了很长时间,去升级另一个数据库,步骤都差不多。 搞到最后时间都差点不够用。 小杯具.
小结:
做DBA,需要胆大心细,沉着稳重!还有,记得备份!
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满)
DBA3 群:62697850 DBA 超级群:63306533;
聊天 群:40132017
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请