oracle12c降为11g,如何将12c数据库降级为以前的版本

如何将12c数据库降级为以前的版本

本文档旨在提供指南和核对清单,用于将之前升级的数据库从 Oracle 12c 降级回以前的版本:11.2.0.3, 11.2.0.2, 11.1.0.7

必须加以说明的是,将数据库实例从当前版本降级到升级前的版本时,数据库不会返回到升级前的完全相同状态。根据所涉及的版本,升级过程会进行不可逆的更改。用户使用降级过程可以打开和访问以前版本的数据库实例。这通常便已足够。

可能需要采取其他更正操作(例如卸载/重新安装或重新升级到当前补丁集级别来解决降级后的遗留问题。如果目标是让实例返回与升级前完全相同的状态,则还应使用包括完全恢复到升级前状态在内的其他过程。

本文中讨论的过程是基于脚本的降级。本文不介绍使用导出/导入、数据泵或其他方法将数据从一个版本移动到另一个版本。

您所降级到的版本的 Oracle 二进制文件,在开始降级过程之前应该在服务器上可用/已安装。如果您卸载了要降级到的 Oracle 可执行文件,请重新安装 Oracle 二进制文件到正确的版本/补丁程序级别以降级。

此过程旨在降级已成功升级到 12c 的数据库,并非用于从失败的升级退回。您只能降级到升级前所用的版本和补丁程序级别。

直接升级可以在版本 10.2.0.5、11.1.0.7 或版本 11.2.0.2 及更高版本上执行。可以对这些版本中除 10.2.0.5 之外的版本进行降级。

例如,如果通过应用中间补丁程序 11.1.0.7 从 Oracle 11.1.0.6 升级到 Oracle 12c (12.1.0),则不能降级到 Oracle 11.1.0.6。降级只能对直接升级版本执行。

例外:

虽然可以对 10.2.0.5 直接升级,但降级不适用于 10.2.0.5。

这是因为在升级过程中,compatible 参数已设置为最低 11.0.0。这使得无法降级到 10.2.0.5。可以降级的版本为 11.1.0.7、11.2.0.2、11.2.0.3 或更高版本。

如果有任何补丁程序应用到了从升级后的主目录运行的源数据库,则需要先回退,然后才能开始降级过程。

卸载和回退补丁程序的步骤记录在所涉及补丁程序的自述文件中。

未能卸载和回退补丁程序可能会导致无法降级,包括无法重新验证字典对象。

Exadata 捆绑补丁程序示例,其过程为:

卸载补丁程序

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

回退任何在补丁程序应用过程中应用的 SQL:

示例: SQL> @rdbms/admin/catbundle_EXA__ROLLBACK.sql,用于回退 SQL 更改。

解决方案

降级前步骤

•- XML DB 组件在 12c 中是必需的。

在升级到 12c 期间,将安装 XML DB 组件(如果未安装)。

从 12c 降级将删除安装的 XDB 组件

•- Enterprise Manager 不支持降级。在降级之前,请重新配置 Oracle EM 控件。请参阅

Oracle Database Upgrade Guide 12c Release 1 (12.1) E17642-10

6 Downgrading Oracle Database to an Earlier Release

6.6.5 Restoring Oracle Enterprise Manager after Downgrading Oracle Database

升级到 12c 期间,将删除 Database Control 资料档案库。降级之后,请重新配置 DB Control。

Note 870877.1 How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?

Note 876353.1 How To Restore The Oracle Enterprise Manager Data To Downgrade The Single Instance Database To Previous/Source Release ?

•- compatible 参数不能已经更改到 12.1.0。

•- 禁用 Data Vault(如果已启用)。

Note 803948.1 How To Uninstall Or Reinstall Database Vault in 11g (UNIX)

Note 453902.1 Enabling and Disabling Oracle Database Vault in WINDOWS

•- 如果数据库使用 Oracle Label Security,则在新 Oracle Database 12c Oracle 主目录中运行 Oracle Label Security (OLS) 预处理降级 olspredowngrade.sql 脚本(在 $ORACLE_HOME/rdbms/admin 上提供)。

•- 时区版本应相同。

•- 取消设置并指向 12c 主目录的 ORA_TZFILE(如果已设置)。

•- 如果数据库上有 Oracle Application Express,则必须将 apxrelod.sql 文件从 Oracle Database 12c $ORACLE_HOME/apex/ 目录复制到 Oracle 主目录之外的目录,例如系统上的临时目录以稍后执行。

•- 如果基于固定对象创建了对象,则删除这些对象以避免可能的 ORA-00600 错误。您可以在降级之后重新创建这些对象。

•- 如果降级集群数据库,则彻底关闭实例并将 CLUSTER_DATABASE 初始化参数更改为 FALSE。降级之后,必须将此参数设置回 TRUE。

满足以上先决条件之后,可以继续进行降级。

数据库的降级步骤

确保所有数据库组件有效。只能从成功升级的数据库执行降级。要验证数据库组件状态,请执行以下查询

以 SYS 用户身份连接到数据库

col comp_id format a10

col comp_name format a30

col version format a10

col status format a8

select substr(comp_id,1,15) comp_id,substr(comp_name,1,30) comp_name,substr(version,1,10) version,status from dba_registry

验证没有属于 sys/system 的无效对象

select owner, count(object_name) “Invalid object count” from dba_objects where status!=‘VALID’ and owner in (‘SYS’,‘SYSTEM’) group by owner;

如果计数为零,则可以继续降级。

如果有无效对象,则执行 utlrp.sql 多次,如果对象无法解析为有效状态,则不能继续降级。建立 SR 或在 DBA 社区上发帖以寻求帮助。

或者,对于 1 和 2,运行以下脚本:

Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)

