Oracle数据库如何从11.2 降级至之前的版本

2014-11-24 17:11:30 · 作者: · 浏览: 0

本文章中讨论的过程是基于脚本的降级。本文章并未讨论如何使用导入/导出、数据泵或其他方法将数据从一个版本移至另一个版本。


开始降级过程之前,在服务器上应该有或已安装要降至版本的 Oracle 二进制文件。如果已卸载了希望降至版本的 Oracle 可执行文件,请将该 Oracle 二进制文件重新安装至正确的版本/修补程序级别,以便进行降级。


注意事项:


示例: 对于 Exadata Bundle Patch,过程为:


卸载 patch


示例: $ opatch auto /u01/app/oracle/patches/14103267 -rollback


回滚SQL的变更


示例: SQL> @rdbms/admin/catbundle_EXA__ROLLBACK.sql rollback SQL 变更.



1: 验证所有组件和字典对象对于 11gR2 均有效并且版本正确。


如果任何组件或 Oracle 提供的对象无效,则需要运行 utlrp.sql 对其进行重新验证。该脚本可能需要运行多次以验证所有对象。


当完成后,重新运行上述查询以验证所有无效对象现在都是有效的。


2: 如果已在数据库上启用了 Oracle Database Vault,则必须:


3: 如果设置了操作系统参数 ORA_TZFILE,请取消其设置。如果不取消设置 ORA_TZFILE 变量,连接至数据库时可能会生成以下错误:


4: 如果在降级至之前的数据库版本之前,已运行 DBMS_DST 软件包将时区版本升级至新版本(例如在 11gR2 升级的升级后步骤期间升级至版本 11),那么必须将版本 11 时区文件安装到旧的 Oracle 数据库版本上的 $ORACLE_HOME/oracore/zoneinfo 目录中。


5: 检查数据库的兼容性级别,以确定数据库是否可能具有防止降级的不兼容性。曾经设置过的 compatible 的最高值就是您能降级到的最低的那个版本。比如:


6: 如果数据库上安装有 Oracle Application Express,则必须将 apxrelod.sql 文件从 Oracle 11gR2 (11.2) ORACLE_HOME/apex/ 目录复制到 Oracle 主目录之外的某个目录,如系统上的临时目录。记下该文件的新位置。

7: 在降级之前执行 11gR2 数据库的备份。


1: 以 Oracle Database 11g Release 2 (11.2) Oracle 主目录的所有者登录系统。

2: 如果已针对数据库配置并运行了 Enterprise Manager Database Control,则按如下所示停止Database Control:


3: 如果要降级的数据库是 Oracle Real Application Clusters (Oracle RAC) 数据库,则在所有实例上执行该步骤。


4: 在系统提示符下,转至 ORACLE_HOME/rdbms/admin 目录。

5: 启动 SQL*Plus 并以具有 SYSDBA 权限的用户身份连接至数据库实例。

6: 如果该实例当前正在运行,则将其关闭。
SQL> SHUTDOWN IMMEDIATE

7: 在 DOWNGRADE 模式下启动该实例。
SQL> STARTUP DOWNGRADE
如果需要,请指定初始化参数文件的位置。

8a: 如果升级前在数据库中配置了 Enterprise Manager 并备份了 Enterprise Manager Database Control Data,则:


注意:此步骤之后,MGMT* 同义词可能会无效。请按照“11.2 Upgrade Guide”中“Post-downgrade”部分描述的“Restoring Oracle Enterprise Manager”步骤(6 章第 9 页,Downgrading Oracle Database to an Earlier Release),恢复备份并验证同义词。

8b: 如果升级前在数据库中配置了 Enterprise Manager 但未备份 Enterprise Manager Database Control Data,则:


9: 设置系统以将结果记录到日志文件,以备稍后的成功验证:
SQL> SPOOL downgrade.log

10: 运行 catdwgrd.sql:
SQL> @catdwgrd.sql