1. 准备工作
1.1. 介质准备
一、下载介质
p6810189_10204_Linux-x86-64.zip
二、上传并解压介质
unzip p6810189_10204_Linux-x86-64.zip
实例:
[root@L-DB-128-36 patch]# cd /home/oracle/patch
[root@L-DB-128-36 patch]# ls -lt |grep 10204
-rw-r--r-- 1 oracle oinstall 1195551830 02-12 15:09 p6810189_10204_Linux-x86-64.zip
1.2. 备份
一、软件备份
$ cd /home/oracle/product
$ tar cvf /u01/bak/softbak/product_201102.tar 10.2.0
实例:
[root@L-DB-128-36 product]# tar cvf /u01/bak/softbak/product_201102.tar 10.2.0
10.2.0/
10.2.0/db_1/
10.2.0/db_1/sqlj/
10.2.0/db_1/sqlj/lib/
10.2.0/db_1/sqlj/lib/runtime12.jar
……
二、数据备份
1、 逻辑备份
停止wms\ chicago相关应用,在备份服务器上exp备份数据后关闭数据库
exp WMS/***@IDC_172.16.3.5 file=h:\dbback\oracle\data\WMS%date:~11,14%.dmp log=h:\dbback\oracle\log\WMS%date:~0,10%.log owner=WMS compress=n buffer=8092
exp chicago/***@IDC_172.16.3.5 file=h:\dbback\oracle\data\chicago%date:~11,14%.dmp log=h:\dbback\oracle\log\chicago%date:~0,10%.log owner=chicago compress=n buffer=8092
2、物理备份
rman>backup database format '/u01/bak/rman/shport_full_backup_%P_%T';
实例:
RMAN> backup database format '/u01/bak/rman/shport_full_backup_%P_%T';
Starting backup at 2011-02-12 23:42:49
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=522 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=+DGROUP1/shport/datafile/system.256.732734315
input datafile fno=00003
……
备份oracle数据库软件
$ cd /home/oracle/product
$ tar cvf /u01/bak/softbak/product_201102.tar 10.2.0
备份数据库
rman>backup format '/u01/bak/rman/shport_full_backup_%P_%T';
检查升级前无效对象
SQL> select owner,object_name,subobject_name,object_type,status from dba_objects where status<>'VALID'
第二步, 关闭数据库
emctl stop dbconsole
isqlplusctl stop
lsnrctl stop
shutdown immediate;
检查是否有进程使用oracle的相关库或程序
$ps -ef | grep ora
第三步,解压p6810189_10204_Linux-x86-64.zip,安装补丁包
unzip p6810189_10204_Linux-x86-64.zip
2. 实施
2.1. 环境检查
一、检查升级前无效对象
SQL> select owner,object_name,subobject_name,object_type,status from dba_objects where status<>'VALID'
2.2. 停数据库相关进程
一、停进程
1、emctl stop dbconsole
2、 isqlplusctl stop
3、 lsnrctl stop
4、 shutdown immediate;
二、检查是否有进程使用oracle的相关库或程序
1、$ps -ef | grep oracle
2、KILL -9 杀掉可能影响的进程(别把自己的SSH给KILL掉)
注:$fuser 指定目录是官方推荐的用法,但实际实施过程中有时候不管用
2.3. 升级
一、图形界面准备
确保用户能打开图形界面,可用root用户运行
export DISPLAY=IP:0.0
xhost +
如果出现界面乱码现象,执行命令:export LANG=en
二、执行runInstaller
以oracle用户执行Disk1下的runInstaller
./runInstaller
注:
1、 将安装包改成用户为oracle用户所有,之前已是就不用改了.
chown -R oracle:dba 解压目录/Disk1
在runInstaller时可能报子目录oui权限错误,原因一般为其他进程在用目录或权限问题
解决方法:把该软件包全部改成可执行chown -R 755 oracle:ointsll Disk1
也可能需要KILL掉相应进程。
2、出现图形界面后和windows上一样,选择oracle_home只有一个数据库的话默认即可。
完了最后会让你以root用户运行一个root.sh的脚本,该脚本会提示是否覆盖已存在的目录,默认为否即可。
三、以upgrade方式打开数据库
Startup upgrade;
以sys用户登录,检查system表空间情况:
select tablespace_name, sum(bytes)/(1024*1024) as free_space
from dba_free_space
where tablespace_name = 'SYSTEM'
group by tablespace_name;
如果该值小于50,则需要加大SYSTEM表空间;不建议使用resize方式而是使用添加文件的方式。
alter tablespace system add datafile '/opt/app/oradata/orcl/system02.dbf'size 300m;
四、设置SHARED_POOL_SIZE and JAVA_POOL_SIZE初始化参数
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;
注:检查shared_pool_size和java_pool_size大小,可适当增大(我们这里都设置成了150M,默认是0)。否则更新脚本因pool空间不够而无法升级成功。
如果启用自动sga管理,保证sga_max_size和sga_target在400M以上,如果是ASM系统则JAVA_POOL_SIZE不能设置。
五、执行升级脚本
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
注:
执行catupgrd.sql是个很耗时的过程。内存足够的话运行时间半个小时左右
检查 /opt/app/patch.log是否有报错,如果有错误可以重新执行该脚本
六、编译无效对象
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql
注:运行utlrp.sql以重新编译所有无效的PL/SQL程序包
正常运行结果:
ERRORS DURING RECOMPILATION
---------------------------
0
七、检查无效对象,必须无,至少比升级前要少
SQL> select owner,object_name,subobject_name,object_type,status from dba_objects where status<>'VALID'
实例:36数据库升级前30个无效对象,升级后0个无效对象
2.4. 升级后确认
一、升级结束,启动数据库及相关服务
emctl start dbconsol
isqlplusctl start
start
sqlplus / as sysdba
二、检查版本
select comp_name,version from dba_registry;
全是10.2.0.4.0,升级成功
三、连接检查
SQLPLUS
应用连接检查
本文转自zylhsy 51CTO博客,原文链接:http://blog.51cto.com/yunlongzheng/493942,如需转载请自行联系原作者