手动升级到 Non-CDB Oracle Database 12c Release 2(12.2)的完整核对清单 (Doc ID 2297983.1、2173141.1)

0    746    1

Tags:

👉 本文共约16916个字,系统预计阅读时间或需64分钟。

目录

手动升级到 Non-CDB Oracle Database 12c Release 2(12.2)的完整核对清单 (Doc ID 2297983.1)

适用于:

Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本
Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本
Oracle Database Backup Service - 版本 N/A 和更高版本
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台

用途

本文档可用作手工将 Oracle 10gR2 (10.2) 或者 Oracle 11gR1 (11.1) 或者 Oracle 11gR2 (11.2) 或者 Oracle 12cR1 (12.1) 版本数据库升级至 Oracle 12cR2 (12.2) 版本数据库的指南与核对表。

适用范围

数据库管理人员/技术支持

详细信息

步骤1:升级到数据库 12.2 的升级路径

能够直接升级到 Oracle 12c Release 2 (12.2) 的数据库最小版本:

源数据库目标数据库
11.2.0.3 / 11.2.0.412.2.x
12.1.0.1 / 12.1.0.212.2.x

以下的数据库版本需要间接升级:

源数据库升级路径目标数据库
11.2.0.1 / 11.2.0.2-->11.2.0.4-->12.2.x
11.1.0.6 / 11.1.0.7-->11.2.0.4-->12.2.x
10.2.0.2/10.2.0.3/10.2.0.4/10.2.0.5-->11.2.0.4 / 12.1.0.2-->12.2.x
10.1.0.5-->11.2.0.4 / 12.1.0.2-->12.2.x
9.2.0.8-->11.2.0.3 / 11.2.0.4-->12.2.x

比如

  • 如果源库是 11.2.0.2 或者 11.1.0.7,那么你需要先升级至 11.2.0.4。
  • 如果源库是 10.2.0.2,10.2.0.3,10.2.0.4,10.2.0.5 或者 10.1.0.5,需要先升级至 11.2.0.4 或者 12.1.0.2。
  • 对于 9.2.0.8 版本的数据库,需要先升级至一个中间版本,比如:9.2.0.8 -> 11.2.0.3 或者 11.2.0.4 -> 12.1。

步骤2:推荐/需要在源库上完成的

  • 对源库做备份,冷备份或热备份都可以。
  • 禁用所有自定义的 before/after DDL 类型的触发器,完成升级后再启用它们。
  • 在 11g 数据库上定义的 Data security roles 不能自动转换成 ORAS。所以在升级前,需要删除所有在 11g 数据库上定义的 data security roles。升级后可以使用 Analytic Workspace Manager 12c 重新定义 data security roles。
  • 如果从 11g 升级到 12c 之前未删除 data security roles,那么所有的 data security policies 以及 data security role 都会在 12c 上失效。
  • Timezone 版本应当小于等于目标数据库的 Timezone 版本。
  • 如果源库上已经安装了 APEX 组件,那么升级数据库前需要先在源库上升级 APEX 组件。

步骤3:推荐/需要在目标库上完成的

  • 需要先检查您的硬件平台/操作系统是否兼容 12.2。点击此处来确定兼容性。
  • 安装数据库软件 12.2.0.1,并确保没有安装方面的问题。
  • 如果有的话,下载并应用最新的 PSU。
  • 从源库的 ORACLE_HOME/dbs 下拷贝 spfile 或者 pfile 到目标 ORACLE_HOME/dbs。
  • 从参数文件中删除所有废弃的参数。
  • 注意升级到 12.2 需要的最低的参数 COMPATIBLE 值为”11.2.0”,确保参数 COMPATIBLE 值设置为 11.2.0 或者更高。
  • 查看文档 "Patches to apply before upgrading Oracle GI and DB to 12.2.0.1 (Doc ID 2180188.1)" 给出的推荐补丁
  • 在目标 ORACLE_HOME 应用补丁 patch 29213893 来避免 ORA-01422 错误 - 参考: Database Upgrade to 12.2, 18c, 19c fails with ORA-01422, ORA-06512 for SYS.DBMS_STATS (Doc ID 2525596.1)

步骤 4:检查源库的健康状况

  • 执行 dbupgdiag.sql(可以从 note 556610.1 下载这个脚本),并且确认是否有 SYS/SYSTEM 用户下的失效对象或者失效组件。如果存在的话,那么需要在升级前解决这些问题。你可以多次执行 utlrp.sql 来解决问题。如果在这样做之后仍然存在失效对象,那么开一个 SR 来解决这个问题。
  • 多次执行脚本 utlrp.sql 确认数据库中没有失效对象。

步骤5:升级前检查

清理数据库

清空回收站
检查 SYS 及 SYSTEM 用户的失效对象
检查 SYS 及 SYSTEM 用户下的重复对象
检查失效的、必需的、废弃的组件

检查物化视图

检查所有的物化视图的状态,刷新所有没有刷新的物化视图。
检查物化视图日志的大小,如果物化视图日志的行数非零,那么刷新物化视图。
检查 direct loader 日志以及 PMOP 日志(分区维护操作日志),如果 direct loader log 或者 PMOP 日志非空,那么刷新日志显示的物化视图。
升级数据库前,必须确保所有的物化视图都已经刷新完毕。

  1. 执行下面的 SQL 查询:

SQL> SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;

性能方面

保存性能相关指标
检查网络性能
收集优化器统计信息

收集统计信息可以减少停机时间,Oracle建议使用 DBMS_STATS.GATHER_DICTIONARY_STATS 来收集这些统计信息,比如:

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

