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

本文档可用作将之前升级的数据库从 Oracle 11gR2 降回至下列以前版本数据库的指南与核对表:Oracle 10gR1、Oracle 10gR2、Oracle 11gR1。该文档内容也适用于从 11.2.0.4 降级至 11.2.0.1

需要特别注意的是,在将数据库实例从当前版本降级至升级前版本时,数据库不会返回至与其升级前相同的状态。升级过程会导致一些不可逆的更改,具体取决于涉及的版本。降级过程允许用户在之前版本中打开并访问数据库实例。这通常就足够了。

此外,在降级后可能需要采取一些更正操作(如卸载/重新安装,或重新升级至当前修补程序集级别),以解决残留问题。

如果目标是将实例完全返回至其升级前的状态,那么将会用到包括恰好恢复至升级前状态在内的其他流程。

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

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

CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

注意事项:

该过程用于降级已成功升级至 11gR2 的数据库。此过程不能用于返回升级失败的数据库。

您只能降级至从其进行升级的版本和修补程序级别。例如,如果是从 Oracle 10gR1 (10.1.0.5) 升级至 Oracle 11gR2 (11.2),则不能降级至 Oracle 10gR2 (10.2)。您只能降级至 Oracle 10gR1 (10.1.0.5)

支持降级至 9iR2。这是因为在升级过程中,兼容参数设置为最低 10.1.0。这可以防止降级。

如果原数据库打过patch, 您需要在降级之前把patch进行回滚。 卸载和回滚patch的步骤,您可以在patch的readme中找到。卸载和回滚patch失败会导致降级过程的失败及数据字典对象无法生效。

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

卸载 patch

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

回滚SQL的变更    

示例:  SQL> @rdbms/admin/catbundle_EXA_<database SID>_ROLLBACK.sql  rollback SQL 变更.

解决方案 降级前步骤:

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

set pagesize500 
set linesize 100 
       
select substr(comp_name,1,40) comp_name, status, substr (version,1,10) version from dba_registry order by comp_name; 
       
select substr(object_name,1,40) object_name,substr(owner,1,15) owner, object_type from  dba_objects where status='INVALID' order by owner,object_type; 
       
select owner,object_type,count(*) from dba_objects where status='INVALID'  group by owner,object_type order by owner,object_type;

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

$ cd $ORACLE_HOME/rdbms/admin 
$ sqlplus "/ as sysdba" 
SQL> @utlrp.sql

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

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

a: 授予 SYS 帐户 Database Vault DV_PATCH_ADMIN 角色。
b: 降级数据库之前禁用 Database Vault。

禁用 Oracle Database Vault 触发器:
      SQL> CONNECT DVSYS/DVSYS  
      SQL> ALTER TRIGGER DV_BEFORE_DDL_TRG DISABLE;  
      SQL> ALTER TRIGGER DV_AFTER_DDL_TRG DISABLE; 

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

SP2-1503: Unable to initialize Oracle call interface 
SP2-0152: ORACLE may not be functioning properly

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0100d054d64ed467f166cbbb33eb9157.html