Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)
Posted 久违的太阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)相关的知识,希望对你有一定的参考价值。
Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1) | 正在上传…重新上传取消To Bottom |
文档内容
适用于:Oracle Database - Enterprise Edition - 版本 19.1.0.0.0 和更高版本本文档所含信息适用于所有平台 用途本文档可用作手工将 Oracle 11gR2 (11.2) 或者 Oracle 12c Release 1 (12.1) 或者 Oracle 12c Release 2 (12.2) 版本数据库升级至 Oracle 19c 版本数据库的指南与核对表。 适用范围数据库管理人员, 技术支持 详细信息关于新的 Autoupgrade utilityOracle 强烈建议使用 AutoUpgrade 工具来执行其他方法的数据库升级。 获取最新版本的 AutoUpgrade 工具,请参考 Note 2485457.1 Reference : AutoUprade Blog
步骤 1: 升级到数据库 19c 的升级路径能够直接升级到 Oracle 19c 的数据库最小版本
以下的数据库版本需要间接升级
对于任何多步骤的升级,因为必须要升级两次,所以需要运行 preupgrade 脚本两次:首先,对于中间升级版本运行脚本一次,之后,对于最终升级到的版本运行脚本一次。比如,如果要升级的数据库是Oracle Database 10g,那么按照下面的步骤
如果您打算使用Data Pump export/import来升级,那么这个限制就不存在了。 比如:
19c版本的变化 对 DBMS_JOB 的支持 Oracle继续支持DBMS_JOB包。但是,您必须赋予提交 DBMS_JOB jobs 的用户以 CREATE JOB 的权限。
不再支持 Oracle Multimedia Oracle Database 19c 中不再支持 Oracle Multimedia 功能,此功能已从 19c 中被移除。 不再支持 Oracle Streams 从 Oracle Database 19c(19.1)开始,不再支持 Oracle Streams 功能。 Oracle GoldenGate 是 Oracle 数据库的复制解决方案。 如果使用了 Oracle Streams,则 Preupgrade check “STREAMS_SETUP” 将发出警告。 要删除 Oracle Streams,则请参阅对应版本的 Oracle documentation,Oracle Streams Concepts and Administration Guide 中的 "Removing an Oracle Streams Configuration" 部分。 步骤2: 推荐/需要在源库上完成的
步骤 3: 推荐/需要在目标库上完成的
步骤 4: 升级前检查推荐在开始升级DB前先仔细完整的参考文档 Preparing to upgrade Oracle Database 清理数据库 清空回收站 注意: preupgrade.jar 也会提醒这些问题。 检查所有的物化视图 检查所有的物化视图的状态,刷新所有没有刷新的物化视图。 执行下面的 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; 注意:preupgrade.jar 也会提醒这些问题,请您注意检查 preupgrade 日志。 Schema-Only 的用户以及升级密码状态为 EXPIRED 的用户 在开始升级之前,请确定是否要对密码处于EXPIRED状态且其帐户处于LOCKED状态的默认Oracle数据库帐户使用密码身份验证。 此功能还可以降低未授权者使用默认密码侵入这些帐户的安全风险。
复制 Transparent Encryption Oracle 钱包 如果使用了带 Oracle 钱包的 Transparent Data Encryption (TDE),那么拷贝 thesqlnet.ora 和 wallet 文件到新的Oracle home。在升级前需要手工拷贝 sqlnet.ora 和 wallet 文件。
打开数据库 wallet。 SQL> STARTUP MOUNT; 理解密码大小写敏感 从 Oracle Database 12c release 2 (12.2) 开始,默认的基于密码验证的协议排除了大小写不敏感的 10g 版本的密码。默认的SQLNET.ORA文件中参数SQLNET.ALLOWED_LOGON_VERSION_SERVER被设置成了 12 (排他模式)。 为了安全起见,Oracle建议使用大小写敏感的密码验证。这是默认的设置。但是在升级数据库的时候可以短暂的关闭大小写敏感的密码验证。在升级后,可以再决定是否启用大小写敏感的密码验证。 在升级前,Oracle建议您检查是否新的密码验证会影响您的应用。可以做下面的检查:
更多信息请参考 19c Oracle database documentation 检查 密码大小写不敏感 的账号 确定要升级的Oracle数据库是否存在使用了不区分大小写密码版本的帐户。 更多信息请参考 19c Oracle database documentation 对只读表空间升级 以 -T 参数使用 Parallel Upgrade Utility 可以在升级时把用户表空间置为只读。 因为数据库可以读取之前版本创建的数据文件 header, 所以在升级时我们不需要做额外的操作。当升级完成后,表空间被置为读写时,文件 header 会自动被更新。如果升级失败,无法把表空间重新 online,那么检查升级日志。日志中包含把表空间重新 online 的语句。可以在数据库中或者每个pdb里手工执行来 online 表空间。 如果升级失败可以检查升级的日志 (Oracle_base/cfgtoologs/dbua), 并且手工执行日志中的命令来 online 表空间。可以检查如下日志: SQL> ALTER TABLESPACE <Tablespace Name> READ ONLY; 而在每个日志文件的结尾部分,可以找到把表空间置为读写的SQL命令: SQL> ALTER TABLESPACE <Tablespace Name> READ WRITE; 为升级新的Oracle Home做准备
在Windows平台为升级新的Oracle Home做准备 在 Microsoft Windows 平台升级数据库前需要先确保系统已经满足升级条件。 出于安全考虑,不同的 Windows 账户配置为 Oracle home 不允许共享同一个 Oracle Base。
使用了 Oracle Label Security 和 Oracle Database Vault 的数据库 Audit Table升级及归档的要求 olspreupgrade.sql 脚本会在 SYS 用户下创建临时的表PREUPG_AUD$,并把 SYSTEM.AUD$ 的记录移到 SYS.PREUPG_AUD$。安全起见,Oracle推荐您在运行 olspreupgrade.sql 前归档您的审计记录。
ORACLE_HOME/rdbms/admin/olspreupgrade.sql
SQL> GRANT DV_PATCH_ADMIN to SYS;
CONNECT SYS AS SYSDBA
ORACLE_HOME/rdbms/admin/olspreupgrade.sql
SQL> REVOKE DV_PATCH_ADMIN from SYS; 对于Database Vault,赋予SYS以DV_PATCH_ADMIN的角色 SQL> GRANT DV_PATCH_ADMIN to SYS; 使用 emremove.sql 手工删除 DB control 关闭 DB control emctl stop dbconsole SQL>SET ECHO ON 从系统中手工删除ORACLE_HOME/HOSTNAME_SID/ 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目录 确保升级前所有的文件都没有处于备份模式 执行下面的语句: SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; 清空回收站 要清空回收站,执行下面的语句: SQL> PURGE DBA_RECYCLEBIN 注意: 升级前务必清空回收站来避免 ORA-00600 错误并且减少升级时间。 性能方面 保存性能相关指标 收集统计信息可以减少停机时间,Oracle建议使用 DBMS_STATS.GATHER_DICTIONARY_STATS 来收集这些统计信息,比如: SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; 检查时区设置 源库的 time zone 文件版本应该小于或者等于目标库的 time zone 文件版本。如果源库的 time zone 文件版本更高,那么需要升级目标库的 time zone 文件版本来对应源库的 time zone 文件。 关于升级 Oracle OLAP Data Security Policies 在 11g 数据库上定义的 Data security roles 不能自动转换成 ORAS。所以在升级前,需要删除所有在 11g 数据库上定义的 data security roles。升级后可以使用新版本的 Analytic Workspace Manager 重新定义 data security roles。 Block Change Tracking 如果启用了 "Block Change Tracking" 功能,那么需要在升级前禁用它。下面是具体的命令 ALTER DATABASE DISABLE BLOCK CHANGE TRACKING; 在升级前的源库执行上面的命令 在完成升级后再启用这个功能并在恢复增量备份前做一个0级备份。关于备份相关的信息请参照Oracle Backup and Recovery User's Guide。另外,如果使用了手工内存管理,则请 一并参考文档<Doc ID 2651237.1> PUBLIC Synonym AREA 如果安装了 Oracle Multimedia 或者 Oracle Spatial,在安装前检查 PUBLIC synonym AREA。它应当被定义为 OGC_AREA 的同义词,否则会导致升级后一些DB组件是失效的状态 SQL> select owner, synonym_name, table_owner, table_name from dba_synonyms where synonym_name = 'AREA'; OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME 步骤 5: Preupgrade 步骤在源库执行 Preupgrade 脚本 $Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar FILE TEXT DIR output_dir FILE - 使用这个参数把输出写入输出文件 注意: 您可以从此文档中下载最新的 preupgrade 脚本 - How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1) Pre-Upgrade 工具 (preupgrade.jar) 会创建以下的文件: 推荐执行 pre-upgrade fixup 脚本 Preupgrade fixup 脚本 在升级开始前,在SQL*Plus中手工执行 preupgrade fixups ( Network Utility 包的依赖关系 执行 preupgrade 脚本后,检查 preupgrade 日志 WARNING: --> Database contains schemas with objects dependent on network packages. .... Refer to the Database Upgrade Guide for instructions to configure Network ACLs. .... USER WKSYS has dependent objects. .... USER SYSMAN has dependent objects. .... USER FLOWS_010600 has dependent objects. 执行下面的语句 SQL> SELECT * FROM DBA_DEPENDENCIES WHERE referenced_name IN ('UTL_TCP','UTL_SMTP','UTL_MAIL','UTL_HTTP','UTL_INADDR','DBMS_LDAP') AND owner NOT IN ('SYS','PUBLIC','ORDPLUGINS'); 在升级测试中,确保使用新的访问控制。在升级后确保这些包是可用的,在升级后,根据源库的使用情况赋予正确的权限。 检查 Time zone 文件版本 检查目标数据库的 time zone 文件版本是否低于源库的 time zone 文件版本,如果是的话,需要升级目标数据库的 time zone 文件版本。 数据库 DST 补丁可以从 Note 412160.1 下载。 备份数据库 建议在运行 Pre-Upgrade Information Tool 之后备份数据库。创建 guaranteed flashback restore point。 测试备份,确保出现问题后有回退方案。 rman "target / nocatalog" 备份文件以保留降级和恢复选项 Oracle Data Guard Broker配置文件和降级 导出 Broker 配置 DGMGRL> CONNECT sysdg@North_Sales.example.com; 以下命令导出 broker 配置并将其存储在 trace 目录中名为myconfig.txt的文件中。 DGMGRL> EXPORT CONFIGURATION TO 'myconfig.txt'; 注意:这仅适用于19c或者更高版本的数据库 步骤 6: 升级数据库到 19c关闭数据库 SQL> SHUTDOWN IMMEDIATE Windows平台的步骤 : 如果操作系统是Windows,那么完成下面的步骤: a. 停掉要升级的数据库 OracleServiceSID Oracle service,这里的SID是实例名。比如,如果SID是ORCL,那么执行下面的命令: C:\\> NET STOP OracleServiceORCL b. 使用ORADIM来删除 Oracle service。请参考平台相关的文档来获取ORADIM命令的格式。比如,如果您的SID是ORCL,那么执行下面的命令 C:\\> ORADIM -DELETE -SID ORCL c. 使用新ORACLE软件的ORADIM来创建 service。 C:\\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -MAXUSERS USERS -STARTMODE AUTO -PFILE ORACLE_HOME\\DATABASE\\INITSID.ORA 对于 Unix/Linux 设置环境变量指向目标 ORACLE_HOME export ORACLE_HOME=<path to Oracle 19c> 从旧的Oracle home下拷贝 SPFILE.ORA 或者 INIT.ORA到目标Oracle home 使用目标 ORACLE_HOME(设置 ORACLE_HOME 为目标 ORACLE_HOME)启动数据库到 upgrade 模式 CONNECT / AS SYSDBA 在 Linux/Unix 上 cd $ORACLE_HOME/bin 在 Windows 上 cd %ORACLE_HOME%\\bin 执行 Post-Upgrade Status 工具, utlusts.sql 并且检查升级的日志。在新的版本下执行 Post-Upgrade Status 工具。 $ sqlplus "/as sysdba" 注意: 之前版本的 utluNNNs.sql 在 19c 上被替换为 utlusts.sql 注意: 如果执行 utlusts.sql 时碰到错误 "ORA-06502: PL/SQL: numeric or value error: character string buffer too small" ,那么执行
如果使用了Oracle Clusterware,设置了 CLUSTER_DATABASE=TRUE 那么你必须升级数据库对应的 Oracle Clusterware keys。在19c上运行 srvctl 来做这件事,比如: ORACLE_HOME/bin/srvctl upgrade database -db name -o ORACLE_HOME 检查升级状态 执行 dbupgdiag.sql 并检查日志。可以从 Note 556610.1 下载这个脚本。 编译失效对象 执行 utlrp.sql (多次) 来使它们生效,直到失效对象的个数不再改变。 $ sqlplus "/ AS SYSDBA" 步骤7: 升级后步骤在 Linux 和 Unix 上设置环境变量 确保下面的环境变量指向了新的 ORACLE_HOME 对应的目录: ORACLE_HOME 更新 oratab 文件 修改 /etc/oratab 文件对应的条目指向新的 ORACLE_HOME 目录 Post-upgrade fixup 脚本 执行 pre-upgrade 产生的 post-upgrade fixup 脚本 SQL> @postupgrade_fixups.sql 使用 ORAPWD 创建或者迁移您的密码文件 如果REMOTE_LOGIN_PASSWORDFILE初始化参数设置为EXCLUSIVE,则使用ORAPWD创建或迁移密码文件。 Oracle Database 12c及更高版本为ORAPWD提供了一个新选项,用于从现有数据库迁移密码文件。 在升级数据库后升级 Recovery Catalog 如果使用的recovery catalog版本低于rman客户端的版本,我们必须升级它。可以通过命令 UPGRADE CATALOG 来升级 Recovery catalog。 关于具体的步骤信息,请参照Oracle文档中的 Upgrading the Recovery Catalog。 在升级数据库后升级 Time Zone文件版本 如果 Pre-Upgrade Information Tool 要求我们在升级数据库后升级 time zone 文件,那么使用 DBMS_DST PL/SQL package 来升级 RDBMS DST(timezone)版本 以下脚本随Oracle Database 18c及以上版本一起提供 升级那些使用 DBMS_STATS 创建的统计信息表(Statistics Tables) 如果我们使用 DBMS_STATS.CREATE_STAT_TABLE 手工创建了一些统计信息表(statistics tables),那么执行下面的命令来升级这些表(如果没有创建过统计信息表,那这一步骤可以忽略)。例如: EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS', 'dictstattab'); 对每个统计信息表都要执行一遍上面的命令。 |
以上是关于Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)的主要内容,如果未能解决你的问题,请参考以下文章
从 oracle 12c 升级到 oracle 19c 导致查询性能下降
Oracle 19c RAC 升级RU 从19.3 升级到19.6 操作手册(使用nonrolling 方式)