关闭数据库

Shutdown immediate

对 12c 数据库做备份

以降级模式启动数据库

Startup downgrade;

执行降级脚本

Sql> Spool downgrade.log

Sql> @ORACLE_HOME/rdbms/admin/catdwgrd.sql

注:

ORACLE_HOME 应指向 12c 主目录

catdwgrd.sql 脚本将数据库中的所有组件降级到支持的主版本或补丁集版本(您最初升级时的版本)

Sql> spool off

Sql> shutdown immediate

Exit SQL Plus

Sql> exit;

如果操作系统为 LINUX/UNIX:

将以下环境变量更改为要降级到的源数据库:

ORACLE_HOME

PATH

编辑 /etc/oratab or /var/opt/oracle/oratab 以更改

将数据库映射到源数据库 Oracle 主目录

如果操作系统是 Windows,则完成以下步骤:

a. 停止所有 Oracle 服务,包括 Oracle Database 12c 数据库的 OracleServiceSID Oracle 服务,其中 SID 是实例名称。

例如,如果 SID 为 ORCL,则在命令行提示符中输入以下内容:

C:> NET STOP OracleServiceORCL

b. 在命令提示符下,通过运行 ORADIM 命令删除 Oracle 服务。如果出现提示,则输入此 Windows 系统上活动标准用户帐户的口令。

例如,如果 SID 为 ORCL,则输入以下命令:

C:> ORADIM -DELETE -SID ORCL

c. 在命令提示符下,使用 ORADIM 命令创建要降级的数据库的 Oracle 服务。

C:> ORADIM -NEW -SID SID -INTPWD PASSWORD -MAXUSERS USERS

-STARTMODE AUTO -PFILE ORACLE_HOME\DATABASE\INITSID.ORA

还原配置文件

将配置文件(口令文件、参数文件等)还原到降级版本的 ORACLE_HOME。

如果这是 Oracle RAC 数据库,则执行以下命令以将数据库修改为单实例模式:

SET CLUSTER_DATABASE=FALSE

从降级版本 $ORACLE_HOME/rdbms/admin 目录执行 catrelod 脚本。

启动 sqlplus,以具有 sysdba 权限的用户 SYS 身份连接到数据库实例,然后以升级模式启动数据库:

: cd $ORACLE_HOME/rdbms/admin

: sqlplus

sql> connect sys as sysdba

sql> startup upgrade

sql> spool catrelod.log

sql> @?/rdbms/admin/catrelod.sql

sql> spool off

catrelod.sql 脚本在降级的数据库中重新加载各个数据库组件的合适版本。

运行 utlrp.sql 脚本:

SQL> @utlrp.sql

Sql> exit;

utlrp.sql 脚本重新编译先前处于 INVALID 状态的所有现有 PL/SQL 模块,例如 package、procedure、type 等。

检查已降级数据库的状态:

Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)

此 sql 脚本是一组查询语句,用于提供用户友好的输出,以在升级前后诊断数据库的状态。脚本将创建名为 db_upg_diag__.log 的文件。

降级之后,可能在 sys 用户下发现无效的 QT 视图。这是因为视图已从基表中选择了错误的列。您需要重新创建这些视图。

请参阅说明:

Note 1520209.1 QT_*BUFER Views Invalid after downgrade from 12C

降级后步骤:

1)如果您是降级到 Oracle Database 11g 版本 1 (11.1.0.7) 并且数据库中有 Oracle Application Express,则转到您将 apxrelod.sql 脚本复制到的目录(在降级前步骤中)。

运行 apxrelod.sql 脚本以手动重新加载 Oracle Application Express:

SQL> @apxrelod.sql

运行 apxrelod.sql 脚本以避免程序包 APEX_030200.WWV_FLOW_HELP 由于以下错误而成为 INVALID 状态:

PLS-00201: identifier ‘CTX_DDL’ must be declared

如果数据库中启用了 Oracle Label Security,则执行以下脚本

a. 从 Oracle Database 12c 的 Oracle 主目录下将 olstrig.sql 脚本复制到要将数据库降级到的版本的 Oracle 主目录。

b. 从降级到的版本的 Oracle 主目录,运行 olstrig.sql 以在表上使用 Oracle Label Security 策略重新创建 DML 触发器:

SQL> @olstrig.sql

如果降级集群数据库,则必须运行以下命令以降级 Oracle Clusterware database 配置:

$ srvctl downgrade database -d db-unique-name -o oraclehome -t to_version

其中 db-unique-name 是数据库名称(而非实例名称),oraclehome 是已降级数据库的旧 Oracle 主目录的位置,to_version 是数据库所降级到的数据库版本

因为代码的改变,现在-to_version对应的值如下:

RDBMS Version -to_version Value

9.2.0.* 9.2.0.0.0

10.1.0.* 10.0.0.0.0

10.2.0.* 10.2.0.0.0

11.1.0.* 11.0.0.0.0

11.2.0.1 11.2.0.1.0

11.2.0.2 11.2.0.2.0

11.2.0.3 11.2.0.3.0

11.2.0.4 11.2.0.4.0

参考

NOTE:1520299.1 - Master Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC)

NOTE:1351112.1 - Information Center: Upgrading and Migration Oracle Database

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值