检查时区设置

Oracle database 12.2 的默认 time zone 文件版本是 V26。
源库的 time zone 文件版本应该小于或者等于目标库的 time zone 文件版本。如果源库的 time zone 文件版本更高,那么需要升级目标库的 time zone 文件版本来对应源库的 time zone 文件。

备份数据库

备份数据库,创建 guaranteed flashback restore point。
在升级数据库窗口前应最少测试一下回滚策略。
确保回滚策略不仅考虑到升级中,同时也要考虑到升级后的失败。
RMAN 连接到 RMAN

rman "target / nocatalog"

执行 RMAN 命令来备份

确保升级前所有的文件都没有处于备份模式

执行下面的语句:

清空回收站

要清空回收站,执行下面的语句:

注意:升级前务必清空回收站来避免 ORA-00600 错误并且减少升级时间。

备份 Oracle EM DB Control 配置及数据

如果在升级数据库到 12.2 版本后,有需要再降级,那么我们必须在升级前使用 emdwgrd 工具备份 Database Control 的文件,这样在降级后可以恢复这些文件。

备份数据的步骤
  1. 安装 12.2 的数据库软件。
  2. 设置 ORACLE_HOME 到旧的数据库版本。
  3. 设置 ORACLE_SID 为要升级的数据库 SID。
  4. 设置 PATH, LD_LIBRARY_PATH 和 SHLIB_PATH 到旧的 ORACLE_HOME 相关的目录下。
  5. 切换目录到 12c 数据库软件的 ORACLE_HOME/bin。
  6. 执行 emdwgrd。
    对于单数据库实例 (非 RAC) 运行下面的命令:

Oracle Real Application Clusters(Oracle RAC)数据库:
需要跨节点远程拷贝。定义一个环境变量 EM_REMCP 来指向远程拷贝的命令,比如:export EM_REMCP /usr/bin/scp

  1. 输入 SYS 密码。

使用 emremove.sql 手工删除 DB control

关闭 DB control

使用 sysdba 登陆

从系统中手工删除 ORACLE_HOME/HOSTNAME_SID/ 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目录。
如果是 windows 系统则删除 DB Console service OracleDBConsoleSID。

删除 JSON-Enabled Context search 索引

如果源库版本为 12.1.0.2 并且创建了 JSON search index 那么 Oracle 推荐先删除这些索引,在升级后再创建回来。

检查使用大小写不敏感密码的用户

使用管理用户登录 SQL*Plus,并且执行下面的语句:

如果存在10g 版本的用户,建议根据 Oracle 文档解决这个问题,否则升级后用户会被 LOCK。

删除 Unified Auditing Schema and Roles

注意:如果在 Oracle 12.1 数据库上已经创建了 AUDIT_ADMIN 或者 AUDIT_VIEWER 用户或者 roles,或者数据库是在 12.1 版本上创建(而不是升级上来的),那么不需要删除这些 role 和 AUDSYS 用户。

更多信息请参照 URL: https://docs.oracle.com/database/122/UPGRD/unified-auditing-audit_admin-audit_viewer-changes.htm#UPGRD60010

使用 SYS 以 SYSDBA 权限登录 SQL*Plus,删除 AUDSYS,如果存在的话。以 migrate 模式启动数据库并删除 AUDSYS 用户

删除 AUDIT_ADMIN 和 AUDIT_VIEWER roles

在升级过程中把某些 schema 的表空间置于 offline

记下所有在升级过程中需要 offline 的表空间,使用 -T 选项指定表空间的名字

从 Oracle database 12.2 开始,可以在并行升级时使用 -T 参数来 offline 一些用户表空间。把用户表空间 offline 可以减少升级前的备份工作。并行升级工具(catctl.pl)可以自动选取正确的表空间来设置为只读。这个工具不会把任何包含Oracle 自带的对象的表空间设置为只读。

注意: 不要执行这个步骤,因为 dbupgrade -T 会执行升级的动作。我们在 Pre-upgrade 阶段提及这个命令只是让大家记下 tablespace 的名字,这样在稍后真正升级的步骤里可以把 tablespace name 指定到 dbupgrade 的 -T 参数之后。

保留降级的能力

如果计划把数据库降级到之前的版本,那么需要在源库上打 patch 20898997,否则不能降级。

在源库执行:

如果尚未应用这个补丁,那么从 MOS 下载 patch 20898997 并安装。

关于 Audit table 的升级前要求

如果要升级的数据库版本低于 12.1 并且使用了 Oracle database Vault,Oracle Label Security,那么必须先执行 olspreupgrade.sql。从目标 Oracle_home 拷贝 $ORACLE_HOME/rdbms/admin/olspreupgrade.sql 到源库的ORACLE_HOME,使用 DVOWNER 登陆源库

在把 DV_PATCH_ADMIN 权限赋给 SYS 后,使用 SYSDBA 登陆

CONNECT SYS AS SYSDBA

执行 olspreupgrade.sql

执行完毕后,以 DVOWNER 登陆数据库并收回 SYS 的 DV_PATCH_ADMIN 权限

集群数据库的需要

在升级数据库前需要先升级 GI 软件。如果是 RAC,那么需要把参数文件中的 CLUSTER_DATABASE 参数设置为 false。

注意!在升级完毕后需要把CLUSTER_DATABASE再设置回来

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
手动升级到 Non-CDB Oracle Database 12c Release 2(12.2)的完整核对清单 (Doc ID 2297983.1、2173141.1)后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部