21
Upgrade 11.2.0.1 RAC DB/RDBMS to 11.2.0.2 in Linux By Maclean.liu [email protected]

Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

Embed Size (px)

Citation preview

Page 1: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

Upgrade 11.2.0.1 RAC DB/RDBMS to 11.2.0.2 in Linux

By Maclean.liu

[email protected]

Page 2: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

About Me l Email:[email protected]

l Blog:www.oracledatabase12g.com

l Oracle Certified Database Administrator Master 10g and 11g

l Over 6 years experience with Oracle DBA technology

l Over 7 years experience with Linux technology

l Member Independent Oracle Users Group

l Member All China Users Group

l Presents for advanced Oracle topics: RAC, DataGuard, Performance Tuning and Oracle Internal.

Page 3: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

在<Upgrade 11.2.0.1 GI/CRS to 11.2.0.2 in Linux>一文中我们介绍了升级 11.2.0.1 GI/CRS 到11.2.0.2 的详细步骤,因为 GI/CRS 的版本总是要求大于 DB/RDBMS,所以这是我们升级RDBMS 数据库软件的前提条件。

接下来我们将具体介绍升级 11.2.0.1 DB/RDBMS 到 11.2.0.2 的详细步骤:

一、 下载补丁介质

11.2.0.2 的 patchset 目前没有公开的下载地址,因为 updates.oracle.com 目前已经不再提供 ftp

下载模式,所以我们只能通过登录 My Oracle Support 后进入 Patch 栏目搜索 Patchid 并获得加密的下载链接。

11.2.0.2 补丁集的全称是 11.2.0.2.0 PATCH SET FOR ORACLE DATABASE SERVER (Patchset)

(patchid:10098816),可以通过 10098816 这个 id 到 Patch 栏目搜索,并找出对应平台的介质zip 包。如 在 Linux x86-64 平台上:

以上 p10098816_112020_Linux-x86-64_1of7.zip 和 p10098816_112020_Linux- x86-64_2of7.zip

,这 2 个 zip 包对应为 Database/RDBMS 软件的介质,我们不需要下载所有的 7 个 zip 包,有这 2 个升级数据库软件就已经足够了。

完成以上 2 个软件的下载后,分别解压 zip 包:unzip p10098816_112020_Linux-x86-64_1of7.zip -d $PATCHHOMEunzip p10098816_112020_Linux-x86-64_2of7.zip -d $PATCHHOME

二、以 out of place 方式安装 11.2.0.2 DB 数据库软件

因为 11.2.0.2 的 Patchset 以后都是 out of place 的,所以我们可以不用像在 11gr2 以前那样必

Page 4: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

须在原有安装低版本软件的基础上才能升级软件,而可以选择在别的位置完全新安装。

注意该步骤不需要停止数据库实例,可以在前期工作中完成。

以 DB/RDBMS 数据库软件的拥有者身份(oracle 用户)启动方才解压目录下的 oui 安装界面:su - oracle

(oracle)$ unset ORACLE_HOME ORACLE_BASE ORACLE_SID(oracle)$ export DISPLAY=:0(oracle)$ cd $PATCHHOME(oracle)$ ./runInstaller

在 Oracle Universal Installer 界面下的 Select Installation Options Screen 选择 install database only.

在 Grid Installation Options 下若是 RAC 数据库则选择 Oracle Real Application cluster database

installation,注意如果在该屏幕下出现[FATAL] [INS-35354] The system on which you are

attempting to install Oracle RAC is not part of a valid cluster 则可能是在之前的安装 Gird 的过程中没有正确的 Update Inventory 更新信息库信息,见<11gr2 RAC 安装 INS-35354 问题一例

>。

Page 5: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

若是单节点数据库则选择 Single instance database installation

Page 6: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

在 Specify Installation Location Screen 上一般 OUI 会帮你自动匹配一个$ORACLE_BASE 变量下不同于原有数据库软件安装目录的新目录,确认这些目录下有足够的磁盘空间,保 险起见空间应大于 10GB。注意这里是 out of place 安装,所以千万不要填入原有的安装路径。

