ITPub博客

首页 > 数据库 > Oracle > 11.2.0.1非原地手动升级到11.2.0.2的标准步骤

11.2.0.1非原地手动升级到11.2.0.2的标准步骤

原创 Oracle 作者:lusklusklusk 时间:2017-02-09 14:13:59 0 删除 编辑
从以前的 11.2.0.1 版本非原地手动升级到最新的 11.2.0.2 补丁集的步骤,参考文档 ID 1602485.1
非原地指新建一个oracle_home目录安装新版本11.2.0.2软件,不覆盖11.2.0.1目录
手动升级指不是使用dbua,即安装新版本11.2.0.2不勾选upgrade,勾选software only

本文档所含信息适用于所有平台
请注意:在本文中,当提到 11.2.0.1 时,指的是当前已安装的任意 11.2 版本 (11.2.0.1-11.2.0.N)。当提到 11.2.0.2 时,指的是 11.2 补丁集 (11.2.0.2-11.2.0.N) 的任意较新版本。


第 1 步
下载 11.2.0.2 或更高版本的 RDBMS 软件。

第 2 步
将最新的 11.2 RDBMS 软件安装到新的 ORACLE_HOME 中。(11.2.0.1不用关闭,11.2.0.2只安装software软件

第 3 步
安装最新的 11.2 RDBMS 软件之后,用11.2.0.1的ORACLE_HOME的11.2.0.1实例,执行 11.2.0.2 的ORACLE_HOME下的$ORACLE_HOME/rdbms/admin/utlu112i.sql 脚本,并将输出 spool 至一个文件。(确保实例是运行在旧版本的 ORACLE_HOME 的前提下, 
对正在运行的实例执行新版本的$ORACLE_HOME/rdbms/admin/utlu112i.sql 脚本。utlu112i.sql是一个升级检查脚本,根据spool输出的结果修改哪些出错的地方

第 4 步
用11.2.0.1的ORACLE_HOME的11.2.0.1实例
下载dbupgdiag.sql并运行(主要是验证有无失效对象,这个步骤可以忽略,直接运行下面的就可以)
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

第 5 步
整库备份数据库(RMAN全备或拷文件冷备都可以)

第 6 步
干净的关闭数据库(shudown immediate)

第7步(仅限windows平台)
1) 将环境变量 ORACLE_HOME 设置为指向 11.2.0.1 安装(Path里面指向11.2.0.1的bin,where oradim或where sqlplus来自11.2.0.1)。

2) 停止指向 11.2.0.1 安装的 Oracle 数据库服务。
  C:\> NET STOP OracleServiceORCL

3)  使用 %ORACLE_HOME%\bin\ORADIM 可执行程序删除 11.2.0.1 Oracle 服务(where oradim来自11.2.0.1)。
  C:\> ORADIM -DELETE -SID ORCL

4) 将环境变量 ORACLE_HOME 设置为指向 11.2.0.2 安装(Path里面指向11.2.0.2的bin,where oradim或where sqlplus来自11.2.0.2)。

5) 将 init.ora/spfile 和口令文件 (orapw.ora) 从 11.2.0.1 %ORACLE_HOME%/database 复制到 11.2.0.2 %ORACLE_HOME%/database。

6) 将网络配置文件(listener.ora、sqlnet.ora、tnsnames.ora 等)从 11.2.0.1 %ORACLE_HOME%\network\admin(或 $TNS_ADMIN)位置复制到 11.2.0.2 %ORACLE_HOME%\network\admin(或 %TNS_ADMIN%)位置。

7) 如果配置并使用了 DB Console/DB Control,将以下两个目录及其内容从 11.2.0.1 复制到 11.2.0.2。(如果未配置 DB Console/DB Control,则这些目录可能不存在。)
           ORACLE_HOME/
           ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_

