本文章中讨论的过程是基于脚本的降级。本文章并未讨论如何使用导入/导出、数据泵或其他方法将数据从一个版本移至另一个版本。
开始降级过程之前,在服务器上应该有或已安装要降至版本的 Oracle 二进制文件。如果已卸载了希望降至版本的 Oracle 可执行文件,请将该 Oracle 二进制文件重新安装至正确的版本/修补程序级别,以便进行降级。
注意事项:
示例: 对于 Exadata Bundle Patch,过程为:
卸载 patch
示例: $ opatch auto /u01/app/oracle/patches/14103267 -rollback
回滚SQL的变更
示例: SQL> @rdbms/admin/catbundle_EXA_
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