以上安装完成后 OUI 会提示要在所有节点上以 root 身份执行 root.sh 脚本:su - root(root #) /s01/orabase/product/11.2.0/dbhome_2/root.sh

Running Oracle 11g root script...

The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /s01/orabase/product/11.2.0/dbhome_2

Enter the full pathname of the local bin directory: [/usr/local/bin]:The contents of "dbhome" have not changed. No need to overwrite.The contents of "oraenv" have not changed. No need to overwrite.The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root script.

Page 7: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

Now product-specific root actions will be performed.Finished product-specific root actions.

三、升级前的准备工作以上我们完成了 11.2.0.2 数据库软件的安装工作,但是还没有升级实例和数据字典。在正式升级之前,极有必要完成一系列的备份和准备工作,这些准备工作可以详见拙作<Oracle 数据库升级前必要的准备工作 >

1.清理数据字典中的无用数据,包括审计和回收站,它们可能拉慢数据字典升级的速度:TRUNCATE TABLE SYS.AUD$;purge DBA_RECYCLEBIN;

2.如果条件允许的话,建议使用 RMAN 全量备份数据库,前提是数据库没有达到 TB 级别。rman target / catalog rman/rman@cata

backup as compressed backupset incremental level 0 database ;

3. 收集数据字典的统计信息,若 dictionary 的统计信息不准备可能导致 catupgrd.sql 字典升级脚本运行过久:SQL> set timing on;

SQL> EXECUTE dbms_stats.gather_dictionary_stats;

PL/SQL procedure successfully completed.

Elapsed: 00:00:27.81

4.运行 dbupgdiag.sql 升级信息收集脚本 , 该脚本可以提供数据库的一些版本信息和组建信息,以下为该脚本的示例输出内容:cat db_upg_diag_VPROD_07-Sep-2011_0737.log

*** Start of LogFile ***

Oracle Database Upgrade Diagnostic Utility 09-07-2011 19:37:23

===============Database Uptime===============

19:32 07-SEP-11

=================Database Wordsize=================

Page 8: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

This is a 64-bit database

================Software Version================

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production

=============Compatibility=============

Compatibility is set as 11.2.0.0.0

================Component Status================

Comp ID Component Status Version Org_Version Prv_Version------- ---------------------------------- --------- -------------- -------------- --------------CATALOG Oracle Database Catalog Views VALID 11.2.0.1.0CATPROC Oracle Database Packages and Types VALID 11.2.0.1.0OWM Oracle Workspace Manager VALID 11.2.0.1.0RAC Oracle Real Application Clusters VALID 11.2.0.1.0

======================================================List of Invalid Database Objects Owned by SYS / SYSTEM======================================================

Number of Invalid Objects------------------------------------------------------------------There are no Invalid Objects

DOC>################################################################DOC>DOC> If there are no Invalid objects below will result in zero rows.DOC>DOC>################################################################DOC>#

no rows selected

================================List of Invalid Database Objects================================

Number of Invalid Objects------------------------------------------------------------------There are no Invalid Objects

DOC>################################################################DOC>DOC> If there are no Invalid objects below will result in zero rows.DOC>DOC>################################################################DOC>#

no rows selected

Page 9: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

==============================================================Identifying whether a database was created as 32-bit or 64-bit==============================================================

DOC>###########################################################################DOC>DOC> Result referencing the string 'B023' ==> Database was created as 32-bitDOC> Result referencing the string 'B047' ==> Database was created as 64-bitDOC> When String results in 'B023' and when upgrading database to 10.2.0.3.0DOC> (64-bit) , For known issue refer below articlesDOC>DOC> Note 412271.1 ORA-600 [22635] and ORA-600 [KOKEIIX1] Reported WhileDOC> Upgrading Or Patching Databases To 10.2.0.3DOC> Note 579523.1 ORA-600 [22635], ORA-600 [KOKEIIX1], ORA-7445 [KOPESIZ] andDOC> OCI-21500 [KOXSIHREAD1] Reported While Upgrading To 11.1.0.6DOC>DOC>###########################################################################DOC>#

Metadata Initial DB Creation Info-------- -----------------------------------B047 Database was created as 64-bit

===================================================Number of Duplicate Objects Owned by SYS and SYSTEM===================================================

Counting duplicate objects ....

COUNT(1)---------- 4

=========================================Duplicate Objects Owned by SYS and SYSTEM=========================================

Querying duplicate objects ....

OBJECT_NAME OBJECT_TYPE---------------------------------------- ----------------------------------------AQ$_SCHEDULES TABLEAQ$_SCHEDULES_PRIMARY INDEXDBMS_REPCAT_AUTH PACKAGE BODYDBMS_REPCAT_AUTH PACKAGE

DOC>DOC>################################################################################DOC>DOC> If any objects found please follow below article.DOC> Note 1030426.6 How to Clean Up Duplicate Objects Owned by SYS and SYSTEM schemaDOC> Read the Exceptions carefully before taking actions.DOC>DOC>################################################################################DOC>#

================JVM Verification

Page 10: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

================

JAVAVM - NOT Installed. Below results can be ignored

================================================Checking Existence of Java-Based Users and Roles================================================

DOC>DOC>################################################################################DOC>DOC> There should not be any Java Based users for database version 9.0.1 and above.DOC> If any users found, it is faulty JVM.DOC>DOC>################################################################################DOC>#

User Existence---------------------------No Java Based Users

DOC>DOC>###############################################################DOC>DOC> Healthy JVM Should contain Six Roles.DOC> If there are more or less than six role, JVM is inconsistent.DOC>DOC>###############################################################DOC>#

Role------------------------------No JAVA related Roles

Roles

=========================================List of Invalid Java Objects owned by SYS=========================================

There are no SYS owned invalid JAVA objects

DOC>DOC>#################################################################DOC>DOC> Check the status of the main JVM interface packages DBMS_JAVADOC> and INITJVMAUX and make sure it is VALID.DOC> If there are no Invalid objects below will result in zero rows.DOC>DOC>#################################################################DOC>#

no rows selected

INFO: Below query should succeed with 'foo' as result.select dbms_java.longname('foo') "JAVAVM TESTING" from dual *ERROR at line 1:ORA-00904: "DBMS_JAVA"."LONGNAME": invalid identifier

Page 11: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

*** End of LogFile ***

以上 spool 内容显示所要升级的数据库现有 CATALOG、CATPROC、OWM 和 RAC 组件,且没有安装 JVM,升级 JVM 组建的数据字典将消耗较长的时间。

另外一个建议运行的脚本是 utlu112i.sql,它位于新安装的$ORACLE_HOME/rdbms/admin 目录下。

该脚本会给出一些升级前地建议,包括建议保证系统表空间和闪回区域有足够的空间,以及收集数据字典的统计信息,如以下输出:SQL> @/s01/orabase/product/11.2.0/dbhome_2/rdbms/admin/utlu112i.sqlOracle Database 11.2 Pre-Upgrade Information Tool 09-07-2011 20:02:30Script Version: 11.2.0.2.0 Build: 001.**********************************************************************Database:**********************************************************************--> name: VPROD--> version: 11.2.0.1.0--> compatible: 11.2.0.0.0--> blocksize: 8192--> platform: Linux x86 64-bit--> timezone file: V11.**********************************************************************Tablespaces: [make adjustments in the current environment]**********************************************************************--> SYSTEM tablespace is adequate for the upgrade..... minimum required size: 267 MB--> SYSAUX tablespace is adequate for the upgrade..... minimum required size: 150 MB--> UNDOTBS1 tablespace is adequate for the upgrade..... minimum required size: 253 MB--> TEMP tablespace is adequate for the upgrade..... minimum required size: 61 MB.**********************************************************************Flashback: ON**********************************************************************FlashbackInfo:--> name: +SYSTEMDG--> limit: 4977 MB--> used: 264 MB--> size: 4977 MB--> reclaim: 0 MB--> files: 7WARNING: --> Flashback Recovery Area Set. Please ensure adequate disk space in recovery areas before performing an upgrade..**********************************************************************Update Parameters: [Update Oracle Database 11.2 init.ora or spfile]Note: Pre-upgrade tool was run on a lower version 64-bit database.**********************************************************************--> If Target Oracle is 32-Bit, refer here for Update Parameters:-- No update parameter changes are required..

--> If Target Oracle is 64-Bit, refer here for Update Parameters:

Page 12: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

-- No update parameter changes are required..**********************************************************************Renamed Parameters: [Update Oracle Database 11.2 init.ora or spfile]**********************************************************************-- No renamed parameters found. No changes are required..**********************************************************************Obsolete/Deprecated Parameters: [Update Oracle Database 11.2 init.ora or spfile]**********************************************************************-- No obsolete parameters found. No changes are required.

**********************************************************************Components: [The following database components will be upgraded or installed]**********************************************************************--> Oracle Catalog Views [upgrade] VALID--> Oracle Packages and Types [upgrade] VALID--> Real Application Clusters [upgrade] VALID--> Oracle Workspace Manager [upgrade] VALID.**********************************************************************Miscellaneous Warnings**********************************************************************WARNING: --> The "cluster_database" parameter is currently "TRUE".... and must be set to "FALSE" prior to running a manual upgrade.WARNING: --> Database is using a timezone file older than version 14..... After the release migration, it is recommended that DBMS_DST package.... be used to upgrade the 11.2.0.1.0 database timezone version.... to the latest version which comes with the new release.WARNING: --> Your recycle bin is turned on and currently contains no objects..... Because it is REQUIRED that the recycle bin be empty prior to upgrading.... and your recycle bin is turned on, you may need to execute the command: PURGE DBA_RECYCLEBIN.... prior to executing your upgrade to confirm the recycle bin is empty..**********************************************************************Recommendations**********************************************************************Oracle recommends gathering dictionary statistics prior toupgrading the database.To gather dictionary statistics execute the following commandwhile connected as SYSDBA:

EXECUTE dbms_stats.gather_dictionary_stats;

**********************************************************************Oracle recommends removing all hidden parameters prior to upgrading.

To view existing hidden parameters execute the following commandwhile connected AS SYSDBA:

SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\'

Changes will need to be made in the init.ora or spfile.

**********************************************************************Oracle recommends reviewing any defined events prior to upgrading.

To view existing non-default events execute the following commandswhile connected AS SYSDBA:

Page 13: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

Events: SELECT (translate(value,chr(13)||chr(10),' ')) FROM sys.v$parameter2 WHERE UPPER(name) ='EVENT' AND isdefault='FALSE'

Trace Events: SELECT (translate(value,chr(13)||chr(10),' ')) from sys.v$parameter2 WHERE UPPER(name) = '_TRACE_EVENTS' AND isdefault='FALSE'

Changes will need to be made in the init.ora or spfile.

**********************************************************************

5.如果数据库很大那么建议打开闪回数据库 flashback database,并创建还原点,这样可以极大地缩短回退时间。

可以通过以下查询判断数据库是或否启用了 flashback database功能:

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON------------------NO

若显示 NO 则说明之前没有启用数据库闪回功能,若希望启用数据库闪回功能需要数据库短时间停机:

关 所有的数据 例闭 库实

SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.

启 某一套 例到动 实 mount 状态

SQL> startup mount;ORACLE instance started.

Total System Global Area 1252663296 bytesFixed Size 2212936 bytesVariable Size 603982776 bytesDatabase Buffers 637534208 bytesRedo Buffers 8933376 bytesDatabase mounted.

SQL> alter database flashback on;

Database altered.

Page 14: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

在本 点打开数据 ,并启 所有 点节 库 动 节

SQL> alter database open;

Database altered.

以上在数据库级别启用了闪回 flashback功能。

接着我们需要停止应用程序,注意在这一步之前的准备工作都可以在线完成,但是本步骤将要求停止一切应用程序的链接,关闭数据库,并启动到 restrict限制模式,以便创建 restore

point,方便可能的升级回退。,strict 模式避免了普通用户的链接。

在所有节点上关闭数据库实例,并在唯一节点上启动数据库到 restrict 模式。

startup restrict;ORACLE instance started.

Total System Global Area 1252663296 bytesFixed Size 2212936 bytesVariable Size 603982776 bytesDatabase Buffers 637534208 bytesRedo Buffers 8933376 bytesDatabase mounted.Database opened.

SQL> conn maclean/macleanERROR:ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

Warning: You are no longer connected to ORACLE.

conn / as sysdba

SQL> create restore point maclean_rollback guarantee flashback database;Restore point created.

SQL> select * from v$restore_point;

SCN DATABASE_INCARNATION# GUA STORAGE_SIZE---------- --------------------- --- ------------TIME---------------------------------------------------------------------------RESTORE_POINT_TIME PRE--------------------------------------------------------------------------- ---NAME-------------------------------------------------------------------------------- 601958 1 YES 1594163207-SEP-11 07.52.59.000000000 PM YESMACLEAN_ROLLBACK

Page 15: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

四、正式升级数据库实例和数据字典

1. 关闭所有数据库实例

2. 复制相关的 pfile或 spfile形式的参数到新的 ORACLE_HOME 下,这里我们假设使用 ASM

存储共享的 spfile,那么只需要在所有节点上将 init$SID.ora形式的文件拷贝即可:

(oracle $) cat $ORACLE_HOME/dbs/initVPROD1.oraSPFILE='+SYSTEMDG/VPROD/spfileVPROD.ora'

(oracle $) cp $ORACLE_HOME/dbs/initVPROD1.ora /s01/orabase/product/11.2.0/dbhome_2/dbs

置设 ORACLE_HOME和 PATH 量指向新的变 11.2.0.2数据 件库软

(oracle $) export ORACLE_HOME=/s01/orabase/product/11.2.0/dbhome_2(oracle $) export PATH=/s01/orabase/product/11.2.0/dbhome_2/bin:$PATH

置正确的设 ORACLE_SID

(oracle $) export ORACLE_SID=VPROD1(oracle $) unset LD_LIBRARY_PATH

3. 启动实例到 nomount状态,并修改 cluster_database参数到 spfile:

SQL> startup nomount;ORACLE instance started.

Total System Global Area 1252663296 bytesFixed Size 2226072 bytesVariable Size 402655336 bytesDatabase Buffers 838860800 bytesRedo Buffers 8921088 bytes

SQL> alter system set cluster_database=false scope=spfile;

System altered.

4. 重启实例到 upgrade 模式,升级数据字典,运行$ORACLE_HOME/rdbms/admin/catupgrd.sql 脚本:

SQL> shutdown immediate;ORA-01507: database not mounted

ORACLE instance shut down.SQL> startup upgrade;ORACLE instance started.

Page 16: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

Total System Global Area 1252663296 bytesFixed Size 2226072 bytesVariable Size 402655336 bytesDatabase Buffers 838860800 bytesRedo Buffers 8921088 bytesDatabase mounted.Database opened.

SQL> set echo on

SQL> SPOOL /tmp/upgrade.log

SQL> set time on;

20:40:40 SQL> @/s01/orabase/product/11.2.0/dbhome_2/rdbms/admin/catupgrd.sql

在以上 catupgrd.sql脚本运行 程中可以通过 过 DBA_SERVER_REGISTRY 了解 件字典升 的 度视图 组 级 进

SQL> select * from DBA_SERVER_REGISTRY;select * from DBA_SERVER_REGISTRY *ERROR at line 1:ORA-04063: view "SYS.DBA_SERVER_REGISTRY" has errorsorERROR at line 1:ORA-04063: package body "SYS.DBMS_REGISTRY" has errors

在一开始会提示 有 , 不要 ,稍等一会。该视图 错误 这 紧

SQL> select comp_name,status,version from dba_server_registry;

COMP_NAME STATUS VERSION-------------------------------------------------- -------------------------- ------------------------------Oracle Workspace Manager UPGRADING 11.2.0.1.0Oracle Database Catalog Views VALID 11.2.0.2.0Oracle Database Packages and Types VALID 11.2.0.2.0Oracle Real Application Clusters VALID 11.2.0.2.0

20:50:40 SQL>20:50:40 SQL> Rem *********************************************************************20:50:40 SQL> Rem END catupgrd.sql20:50:40 SQL> Rem *********************************************************************20:50:40 SQL>

以上 catupgrd.sql脚本运行了 10分 左右钟

重启 例,运行实 utlrp.sql脚本 失效 象编译 对

sqlplus / as sysdbastartup;

@?/rdbms/admin/utlrp

Page 17: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

TIMESTAMP--------------------------------------------------------------------------------COMP_TIMESTAMP UTLRP_BGN 2011-09-07 20:53:38

脚本会自 根据该 动 cpu数目 并行度选择

DOC> This script automatically chooses serial or parallel recompilationDOC> based on the number of CPUs available (parameter cpu_count) multipliedDOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).DOC> On RAC, this number is added across all RAC nodes.

