本帖最后由 windjack 于 2020-5-13 11:00 编辑
当手动从Oracle11gR2(11.2)或Oracle 12c Release 1(12.1)或Oracle 12c Release 2(12.2)升级到Oracle 19c版本时,创建此文档作为指南和检查表。 直接升级版本要求: Source | Target | 11.2.0.4 | 19c | 12.1.0.2 | 19c | 12.2.0.1 | 19c | 18.1 | 19c |
间接升级版本指南: Source Database |
| Intermediate upgrade path |
| Target database | 12.1.0.1 | --> | 12.1.0.2/12.2.0.1 | --> | 19c | 11.2.0.1/11.2.0.2/11.2.0.3 | --> | 11.2.0.4 | --> | 19c | 11.1.0.6/11.1.0.7 | --> | 11.2.0.4 | --> | 19c | 10.2.0.2, 10.2.0.3, 10.2.0.4, 10.2.0.5 | --> | 11.2.0.4/12.1.0.2 | --> | 19c | 10.1.0.5 | --> | 11.2.0.4/12.1.0.2 | --> | 19c | 9.2.0.8 or earlier | --> | 11.2.0.4 | --> | 19c
|
一、注意事项
升级19C时,可能需要打补丁 参考官方文档(Doc ID2539751.1)
DBMS_JOBS支持 19C因为向后兼容,支持DBMS_JOBS,但官方强烈建议使用DBMS_SCHEDULER来创建JOB。 要使用DBMS_JOBS,必须将CREATE JOB权限授予提交DBMS_JOB作业的数据库模式。
多媒体数据的支持 作为图像处理和转换的替代方案,Oracle建议您将多媒体内容存储在SecureFiles lob中,并使用第三方产品,如Piction。 ORDIM组件仍然保留在注册表中,并且仍然具有有效的状态。Oracle多媒体对象和包保留在数据库中。 但是,这些对象和包不再起作用,如果试图使用它们,就会引发异常。Oracle Locator不受Oracle多媒体解码器的影响。
Oracle Streams的支持 在Oracle数据库19c(19.1)中,Oracle流是解支持的。Oracle GoldenGate是Oracle数据库的复制解决方案。 注意,Oracle数据库高级排队不受反对,在Oracle Database 19c中完全支持。 Oracle Streams不支持在Oracle Database 12c(12.1)及其后续版本中添加的特性, 包括多租户体系结构、LONG VARCHAR和其他新特性。Oracle流复制功能被GoldenGate取代。 如果出现Oracle流,则“STREAMS_SETUP”将发出警告。要在18c中删除Oracle流,请参考Oracle文档, 类似地,请参考Oracle流概念和中“删除Oracle流配置”一节.
二、数据库升级的需求和建议 1.对源数据库进行冷备份或热备份。
2.禁用DDL之前/之后执行的任何自定义触发器,一旦升级完成,就可以启用它。
3.在11gOracle数据库实例中定义的数据安全角色不会自动转换为ORAS。在将11g数据库升级到Oracledatabase 19c之前, 必须删除11g数据库中定义的任何数据安全角色。升级之后,您可以使用AnalyticWorkspace Manager 19c再次定义数据安全角色。 如果将11g数据库升级到Oracle database 19c而没有删除11g数据安全角色, 那么任何包含数据安全角色的数据安全策略在Oracle database 19c数据库中都是无效的。 如果源版本的时区已经高于目标主机,则在升级之前将匹配的时区或任何更高的时区补丁应用到目标主机。 对于最新的DST补丁,请参考注释412160.1。
4.如果已经安装了APEX,那么建议在升级DB之前先在源DB中升级APEX。请参阅注释1088970.1。
5.处理源库中无效的对象/组件。在升级前执行预升级脚本,如果有任何问题,请查看预升级日志。 执行dbupgdiag.sql(请参阅备注556610.1下载此脚本)验证是否存在SYS/SYSTEM拥有的任何无效组件或对象。 如果有,请在升级数据库之前修复它们。您可以执行utlrp.sql多次验证它们,如果仍然对象是无效的,创建一个带有Oracle支持的服务请求。
三、服务器相关需求和建议 1.验证操作系统是否通过了19C的认证。进入 这里here进入验证. 2.下载和安装最新的RU补丁 3.升级19C的要求COMPATIBLE数据库参数设置大于等于11.2.0 4.确保应用相关的补丁,参见文档 (Doc ID 2539751.1)" Applypatch 29213893 on target ORACLE_HOME to avoid ORA-01422 error - refer: DatabaseUpgrade to 12.2, 18c, 19c fails with ORA-01422, ORA-06512 for SYS.DBMS_STATS ( Doc ID 2525596.1)
5.Pre-upgrade checks 升级前预检查 执行preupgrade.jar进行如下检查: 清空回收站 检查sys和system用户中无效的对象 检查sys和system用户中重复的对象 检查无效的、强制性的、废弃的组件 检查物化视图(由preupgrade.jar来处理) 检查所有物化视图的状态,刷新所有未刷新的视图。 检查所有物化视图日志,对视图日志非零行的物化视图的基表进行刷新。 检查直接加载器日志和PMOP日志(分区维护操作日志)的大小。如果任何直接加载器日志 或PMOP日志具有非零行,则刷新日志所指示的MVs在升级Oracle数据库之前,必须等待所有物化视图完成刷新。
6.账户和密码处理 在开始升级之前,确定是否要使用password authenticate来默认Oracle数据库帐户,其中其密码处于过期状态,且帐户处于锁定状态。 在升级到Oracle Database 19c期间,在升级之前没有重置密码(并且设置为过期状态)的默认Oracle帐户以及设置为锁定状态的帐户, 在升级完成后将设置为NO AUTHENTICATION。由于这个新特性,更改为仅模式帐户的默认帐户将无法进行密码身份验证。 这个特性的好处是管理员不再需要周期性地轮换这些Oracle数据库提供的模式的密码。该特性还降低了攻击者使用默认密码入侵这些帐户的安全风险。 如果你想防止这些甲骨文账户设置模式帐户升级,然后你必须设置一个有效的强密码的账户在你开始升级前, 或设置一个有效的强密码后这些帐户升级,或打开账户在你登录到Oracle数据库升级。 升级之后,管理员还可以启用仅模式帐户的密码身份验证。
7.复制透明加密Oracle钱包 如果使用带有透明数据加密(TDE)的Oracle钱包,则复制sqlnet.ora和钱包文件到新的 OracleHome对应的目录下。您必须复制sqlnet.ora和钱包文件手动开始升级。以授权用户 身份登录。手动复制sqlnet.ora文件和钱包文件ewallet.p12到新发布的Oracle Home对应的目录下。
8.密码大小写敏感 从Oracle Database 12c release 2(12.2)开始,默认的基于密码的身份验证协议配置不使用不区分大小写的10G密码版本。
默认情况下,SQLNET.ORA 中的参数ALLOWED_LOGON_VERSION_SERVER被设置为12,这是一种排他模式。 为了获得更高的安全性,Oracle建议您启用区分大小写的基于密码的身份验证。这个设置是默认的。但是,在升级到新 的Oracle数据库版本期间,可以暂时禁用区分大小写的身份验证。升级之后,您可以决定是否要启用区分大小写的基于 密码的身份验证特性,将其作为实现计划的一部分来管理密码版本。 使用以下SQL查询查找只有10G密码版本的帐户: select USERNAME from DBA_USERS where ( PASSWORD_VERSIONS = '10G ' or PASSWORD_VERSIONS ='10G HTTP ') and USERNAME <> 'ANONYMOUS';
9.配置参数sqlnet.ora中参数SQLNET.ALLOWED_LOGON_VERSION_SERVER=11后,再执行升级操作。
升级完成后,通过修改用户口令过期的方式来处理上面查询出来的受到影响的账户。 ALTERUSER username PASSWORD EXPIRE;
10.升级19C处理只读表空间 使用带有-T选项的并行升级实用程序,在升级期间使基于模式的表空间脱机。Oracle数据库可以读取在早期版本中创建的文件头, 因此在升级期间不需要对它们做任何操作。只读表空间的文件头在更改为读写时更新。如果升级遇到灾难性错误,导致升级无法 使表空间恢复联机,那么请检查升级日志文件。日志文件包含使表空间可用所需的实际SQL语句。要使表空间重新联机,必须在 数据库的日志文件中运行SQL语句,或者为每个PDB运行日志文件。
11.升级前对新的ORACLE_HOME做准备 复制旧版本的参数文件到新ORACLE_HOME下
复制密码文件或者创建密码文件到新的ORACLE_HOME下 移出参数文件中新版本不支持的或者废弃的参数 如果是升级是RAC,需要在升级前修改参数CLUSTER_DATABASE=FALSE
确保在升级前所有的数据文件都不在备份状态或备份模式下 SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
清空回收站 PURGEdba_recyclebin; 在升级过程中,数据库回收站必须为空,以避免可能的ORA-00600错误并最小化升级时间。
执行统计数据收集 为了减少停机时间,收集统计数据。Oracle建议您使用DBMS_STATS收集这些统计数据。 如:EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
修改时区设置 时区应小于或等于目标数据库时区版本。如果源具有较高的时区,则在目标ORACLE_HOME上应用时区补丁以匹配源。
四、预升级步骤 1.执行脚本: $Earlier_release_Oracle_home/jdk/bin/java-jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar FILE TEXT DIRoutput_dir FILE – 指定检查结果输出的文件名 TEXT – 指定输出文件的格式(其它格式包含XML)
DIR – 文件创建的目录 Note:下载检查脚本参见文档 (Doc ID 884522.1)
执行预计升级脚本: preupgrade_fixups.sql 查看依赖对象: SELECT * FROMDBA_DEPENDENCIES WHERE referenced_name IN('UTL_TCP','UTL_SMTP','UTL_MAIL','UTL_HTTP','UTL_INADDR','DBMS_LDAP') AND ownerNOT IN ('SYS','PUBLIC','ORDPLUGINS');
2.备份数据库 运行Pre-Upgrade工具后,建议备份Oracle数据库。采取备份或创建一个有保证的恢复点,或两者兼而有之。测试你的备份。确保有一个适当的后备计划,以防出现任何问题。 RUN
{
ALLOCATECHANNEL chan_name TYPE DISK;
BACKUPDATABASE FORMAT 'some_backup_directory%U' TAG before_upgrade;
BACKUP CURRENTCONTROLFILE FORMAT 'controlfile location and name';
}
3.备份相关文件确保升级失败恢复 在升级到Oracle Database 19c及以后的版本时,您必须备份Data Guard broker配置文件,以保留降级到较早版本的能力. 通过EXPORT CONFIGURATION命令将broker configuration file中包含的元数据导出到文本文件,m目录必须能够被Oracle服务器进程访问。 DGMGRL> CONNECT sysdg@North_Sales.example.com;
Password: password
Connected to "North_Sales"
Connected as SYSDG.
Export the broker configuration. DGMGRL> EXPORT CONFIGURATION TO 'myconfig.txt';
Succeeded.
五、升级到19C 关闭数据库 设置新版本的环境变量 exportORACLE_HOME=<path to Oracle 19c>
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE=<path to Oracle_Base set during installation>
开始升级 在新的ORACLE_HOME中: CONNECT/ AS SYSDBA
SQL> startup upgrade;
SQL> exit; On Linux/Unix cd $ORACLE_HOME/bin
./dbupgrade On Windows cd %ORACLE_HOME%\bin
dbupgrade
执行升级状态检查工具 $ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlusts.sql 在19C之前的版本中执行升级状态检查工具 $ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlusts.sql TEXT
集群环境的处理 设置 CLUSTER_DATABASE=TRUE ORACLE_HOME/bin/srvctl upgrade database -db name -oORACLE_HOME
检查升级结果
重新编译无效对象 $ sqlplus"/ AS SYSDBA"
SQL> @Oracle_home/rdbms/admin/utlrp.sql
六、完成升级 设置环境变量 在linux或unix环境中,包含ORACLE_HOME和PATH
修改/etc/oratab 修改为新库的oracle_home 位置
执行升级修复脚本 SQL>@postupgrade_fixups.sql
创建或拷贝密码文件 12C及以后版本不支持参数REMOTE_LOGIN_PASSWORDFILE设置为SHARED,需要设置为exclusive (启用密码文件认证登录)或NONE(禁止使用密码文件认证登录)。
升级恢复目录 如果使用了恢复目录,需要使用upgradecatalog来升级。
升级时区文件版本 如果升级前信息工具指示您在完成数据库升级后升级时区文件,那么使用DBMS_DST PL/SQL包更新RDBMS DST(时区)版本。 $ORACLE_HOME/rdbms/admin/utltz_countstats.sql
Script to gives how much TIMESTAMP WITH TIME ZONE data thereis in a database using stats info. No restart required.
$ORACLE_HOME/rdbms/admin/utltz_countstar.sql
Script to approximate how much TIMESTAMP WITH TIME ZONE datathere is in a database using a COUNT(*) for each table that has a TSTZ column. This script is useful when using DBMS_DST package or the scripts ofutlz_upg_check.sql and utlz_upg_apply.sql scripts.
$ORACLE_HOME/rdbms/admin/utltz_upg_check.sql
Time zone upgrade check script
?/rdbms/admin/utltz_upg_apply.sql
Time zone apply script. Warning: This script will restartthe database and adjust time zone data.
升级统计信息表 如果使用了DBMS_STATS.CREATE_STAT_TABLE创建了表,需要使用DBMS_STATS.UPGRADE_STAT_TABLE来升级这些表。 例如:EXECUTEDBMS_STATS.UPGRADE_STAT_TABLE('SYS', 'dictstattab');
完
|