Oracle Database 10.2.0.5.0 的PatchSet, 在一个生产环境的小逻辑备库做了一下升级, 小记一下. 本升级步骤适用于升级OracleDatabase 10.2.0.x.0版本的数据库, 普通数据库和逻辑备库都一样.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目录, 一旦升级失败便于回退.
$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
另外一个备份的方法:
$cd $ORACLE_HOME/..
$cp -pr db_1 db_1_new(备份到新目录, 且保留mode,ownership,timestamps等信息)
$diff -q -r db_1 db_1_new(比较两个目录, 应该只有日志文件发生变化)
2)升级Oracle 软件
通过response文件开始升级, 升级时间大概2-3分钟.
$cd /u01/software/10g/
$unzipp8202632_10205_LINUX.zip
$cd Disk1
$export DISTRIB=`pwd`
$./runInstaller-silent-responseFile$DISTRIB/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账号和联网信息;
UNIX_GROUP_NAME="oinstall" oracle用户用于安装软件的组名;
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
...
Do you wish to continue (y/n) [n]:y
...
$tail -50f /tmp/changePerm_err.log
ü升级软件后检查:
$sqlplus /nolog
SQL*Plus: Release10.2.0.5.0- Production on Sat May 8 14:34:51 2010
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL>exit;
3升级数据库
$sqlplus / as sysdba
SQL>startup upgrade;(以升级模式启动数据库)
SQL>SPOOL/tmp/patch102050.log
SQL>@?/rdbms/admin/catupgrd.sql(重建数据字典,若有问题可重复执行)
...
Total Upgrade Time:00:23:34(数据库大小110G)
...
SQL>SPOOLoff
SQL>!egrep "ORA-|Error" /tmp/patch102050.log(查看是否有错误)
SQL>shutdown immediate;
SQL>startup;
SQL>select count(1) from dba_objects where status='INVALID';
COUNT(1)
----------
484
SQL>@?/rdbms/admin/utlrp.sql(编译失效PLSQL包对象, 尽管第一次访问包是会自动编译, 还是推荐操作)
...
OBJECTS WITH ERRORS
-------------------
0
...
ERRORS DURING RECOMPILATION
---------------------------
04开启OEM/isqlplus/监听
$ lsnrctl start$ isqlplusctlstart
$ emctlstartdbconsole
最后,记得修改compatible参数:
SQL> ALTER SYSTEM SET COMPATIBLE = ’10.2.0.5.0’ SCOPE=SPFILE;
--End--