TIMESTAMP--------------------------------------------------------------------------------COMP_TIMESTAMP UTLRP_END 2011-09-07 20:55:09

脚本耗该 时约 2分钟

修改 cluster_database参数为 true,并重启所有 点 例节 实

SQL> alter system set cluster_database=true scope=spfile;

System altered.

可以看到以上在数据库仅安装了 CATALOG、CATPROC、OWM 和 RAC Cluster View 4种组件的情况下,catupgrd.sql 字典升级脚本仅耗时 10 分钟左右。 而实际的生产库可能安装了更多的组件,如 JVM等组件将耗时较多。

以下总结了各Oracle 组件升级字典的平均耗时,是一张十分有用的升级时间参考表:

DB Sample Upgrade Time

较少组件情况下

Component HH:MM:SS

Oracle Server 00:16:17

JServer JAVA Virtual Machine 00:05:19

Oracle XDK 00:00:48

Oracle Text 00:00:58

Oracle XML Database 00:04:09

Oracle Database Java Packages 00:00:33

Gathering Statistics 00:02:43

Total Upgrade Time: 00:30:47

较多组件情况下

Component HH:MM:S

Page 18: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

S

Oracle Server 00:16:17

JServer JAVA Virtual Machine 00:05:19

Oracle Workspace Manager 00:01:01

