ITPub博客

首页 > 数据库 > Oracle > Oracle 11.2.0.1.0升级到11.2.0.4.7案例一则

Oracle 11.2.0.1.0升级到11.2.0.4.7案例一则

Oracle 作者:like052629 时间:2016-02-16 17:26:31 0 删除 编辑
总体思路:
(1) 备份数据库
(2) 备份oracle目录   
(3) 运行11.2.0.4.0 patchset,升级oracle 软件
(4) 运行dbua 或者脚本升级实例,从11.2.0.1.0升级到11.2.0.4.0             
(5) 使用opatch打小补丁,从11.2.0.4.0升级到11.2.0.4.7                      
(6) 检查升级后的版本信息和无效对象




一.备份数据库

run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset full  database format='/backup/rman/db%d_%s_%p';
sql 'alter system archive log current';
backup format='/backup/rman/ac%d_%s_%p' archivelog all delete all input;
backup current controlfile format='/backup/rman/con%d_%s_%p';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}


二. purge dba_recylebin;

三.shutdown immediate
   lsnrctl stop LISTENER_FMS

四. 备份ORACLE_HOME 
tar cvf product.zip /oracle/product/
tar cvf oraInventory.zip /oracle/oraInventory/


五.上传安装包并解压安装
1. 上传11.2.0.4.0 patch set
2. export DISPLAY=192.168.12.12:0.0
3.  ./runInstaller
4.忽略邮件
5.选择第三个选项,skip software update,
6.选择upgrade an existing database。


7.安装位置
  原安装目录是/oracle/product/11.2.0/dbhome_1 ,改成了/oracle/product/11.2.0.4/dbhome_1 即将oracle 安装到其他位置,这样可以减少宕机时间,也是oracle 推荐的方法。
8.Inventory directory:如有,将安装文件存放到其他目录:/oracle/oraInventory2。

9.执行脚本:里面的路径可覆盖,最好另起目录  /oracle/product/11.2.0.4/dbhome_1/root.sh

10.配置监听:
   这里会提示配置监听,因为监听之前已经存在,所以这里取消监听配置。选择skip


11.跳过监听配置之后,便是使用dbua工具升级,这个可默认按提示一路默认next,
或是,跳过dbua直接完成安装,而后选择脚本升级。


六.使用图形界面DBUA工具完成升级,仅需要环境变量和拷贝network目录。

1. 修改Oracle的.profile 文件

 我们重新指定了ORACLE_HOME,需要更新到.profile 里。
ORACLE_HOME=/oracle/product/11.2.0.4/dbhome_1


