oracle11g数据库升级数据库升级
Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的。
大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持)
1.从产品发布为期5年的标准支持服务期-Premier support
2.随后为期3年的延展支持服务期---------extended support
3.接下来进入持久支持服务期--------------sustaining support
不过根据不同的周期划分,Oracle的支持费用将会不同,在延展服务器内,第一年将会加收10%的费用提供支持,第二年加收20%的费用提供支持,第三年也是加收20%的费用提供支持。
Oracle11g数据库的推出,oracle数据库的升级成为必然。升级包括数据库软件的升级和数据库的升级两部分。
升级路线图
大概的升级步骤:
(1) 备份数据库
(2) 运行patchset,升级oracle 软件
(3) 准备新的ORACLE_HOME
(4) 运行dbua 或者脚本升级实例
(5) 检查升级后的版本信息和无效对象
升级补丁包选择
Metalink文档id:1922396.1会更新需要的补丁号
升级方法选择
关于方法有很多,每种有各自的特点,根据特点选择合适的升级方式。
可以选择参考文档id 1674333.1和1602485.1分别是9i和11g升级到最新的11gR2
第 1 步
======
下载 11.2.0.2 或更高版本的 RDBMS 软件。
第 2 步
======
将最新的 11.2 RDBMS 软件安装到新的 ORACLE_HOME 中。
运行Patchset 的runInstaller。
./runInstaller
这里要注意,我们之前讲过11gR2的Patchset 可以直接用来安装。在这个界面就可以选择操作类型,这个功能比较方便,从而也导致patchset 越来越大,我们这里选择upgrade an existing database。
注意这里的安装位置,我之前的安装目录是11.2.0. 这里我改成了11.2.0.4. 即将oracle安装到其他位置,这样可以减少宕机时间,也是oracle 推荐的方法。
第 3 步
======
安装最新的 11.2 RDBMS 软件之后,用以前的 ORACLE_HOME 中启动 11.2.0.1实例,对正在运行的以前的实例执行 11.2.0.2 的$ORACLE_HOME/rdbms/admin/utlu112i.sql脚本,并将输出 spool 至一个文件。原来目录执行新脚本。
不论您是使用 DBUA 还是手动升级,均必须运行 Pre-Upgrade Information Tool。否则可能会遇到错误:
1. Log in to the system as theowner of the environment of the database being upgraded.
Important:
The Pre-UpgradeInformation Tool must be copied to and must be run from the environment of thedatabase being upgraded.
注意,这里必须调用新的ORACLE_HOME 下脚本。
2. Start SQL*Plus.
3. Connect to the databaseinstance as a user with SYSDBA privileges.
4. Set the system to spool resultsto a log file for later analysis:
SQL> SPOOL upgrade_info.log
5. Run the Pre-Upgrade InformationTool:
SQL>@/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112i.sql
6. Turn off the spooling of scriptresults to the log file:
SQL> SPOOL OFF
第 4 步
======
运行以下 My Oracle Support 文章中的 dbupgdiag.sql 脚本,验证 dba_registry中的所有组件有效并且 dba_objects 中没有无效的数据字典对象。
如果 dbupgdiag.sql 脚本报告了任意无效对象,则运行$ORACLE_HOME/rdbms/admin/utlrp.sql(可能需要多次)以使数据库中的无效对象变为有效,直至无效对象数不发生变化为止。
第 5 步
=====
禁用所有批处理和 cron 作业,然后执行数据库的完整备份。
1. 登录 RMAN:
rman "target / nocatalog"
2. 运行以下 RMAN 命令:
RUN
{
ALLOCATE CHANNEL chan_name TYPE DISK;
BACKUP DATABASE FORMAT \'some_backup_directory%U\' TAG before_upgrade;
BACKUP CURRENT CONTROLFILE FORMAT \'controlfile location and name\';
}
第 6 步
=======
干净的关闭数据库。
操作步骤:
第 7 步(仅限 Windows 平台)
========================
1) 将环境变量 ORACLE_HOME 设置为指向 11.2.0.1 安装。
2) 停止指向 11.2.0.1 安装的 Oracle 数据库服务。
C:\> NET STOP OracleServiceORCL
3) 使用 %ORACLE_HOME%\bin\ORADIM 可执行程序删除 11.2.0.1 Oracle 服务。
C:\> ORADIM -DELETE -SID ORCL
4) 将环境变量 ORACLE_HOME 设置为指向 11.2.0.2 安装。
5) 将 init.ora/spfile 和口令文件 (orapw<sid>.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/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>
8) 使用 11.2.0.2 的可执行程序,在命令提示符下创建 Oracle 11.2.0.2 服务。
%ORACLE_HOME%\bin\ ORADIM
C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA
例如:
C:\> ORADIM -NEW -SID ORCL -SYSPWD pass_with_sysdba_priv -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA
PASSWORD = 新数据库实例的口令。这是使用 SYSDBA 权限连接的用户的口令。-SYSPWD 选项并非必需。如果未指定该项,则将使用操作系统验证,并且不需要口令
第 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<sid>.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/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>
请为 <hostname_dbname> 指定实际的名称
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] []
具体操作步骤:
操作步骤:(复制侦听,密码文件)
编辑环境变量
修 改/etc/oratab,该目录下也有ORACLE_HOME
[oracle@dave db_1]$ cat /etc/oratab
如果配置了并使用了 DB Console/DB Control,将以下两个目录及其内容从 11.2.0.1 复制到 11.2.0.2。(如果未配置 DB Console/DB Control,则这些目录可能不存在。)
ORACLE_HOME/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>
确保为 Oracle Database 11g 版本 2 (11.2) 正确设置了 COMPATIBLE 初始化参数。如果未正确设置 COMPATIBLE,则 Pre-Upgrade Information Tool 会在“Database”部分中显示警告。
必须在升级前将 java_pool_size 和 shared_pool_size 至少设置为 250MB,
加入参数:
create pfile from spfile ;
修改参数
最后生成spfile
SQL> create spfile from pfile ;
第 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> @$ORACLE_HOME/rdbms/admin /catupgrd.sql;
SQL> spool off
SQL> Shutdown immediate
这个非常重要的步骤可以确保新的数据库软件的完整性和一致性。如果在启动数据库时碰到错误说参数文件中含有被废弃的初始化参数,那么从初始化参数文件中删除这些参数。如果需要的话,可以把 spfile 转换成 pfile 之后就可以编辑 pfile 并删除相关参数了。
执行 Post-Upgrade Status Tool $ORACLE_HOME/rdbms/admin/utlu112s.sql,它会提供一个关于升级的总结. 它会显示升级后各个数据库组件的状态和各个组件升级花费的时间。任何在升级中碰到的错误也会被列出,这些错误必须得到妥善的处理。
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlu112s.sql
运行 $ORACLE_HOME/rdbms/admin 目录下的 catuppst.sql,完成不需要在数据库处于 UPGRADE 模式下操作的其它升级的动作:
SQL> @catuppst.sql
这个脚本可以和 utlrp.sql 并行运行. 在另一个 session 里运行 utlrp.sql 来重新编译剩下的 PL/SQL 和 Java代码:
SQL> @utlrp.sql
运行从下面文档中得到的 dbupgdiag.sql 来检查升级后数据库的完整性。
Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)
如果 dbupgdiag.sql 发现了一些失效对象,那么多次执行 $ORACLE_HOME/rdbms/admin/utlrp.sql 来重新编译这些失效对象,直到失效对象的数目不再变化。
在重新编译这些失效对象之后,再次运行 dbupgdiag.sql 确认一切都是正常的。
升级后步骤
===================
1) 升级集群配置
如果您使用的是 Oracle 集群,那么您必须更新集群配置。
从 11.2.0.2 开始,upgrade 命令会将配置更新为正在运行的软件的版本。
您可以使用 srvctl 命令,例如:
srvctl upgrade database
这个命令会将数据库及其对应服务的配置信息更新至正在运行的软件的版本。
语法及选项如下:
srvctl upgrade database -d db_unique_name -o Oracle_home
Table A-161 srvctl upgrade database Options
选项描述
-d db_unique_name
数据库的 unique name
-o Oracle_home
ORACLE_HOME 的路径
2) 使用 DBMS_DST 将时区升级到最新版本。
Note 1201253.1
Title: Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
3) 升级 Recovery Catalog
有关升级 Recovery Catalog 和 UPGRADE CATALOG 命令的完整信息,请参阅《Oracle Database Backup and Recovery User\'s Guide》中的介绍这些过程的主题。
4) 升级 DBMS_STATS 程序包创建的 Statistics Table
如果使用 DBMS_STATS.CREATE_STAT_TABLE 创建了 statistics table,则通过运行以下命令来升级这些表:
EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE(\'scott\', \'stat_table\');
在示例中,SCOTT 是 statistics table 的所有者,STAT_TABLE 是 statistics table 的名称。对每个 statistics table 都需要执行此命令。
5) 启用 Oracle Database Vault 并收回 DV_PATCH_ADMIN 角色。
如果您使用了 Oracle Database Vault,并按照之前的指示在升级前先禁用了它,现在您需要:
启用 Database Vault。
Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
收回 SYS 用户的 Database Vault DV_PATCH_ADMIN 角色。
参考http://download.oracle.com/docs/cd/E11882_01/server.112/e17222.pdf
6). 数据库中的 Oracle Warehouse Builder (OWB) 组件不会在升级过程中安装。升级后,有几个步骤升级该组件。
7)最后调用一下dbca 重建一下OEM。
如果dbca 显示OEM 已经配置过,rm 掉如下2个目录,再次运行就ok了。
ORACLE_HOME/hostname_dbname
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_dbname
最后验证一下各个组件的版本和状态:
Sql> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY
COMP_NAME VERSION STATUS
---------------------------------------- --------------- ----------------------
OWB 11.2.0.1.0 VALID
Oracle Application Express 3.2.1.00.10 VALID
Oracle Enterprise Manager 11.2.0.4.0 VALID
OLAP Catalog 11.2.0.4.0 VALID
Spatial 11.2.0.4.0 VALID
Oracle Multimedia 11.2.0.4.0 VALID
Oracle XML Database 11.2.0.4.0 VALID
Oracle Text 11.2.0.4.0 VALID
Oracle Expression Filter 11.2.0.4.0 VALID
Oracle Rules Manager 11.2.0.4.0 VALID
Oracle Workspace Manager 11.2.0.4.0 VALID
Oracle Database Catalog Views 11.2.0.4.0 VALID
Oracle Database Packages and Types 11.2.0.4.0 VALID
JServer JAVA Virtual Machine 11.2.0.4.0 VALID
Oracle XDK 11.2.0.4.0 VALID
Oracle Database Java Packages 11.2.0.4.0 VALID
OLAP Analytic Workspace 11.2.0.4.0 VALID
Oracle OLAP API 11.2.0.4.0 VALID
18 rows selected.
至此,通过命令升级操作结束。
如果在升级过程中遇到问题,可以重新执行升级脚本,步骤如下:
1.Shut down the database as follows:
SQL> SHUTDOWNIMMEDIATE
2.Restart the databasein UPGRADE mode:
SQL> STARTUP UPGRADE
3.Set the system to spool results to a logfile for later verification of success:
SQL> SPOOLupgrade.log
4.Rerun catupgrd.sql:
SQL>@catupgrd.sql
Note:
You can rerunthe catupgrd.sql script as many times as necessary. The first timeyou run the script, there should be no error messages returned. If you rerunthe script, then the ORA-00001 messageis displayed. You can safely ignore this message.
5.Rerun utlu112s.sql:
SQL>@utlu112s.sql
图形化升级
图形化升级更为简单,到调用图形化界面后一路回车完成升级。
接着,是最重要的,通过DBUA进行数据库的升级,然后OUI会提示,升级ASM还是数据库,如果数据库是安装在asm上的要先升级asm,后升级数据库。最后会汇总升级信息进行确认即可开始升级。数据库升级时一个耐心的活,因为可能很慢。升级过程中最好有Data Guard或RAC环境,优先提供服务。