Oracle Enterprise Manager 00:10:13

Oracle XDK 00:00:48

Oracle Text 00:00:58

Oracle XML Database 00:04:09

Oracle Database Java Packages 00:00:33

Oracle Multimedia 00:07:43

Oracle Expression Filter 00:00:18

Oracle Rule Manager 00:00:12

Gathering Statistics 00:04:53

Total Upgrade Time: 00:52:31

5.使用 srvctl命令更新 ocr 中 DBHOME相关信息:

su - oracle

srvctl upgrade database -d VPROD -o $NEW_ORACLE_HOME

srvctl upgrade database -d VPROD -o /s01/orabase/product/11.2.0/dbhome_2

[oracle@vrh1 ~]$ srvctl config database -d VPRODDatabase unique name: VPRODDatabase name: VPRODOracle home: /s01/orabase/product/11.2.0/dbhome_2Oracle user: oracleSpfile: +SYSTEMDG/VPROD/spfileVPROD.oraDomain:Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: VPRODDatabase instances: VPROD1,VPROD2Disk Groups: SYSTEMDGMount point paths:Services:Type: RACDatabase is administrator managed

[oracle@vrh1 ~]$ srvctl stop database -d VPRODPRCC-1016 : VPROD was already stopped[oracle@vrh1 ~]$ srvctl start database -d VPROD

