一般情况下我们在安装oracle软件以后,创建数据库之前就会为oracle打上补丁,当然没打也没关系,接下里就会介绍oracle在建库以后
一般情况下我们在安装oracle软件以后,创建数据库之前就会为oracle打上补丁,当然没打也没关系,接下里就会介绍oracle在建库以后的升级过程,db:oracle 10g r2 10.2.0.1;os:red hat linux as 4。oracle安装参考:
一. 升级前的准备
首先下载并上传补丁包到数据库服务器上,因为我试验使用的是linux下32位的oracle 10g r2 10.2.0.1,所以需要的补丁为p5337014_10203_linux.zip。补丁直接到oracle官网上去下,注意对应的版本就可以了。
1. 解压补丁包,得到disk1文件夹
2. 备份数据库及oracle相关目录,必须是全备。推荐冷备,一旦升级出现问题恢复也比较快。
二. 升级oracle软件
1. 安装补丁包,需要用到图形终端。vnc使用参考:
2. 根据一步一步执行,知道提示以root身份运行root.sh脚本
3. 以root身份运行root.sh脚本,,完成后oracle软件升级完成。
三. 升级数据库
oracle软件升级完成以后先不忙启动数据库,否则会报如下错误:
ora-00704: bootstrap process failure
ora-39700: database must be opened with upgrade option
error 704 happened during db open, shutting down database
user: terminating instance due to error 704
instance terminated by user, pid = 7819
ora-1092 signalled during: alter database open...
升级数据库有两种方式:dbua图形化方式及手工升级方式,推荐使用手工升级方式。dbua图形化方式操作简单,只需按照提示一步一步往下做就可以了,需要注意如果要升级的数据库没有在列表中,需修改/etc/oratab添加相应的sid,升级过程作要勾选“升级完成后编译无效对象”选项。如果在升级之前没有备份,可以在使用dbua的时候选择备份数据库,dbua执行的是冷备,需要保留足够的空间。按照提示执行完成以后没有报错就可以finish了。
手工方式先使用echo $oracle_sid是否为需要升级的数据库,不是则使用export $oracle_sid=sid修改,然后以dba身份登录sqlplus,执行如下操作:
sql> startup upgrade
sql> spool /u01/upgrade.log
sql> @?/rdbms/admin/catupgrd.sql --需要等待较长时间
如果这一步顺利执行,那么数据升级工作已经完成一大半了,接下来重启数据库,编译无效对象。因为catupgrd.sql可能会造成一些数据对象无效,通过语句:select count(1) from dba_objects where status='invalid'查询是否存在有无效的对象,有则运行utlrp.sql编译无效的对象。
sql> shutdown immediate;
sql> startup
sql> @?/rdbms/admin/utlrp.sql --需要等待较长时间
编译完成以后查询一下表空间,用户,用户对象等信息,如果都没有问题,ok,我们的数据库升级算是成功了,接下来就备份一次数据库,然后打开应用。我们在查询对象的时候可能出现一些名字类似bin$bd34rx+6tcjek54334w==$0的对象,这些是保存在回收站里面的删除对象,可以忽略。
