首先,SqlServer所有的高版本备份,都不可以直接在低版本上直接进行还原!
如果一定要进行还原的话,请使用脚本导入导出,直接在高版本Sqlserver上将所有对象以及数据导出为sql脚本,然后到低版本上执行脚本就可以了。
注意导出时选择导出对象结构以及数据。
对应的如何导出脚本执行步骤,请参考我的另一个回答。
>
本文档旨在提供指南和核对清单,用于将之前升级的数据库从 Oracle 12c 降级回以前的版本:11203, 11202, 11107
必须加以说明的是,将数据库实例从当前版本降级到升级前的版本时,数据库不会返回到升级前的完全相同状态。根据所涉及的版本,升级过程会进行不可逆的更改。用户使用降级过程可以打开和访问以前版本的数据库实例。这通常便已足够。
可能需要采取其他更正 *** 作(例如卸载/重新安装或重新升级到当前补丁集级别来解决降级后的遗留问题。如果目标是让实例返回与升级前完全相同的状态,则还应使用包括完全恢复到升级前状态在内的其他过程。
本文中讨论的过程是基于脚本的降级。本文不介绍使用导出/导入、数据泵或其他方法将数据从一个版本移动到另一个版本。
您所降级到的版本的 Oracle 二进制文件,在开始降级过程之前应该在服务器上可用/已安装。如果您卸载了要降级到的 Oracle 可执行文件,请重新安装 Oracle 二进制文件到正确的版本/补丁程序级别以降级。
此过程旨在降级已成功升级到 12c 的数据库,并非用于从失败的升级退回。您只能降级到升级前所用的版本和补丁程序级别。
直接升级可以在版本 10205、11107 或版本 11202 及更高版本上执行。可以对这些版本中除 10205 之外的版本进行降级。
例如,如果通过应用中间补丁程序 11107 从 Oracle 11106 升级到 Oracle 12c (1210),则不能降级到 Oracle 11106。降级只能对直接升级版本执行。
例外:
虽然可以对 10205 直接升级,但降级不适用于 10205。
这是因为在升级过程中,compatible 参数已设置为最低 1100。这使得无法降级到 10205。可以降级的版本为 11107、11202、11203 或更高版本。
如果有任何补丁程序应用到了从升级后的主目录运行的源数据库,则需要先回退,然后才能开始降级过程。
卸载和回退补丁程序的步骤记录在所涉及补丁程序的自述文件中。
未能卸载和回退补丁程序可能会导致无法降级,包括无法重新验证字典对象。
Exadata 捆绑补丁程序示例,其过程为:
卸载补丁程序
示例: $ opatch auto /u01/app/oracle/patches/14103267 -rollback
回退任何在补丁程序应用过程中应用的 SQL:
示例: SQL> @rdbms/admin/catbundle_EXA_<数据库 SID>_ROLLBACKsql,用于回退 SQL 更改。
解决方案
降级前步骤
- XML DB 组件在 12c 中是必需的。
在升级到 12c 期间,将安装 XML DB 组件(如果未安装)。
从 12c 降级将删除安装的 XDB 组件
- Enterprise Manager 不支持降级。在降级之前,请重新配置 Oracle EM 控件。请参阅
Oracle Database Upgrade Guide 12c Release 1 (121) E17642-10
6 Downgrading Oracle Database to an Earlier Release
665 Restoring Oracle Enterprise Manager after Downgrading Oracle Database
- 升级到 12c 期间,将删除 Database Control 资料档案库。降级之后,请重新配置 DB Control。
Note 8708771 How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release
Note 8763531 How To Restore The Oracle Enterprise Manager Data To Downgrade The Single Instance Database To Previous/Source Release
- compatible 参数不能已经更改到 1210。
- 禁用 Data Vault(如果已启用)。
Note 8039481 How To Uninstall Or Reinstall Database Vault in 11g (UNIX)
Note 4539021 Enabling and Disabling Oracle Database Vault in WINDOWS
- 如果数据库使用 Oracle Label Security,则在新 Oracle Database 12c Oracle 主目录中运行 Oracle Label Security (OLS) 预处理降级 olspredowngradesql 脚本(在 $ORACLE_HOME/rdbms/admin 上提供)。
- 时区版本应相同。
- 取消设置并指向 12c 主目录的 ORA_TZFILE(如果已设置)。
- 如果数据库上有 Oracle Application Express,则必须将 apxrelodsql 文件从 Oracle Database 12c $ORACLE_HOME/apex/ 目录复制到 Oracle 主目录之外的目录,例如系统上的临时目录以稍后执行。
- 如果基于固定对象创建了对象,则删除这些对象以避免可能的 ORA-00600 错误。您可以在降级之后重新创建这些对象。
- 如果降级集群数据库,则彻底关闭实例并将 CLUSTER_DATABASE 初始化参数更改为 FALSE。降级之后,必须将此参数设置回 TRUE。
满足以上先决条件之后,可以继续进行降级。
数据库的降级步骤
1) 确保所有数据库组件有效。只能从成功升级的数据库执行降级。要验证数据库组件状态,请执行以下查询
以 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
2) 验证没有属于 sys/system 的无效对象
select owner, count(object_name) "Invalid object count" from dba_objects where status!='VALID' and owner in ('SYS','SYSTEM') group by owner;
如果计数为零,则可以继续降级。
如果有无效对象,则执行 utlrpsql 多次,如果对象无法解析为有效状态,则不能继续降级。建立 SR 或在 DBA 社区上发帖以寻求帮助。
或者,对于 1 和 2,运行以下脚本:
Note 5566101 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiagsql)
3) 关闭数据库
Shutdown immediate
4) 对 12c 数据库做备份
5) 以降级模式启动数据库
Startup downgrade;
6) 执行降级脚本
Sql> Spool downgradelog
Sql> @$ORACLE_HOME/rdbms/admin/catdwgrdsql
注:
$ORACLE_HOME 应指向 12c 主目录
catdwgrdsql 脚本将数据库中的所有组件降级到支持的主版本或补丁集版本(您最初升级时的版本)
Sql> spool off
Sql> shutdown immediate
Exit SQL Plus
Sql> exit;
7) 如果 *** 作系统为 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\INITSIDORA
8) 还原配置文件
将配置文件(口令文件、参数文件等)还原到降级版本的 ORACLE_HOME。
9) 如果这是 Oracle RAC 数据库,则执行以下命令以将数据库修改为单实例模式:
SET CLUSTER_DATABASE=FALSE
10) 从降级版本 $ORACLE_HOME/rdbms/admin 目录执行 catrelod 脚本。
启动 sqlplus,以具有 sysdba 权限的用户 SYS 身份连接到数据库实例,然后以升级模式启动数据库:
: cd $ORACLE_HOME/rdbms/admin
: sqlplus
sql> connect sys as sysdba
sql> startup upgrade
sql> spool catrelodlog
sql> @/rdbms/admin/catrelodsql
sql> spool off
catrelodsql 脚本在降级的数据库中重新加载各个数据库组件的合适版本。
11) 运行 utlrpsql 脚本:
SQL> @utlrpsql
Sql> exit;
utlrpsql 脚本重新编译先前处于 INVALID 状态的所有现有 PL/SQL 模块,例如 package、procedure、type 等。
12) 检查已降级数据库的状态:
Note 5566101 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiagsql)
此 sql 脚本是一组查询语句,用于提供用户友好的输出,以在升级前后诊断数据库的状态。脚本将创建名为 db_upg_diag_<sid>_<时间戳>log 的文件。
13) 降级之后,可能在 sys 用户下发现无效的 QT 视图。这是因为视图已从基表中选择了错误的列。您需要重新创建这些视图。
请参阅说明:
Note 15202091 QT_BUFER Views Invalid after downgrade from 12C
降级后步骤:
1)如果您是降级到 Oracle Database 11g 版本 1 (11107) 并且数据库中有 Oracle Application Express,则转到您将 apxrelodsql 脚本复制到的目录(在降级前步骤中)。
运行 apxrelodsql 脚本以手动重新加载 Oracle Application Express:
SQL> @apxrelodsql
运行 apxrelodsql 脚本以避免程序包 APEX_030200WWV_FLOW_HELP 由于以下错误而成为 INVALID 状态:
PLS-00201: identifier 'CTX_DDL' must be declared
2) 如果数据库中启用了 Oracle Label Security,则执行以下脚本
a 从 Oracle Database 12c 的 Oracle 主目录下将 olstrigsql 脚本复制到要将数据库降级到的版本的 Oracle 主目录。
b 从降级到的版本的 Oracle 主目录,运行 olstrigsql 以在表上使用 Oracle Label Security 策略重新创建 DML 触发器:
SQL> @olstrigsql
3) 如果降级集群数据库,则必须运行以下命令以降级 Oracle Clusterware database 配置:
$ srvctl downgrade database -d db-unique-name -o oraclehome -t to_version
其中 db-unique-name 是数据库名称(而非实例名称),oraclehome 是已降级数据库的旧 Oracle 主目录的位置,to_version 是数据库所降级到的数据库版本
以上就是关于如何把SQLServer数据库从高版本降级到低版本全部的内容,包括:如何把SQLServer数据库从高版本降级到低版本、数据库降级问题:sql2008 r2数据库生成脚本时出现的提示,怎么处理、如何将 12c 数据库降级为以前的版本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)