Page 19: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

[oracle@vrh1 ~]$ srvctl status database -d VPRODInstance VPROD1 is running on node vrh1Instance VPROD2 is running on node vrh2

6.修改 oracle 用户的 profile 配置文件指中的变量:

cat .bash_profile

# .bash_profile

# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi

# User specific environment and startup programs

ORACLE_HOME=/s01/orabase/product/11.2.0/dbhome_2ORACLE_SID=VPROD1ORACLE_BASE=/s01/orabasePATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:$HOME/bin

export PATH ORACLE_HOME ORACLE_SID ORACLE_BASE

SQL> select * from global_name;

GLOBAL_NAME--------------------------------------------------------------------------------www.oracledatabase12g.com

SQL> select * from v$version;

BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit ProductionPL/SQL Release 11.2.0.2.0 - ProductionCORE 11.2.0.2.0 ProductionTNS for Linux: Version 11.2.0.2.0 - ProductionNLSRTL Version 11.2.0.2.0 - Production

Page 20: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

7. 数据库升级完成后进入一个 pending area,建议在至少 2 个礼拜内,不要升级 compatible

参数和删除 restore point。

在确认没有回退的必要后,修改 compatible参数并删除 restore point:

alter system set compatible=’11.2.0.2.0′ scope=spfile;