8) 使用 11.2.0.2 的可执行程序,在命令提示符下创建 Oracle 11.2.0.2 服务(where oradim来自11.2.0.2)
C:\> ORADIM -NEW -SID SID -STARTMODE AUTO -SPFILE(推荐使用这条命令)
或如下 
C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT.ORA(个人当初使用这条命令时遇到问题,sqlplus报错ORA-12560,使用ID 989716.1也解决不了,原因是因为服务创建出现了问题,原因可能是INIT.ORA中的sid使用了小写,因为当时在电脑上该文件就是INIT大写,而sid是小写)

备注:以上在windows的服务中删除了11.2.0.1的实例服务,创建了11.2.0.2的实例服务,但是11.2.0.1监听并没有改变,个人直接使用sc delete 11.2.0.1监听,修改11.2.0.2下的listener.ora把ORACLE_HOME修改为11.2.0.2,再启动监听后,就会自动在windows的服务中创建11.2.0.2的监听



第 8 步(Unix 和 Linux)
配置目标 11.2.0.2 ORACLE_HOME

1) 确保环境变量 ORACLE_BASE、ORACLE_HOME、PATH、NLS_10 和 LIBRARY_PATH 设置为指向 11.2.0.2 安装。
将 ORACLE_SID 设置为 11.2.0.1数据库名以升级。
修改 /etc/oratab 文件指向您的 11.2.0.2 ORACLE_HOME。

2) 禁用 Database Vault
Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX

3) 将 init.ora/spfile 和口令文件 (orapw.ora) 从 11.2.0.1 $ORACLE_HOME/dbs 复制到 11.2.0.2 $ORACLE_HOME/dbs

4) 将网络配置文件(listener.ora、sqlnet.ora、tnsnames.ora 等)从 11.2.0.1 $ORACLE_HOME/network/admin(或 $TNS_ADMIN)位置复制到 11.2.0.2 $ORACLE_HOME/network/admin(或 $TNS_ADMIN)位置

5) 如果配置了并使用了 DB Console/DB Control,将以下两个目录及其内容从 11.2.0.1 复制到 11.2.0.2。(如果未配置 DB Console/DB Control,则这些目录可能不存在。)
           ORACLE_HOME/
           ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_
请为 指定实际的名称

6) 确保为 Oracle Database 11g 版本 2 (11.2) 正确设置了 COMPATIBLE 初始化参数。如果未正确设置 COMPATIBLE,则 Pre-Upgrade Information Tool 会在“Database”部分中显示警告。

7) 将初始化参数的值调整到至少为 Pre-Upgrade Information Tool 指示的最小值。对于安装了 JVM 的客户,必须在升级前将 java_pool_size 和 shared_pool_size 至少设置为 250MB,否则 JVM 升级可能会失败,并出现以下错误:
ORA-07445: exception encountered: core dump [qmkmgetConfig()+52] [SIGSEGV] [ADDR:0x18] [PC:0x103FFEC34] [Address not mapped to object] []

备注:以上第4小步修改11.2.0.2下的listener.ora把ORACLE_HOME修改为11.2.0.2

第 9 步
手动升级数据库。

1) 启动 sqlplus 并从新安装的目标 $ORACLE_HOME/rdbms/admin 下运行 catupgrd.sql 脚本
sqlplus " / as sysdba "
SQL> spool /tmp/upgrade.log
SQL> startup upgrade
SQL> set echo on
SQL> @catupgrd.sql;(升级脚本)

2) 查看 catupgrd.sql 生成的 spool 文件中的错误。

3) 按正常模式重新启动数据库。

4) SQL> @$ORACLE_HOME/rdbms/admin/catuppst.sql;(执行一些未在升级包中的操作)

5) SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql;(编译失效对象)

6) 运行 dbupgdiag.sql 脚本(参阅 note: 556610.1)并验证 dba_registry 中的所有组件均有效并且 dba_objects 中没有无效对象。(主要是验证有无失效对象,这个步骤可以忽略,直接运行下面的就可以)

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

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。11G OCM, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    382
  • 访问量
    536064