2.拷贝配置文件
具体操作步骤: cp /oracle/product/11.2.0/dbhome_1/dbs/* /oracle/product/11.2.0.4/dbhome_1/dbs/  (使用dbua跳过此步)

 cp -R /oracle/product/11.2.0/dbhome_1/network/admin/* /oracle/product/11.2.0.4/dbhome_1/network/admin/

3.必要时再执行升级检查脚本:
sqlplus / as sysdba
startup upgrade;
spool /home/oracle/utlu112i_check.txt
@?/rdbms/admin/utlu112i.sql   --检查
spool off;


注意此时oracle 实例是运行在新的ORACLE_HOME下.


七. 如选择手工执行脚本升级,在以上五后按以下步骤。 


1. 修改Oracle的.profile 文件
 我们重新指定了ORACLE_HOME,需要更新到.profile 里。
ORACLE_HOME=/oracle/product/11.2.0.4/dbhome_1


2. 修改/etc/oratab 中的 ORACLE_HOME路径为新的路径。
vi /etc/oratab


3.拷贝配置文件
具体操作步骤: cp /oracle/product/11.2.0/dbhome_1/dbs/* /oracle/product/11.2.0.4/dbhome_1/dbs/  

 cp -R /oracle/product/11.2.0/dbhome_1/network/admin/* /oracle/product/11.2.0.4/dbhome_1/network/admin/




4.执行升级检查脚本:
sqlplus / as sysdba
startup upgrade;
spool /home/oracle/utlu112i_check.txt
@?/rdbms/admin/utlu112i.sql   --检查
spool off;


5.如有不满足
则进行修改
alter system set xxx=xxx scope=spfile;


shutdown immeidate;
startup mount;
alter database flashback on;

select * from v$restore_point;
@?/rdbms/admin/utlu112i.sql 


6.升级
shutdown immediate;
startup upgrade;


set echo on 
spool /home/oracle/upgrade.log
set time on;
@?rdbms/admin/catupgrd.sql


spool off;


八.完成11.2.0.1.0升级11.2.0.4.0后便是进行PSU到11.2.0.4.7

1.备份原有OPatch: mv OPatch OPatch_bak

2.解压新的OPatch,unzip  升级11.2.0.4.7要求至少是 11.2.0.3.6版本的opatch.

3.解压opatch 补丁包。

4.cd 到补丁目录下,执行以下命令,进行补丁检测。
/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

5. sqlplus / as sysdba
   shutdown immediate
   并退出所有sqlplus 窗口


6.打补丁:在补丁目录下   /oracle/product/11.2.0.4/dbhome_1/OPatch/opatch apply

是否继续? [y|n]
y
User Responded with: Y
All checks passed.
提供电子邮件地址以用于接收有关安全问题的通知, 安装 Oracle Configuration Manager 并启动它。如果您使用 My Oracle
Support 电子邮件地址/用户名, 操作将更简单。
有关详细信息, 请访问 http://www.oracle.com/support/policies.html。
电子邮件地址/用户名: 

尚未提供电子邮件地址以接收有关安全问题的通知。
是否不希望收到有关安全问题 (是 [Y], 否 [N]) [N] 的通知:  y

本地系统是否已准备打补丁? [y|n]
y
User Responded with: Y
Backing up files...
Applying sub-patch '17478514' to OH '/opt/app/oracle/product/11.2.0/dbhome_1'

7.完成,并检查log。
Composite patch 20760982 successfully applied.
OPatch Session completed with warnings.
Log file location: /oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/opatch/opatch2015-10-15_20-50-03PM_1.log


OPatch completed with warnings.


8.实例打补丁


cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
startup
@catbundle.sql psu apply


9.完成实例打补丁,检查日志
Check the following log file for errors:
/oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/catbundle/catbundle_PSU_FMSS_APPLY_2015Oct15_20_55_14.log






10.验证补丁是否应用成功:
[/oracle/product/11.2.0.4/dbhome_1/rdbms/admin]#cd ../../OPatch
[/oracle/product/11.2.0.4/dbhome_1/OPatch]#./opatch lspatches
20760982;Database Patch Set Update : 11.2.0.4.7 (20760982)


11.查询版本信息
select * from dba_registry_history;
12.编译失效对象。
@?/rdbms/admin/utlrp.sql

13.重启监听 :lsnrctl start 

14.在运行一段时间后正常,更改compatible参数



oracle升级回退方案

一.回退版本到11.2.0.1.0

1.恢复ORACLE相关的目录。

2.使用闪回功能进行回退(在未更改compatible参数前提下)

 --在升级库前确定闪回是否打开。
   select flashback_on from v$database;
   --alter database flashback on;

 --创建闪回点
   alter database 
   create restore point UPGRADE_ROLLBACK guarantee flashback database;
   select * from v$restore_point;
 
  --升级失败后执行闪回数据库到闪回点。
    sqlplus / as sysdba
    shutdown immediate;
    startup mount;
    flashback database to restore point UPGRADE_ROLLBACK;
    alter database open resetlogs;
 
 --删除恢复点,无论需不需要闪回记得删除。
   select * from v$restore_point;
   drop restore point grpt;
 
3.升级前后都做一次全库rman 备份,保证数据遭到损坏时可以恢复。


二.回退opatch 到11.2.0.4.0
1.停止数据库

停止监听
lsnrctl status
lsnrctl stop
清理LOCAL=NO的进程
ps -ef| grep LOCAL=NO | grep -v grep | awk '{print "kill -9 " $2}' | sh
停止数据库
SQL> alter system checkpoint;
SQL> shutdown immediate

确保所有与oracle相关的进程都被停掉,包括本地的sqlplus连接也需要退出

2.补丁回退
su – oracle
$ORACLE_HOME/OPatch/opatch rollback -id 20760982

$ORACLE_HOME/OPatch/opatch lsinventory –bugs_fixed | grep -i database

3.回退数据注册信息
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle_PSU_FMSS_ROLLBACK.sql
SQL> QUIT










来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28258625/viewspace-1989683/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-11-18

  • 博文量
    120
  • 访问量
    485265