drop restore point MACLEAN_ROLLBACK;

srvctl stop database -d VPROD

srvctl start database -d VPROD

以上成功地将 11.2.0.1 的 RAC 数据库升级到了 11.2.0.2。

五、回退升级操作(Database Downgrade)

我们可以选择 2种回退办法:

1. 通过 restore point 还原到 11.2.0.1 的数据库 2. 执行 catdwgrd.sql降级数据字典

针对第一种方法:关 所有 点 例闭 节 实

srvctl stop database -d VPROD

export ORACLE_HOME=$OLD_ORACLE_HOMEexport PATH=$OLD_ORACLE_HOME/bin:$PATHunset LD_LIBRARY_PATH

sqlplus / as sysdba

SQL> select * from v$restore_point;

SCN DATABASE_INCARNATION# GUA STORAGE_SIZE---------- --------------------- --- ------------TIME---------------------------------------------------------------------------RESTORE_POINT_TIME PRE--------------------------------------------------------------------------- ---NAME-------------------------------------------------------------------------------- 601958 1 YES 46230732807-SEP-11 07.52.59.000000000 PM YESMACLEAN_ROLLBACK

Page 21: Upgrade 11.2.0.1 rac db to 11.2.0.2 in linux

SQL> flashback database to restore point MACLEAN_ROLLBACK;

Flashback complete.

flashback database的速度 乎视 flashback log多少而定,一般是很快的,在 1分 之内。钟

SQL> alter database open;alter database open*ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

以上通过 restore point 的方法是我所推荐的,这种方法简单、省时省力、高效且问题少少,是一种绿色方案。同时不要忘记使用 srvctl upgrade命令还原 ocr 中的 DBHOME 信息,以及还原 profile 文件。

针对第二种方法:catdwgrd.sql 的运行有诸多限制,其所消耗的时间可能要略长于 catupgrd.sql。而且该脚本在运行过程中可能遇到各种错误,不推荐使用这种方法。

关于使用 catdwgrd.sql 脚本降级数据库 11.2.0.2 到 11.2.0.1,可以参考MOS note <How To

Downgrade From Database 11.2 To Previous Release (includes 11.2.0.2-11.2.0.1) [ID 883335.1]>。