Oracle数据库版本10.2.0.1升级到10.2.0.3
1、停止OEM/isqlplus/监听/DB实例
$ emctl stop dbconsole $ isqlplusctl stop $ lsnrctl stop $ sqlplus / as sysdba SQL> shutdown immediate;
2、升级Oracle软件
1) 备份ORACLE_HOME和oraInventory
升级前对要升级的ORACLE_HOME进行备份是必要的, 还有oraInventory目录, 一
旦升级失败便于回退
方法一,使用tar备份 $ cd $ORACLE_HOME/.. $ tar jcvf db_1_`date +%Y%m%d`.tar.bz2 db_1 $ cd $ORACLE_BASE $ tar jcvf oraInventory_`date +%Y%m%d`.tar.bz2 oraInventory 方法二,使用cp备份 $ cd $ORACLE_HOME $ cp -pr db_1 db_1_new (备份到新目录, 且保留mode,ownership,timestamps等信息) $ cp -pr oraInventory oraInventory_new
2) 升级Oracle 软件
2.1)通过response文件开始升级, 升级时间大概2-3分钟.
$ cd /u01/software/10g/ $ unzip p5337014_10203_LINUX.zip $ cd Disk1 注意升级前要保证/tmp空间有2.5G空余空间 $ ./runInstaller -silent -responseFile /u01/software/10g/DISK1/response/patchset.rsp ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1″ ORACLE_HOME_NAME=”OraDb10g_home1″ DECLINE_SECURITY_UPDATES=”true” 如果未使用默认的组oinstall, 则runInstaller命令后需再加一个参数: UNIX_GROUP_NAME=”oinstall” 各参数含义如下: -silent 表示以静默方式安装,不会有任何提示;
-responseFile 表示使用哪个响应文件,必需使用绝对路径;
ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1″ oracle安装目录;
ORACLE_HOME_NAME=”OraDb10g_home1″ ORACLE_HOME名;
DECLINE_SECURITY_UPDATES=”true” 是否需要安全更新, true表示不需要,
否则会要求输入metalink账号和联网信息;(10.2.0.3中无此选项)
UNIX_GROUP_NAME=”oinstall” oracle用户用于安装软件的组名;
2.2)设置DISPLAY=192.168.0.1:0.0 (设置图形显示,用的是xmanager的passive接收)
注意: 你也可以直接用./runInstaller运行,安装程序会检查和提示你一步一步的升级完成
3) 运行root.sh和changePerm.sh
升级结束后, 以root用户执行$ORACLE_HOME下的root.sh(如有提示则一直回车): # /u01/app/oracle/product/10.2.0/db_1/root.sh 安装PatchSet后新增的文件或目录是限制访问的, 其它用户或第三方工具要访问这些文件时会提示错误, 所以要修改权限: # su – oracle $ cd $ORACLE_HOME/install $ ./changePerm.sh $ tail -50f /tmp/changePerm_err.log
3、升级数据库
$ lsnrctl start 确保内存足够 SQL> ALTER SYSTEM SET SHARED_POOL_SIZE=’150M’ SCOPE=spfile; SQL> ALTER SYSTEM SET JAVA_POOL_SIZE=’150M’ SCOPE=spfile; $ sqlplus / as sysdba SQL> startup upgrade; (以升级模式启动数据库) SQL> SPOOL /tmp/patch102030.log SQL> @?/rdbms/admin/catupgrd.sql (重建数据字典, 若有问题可重复执行) SQL> SPOOL off
SQL> !egrep “ORA-|Error” /tmp/patch102050.log (查看是否有错误)
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/utlrp.sql (编译失效PLSQL包对象, 尽管第一次访问包是会自动编译, 还是推荐操作)
注意: 这个编译过程可能因为你数据库里面的对象问题,有一些错误,你需要在plsql下
执行: select * from UTL_RECOMP_ERRORS 检查无效的对象。有些是可以忽略的
4、开启OEM/isqlplus/监听
$ lsnrctl start
$ isqlplusctl start
$ emctl start dbconsole