使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)


Oracle 18c - 使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)


文档内容  


用途

适用范围

详细信息

Database Upgrade Assistant (DBUA)

关于只读 Oracle Homes

升级路径/18.x 兼容性矩阵

需要及推荐在源库上完成的

推荐/需要在目标库上完成的 

在 Windows 上需要对 Oracle Home 做的准备及前提条件

升级前步骤

检查源库中失效的组件及对象:

收集优化器统计信息来减少数据库停机时间

确认升级前物化视图刷新都已经完成

检查 TIMESTAMP WITH TIMEZONE 类型的数据类型

确保没有数据文件需要介质恢复(media recovery)或处于备份的状态

升级前清空回收站

使用了 Oracle Label Security 和 Oracle Database Vault 的数据库

备份 Oracle EM DB Control 配置及数据 (对于低于 12.1 版本的数据库)

单实例数据库:

Oracle Real Application Clusters (Oracle RAC) 数据库:

使用 emremove.sql 删除 DB control (对于低于 12.1 版本的数据库)

不再支持 OLAP Catalog (OLAP AMD) (对于低于 12.1 版本的数据)

复制 Transparent Encryption Oracle 钱包

检查用户使用了大小写敏感的密码的版本

关于密码大小写敏感

使用了 Oracle Warehouse Builder (OWB) 组件的数据库的升级前要求

启动 DBUA

DBUA ( Step 1 of 9 ) 

DBUA ( Step 2 of 9 ) 

DBUA ( Step 3 of 9 ) 

DBUA ( Step 4 of 9 ) 

DBUA ( Step 5 of 9 ) 

DBUA ( Step 6 of 9 ) 

DBUA ( Step 7 of 9 ) 

DBUA ( Step 8 of 9 ) 

DBUA ( Step 9 of 9 ) 

升级后步骤

已知问题


适用于:

Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本  
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本  
Oracle Database Cloud Service - 版本 N/A 和更高版本  
Oracle Database - Enterprise Edition - 版本 11.2.0.3 到 18.1.0.0.0 [发行版 11.2 到 18]  
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本  
本文档所含信息适用于所有平台  

用途

本文旨在提供使用 DBUA 从低版本数据库升级到 18.x 的指南。

适用范围

 DBA, Support

详细信息

Database Upgrade Assistant (DBUA)

Database Upgrade Assistant(DBUA)交互式的引导我们完成升级新数据库的步骤。

 

DBUA 同时支持 CDB 和 non-CDB 数据库系统。 它是在版本和补丁程序集级别执行数据库升级的推荐方法。

可以使用 DBUA 来升级多租户模式下的 CDB 和 PDB,以及非多租户模式下的 non-CDB 数据库。
过程是相同的,但具体取决于升级类型,您需要做出的选择和之后DBUA的行为是不同的。

它会自动执行为了升级数据库所需的所有步骤

DBUA 也支持升级 Oracle Real Application Clusters (Oracle RAC) 数据库。在 Oracle RAC 环境下, DBUA 升级集群中的所有节点上的数据库以及配置文件。

DBUA 需要在新安装的数据库 18c 软件的 ORACLE_HOME 下运行。
在 windows 环境下,需要使用 administrator 用户或者软件的属主用户来执行 DBUA。

在真正开始升级前,DBUA 会执行 Pre-Upgrade Tool 来做先决条件检查。

但是,为了减少停机时间,Oracle建议您在升级计划中运行 Pre-Upgrade Tool,以便分析数据库的先决条件检查,并在计划的升级日期之前采取主动措施。

当解决了所有预升级推荐/错误/警告后开始升级,DBUA 会显示升级源库各个组件的进展。

和之前版本的 DBUA 相比,18c 的 DBUA 限制了对隐藏参数的设置。因为除了为了升级而由 Oracle 技术支持推荐的隐含参数外,Oracle 不推荐使用其它的隐藏参数。

要检查数据库中已设置的隐藏参数,可以使用 AS SYSDBA 权限执行下面的命令:

SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\';

DBUA 会在数据库真正升级之前检查一些项目;这些检查也可以手工去做来减少升级的停机时间。

DBUA 提供下面的一些选项

- 升级 timezone。 18.x 默认的 timezone 版本是 26。

- 在升级前收集数据字典的统计信息。

- 把用户表空间设置为只读。

- 在升级前做 RMAN 备份。

- 为 Database Flashback 创建一个 Restore Point

- 可以恢复数据库备份来回退升级。

- 可以在升级前或升级后执行自定义的脚本。

 

- 显示 alert log 和 DBUA log的路径。

- 可以把已存在的 listener 升级到最新的 18.x Home 下或者在 18.x 目标库 HOME 下创建一个新的 listener。

关于只读 Oracle Homes

从 Oracle Database 18c开始,您可以以只读模式配置 Oracle Home。  
在只读 Oracle 主目录中,所有配置数据和日志文件都位于只读 Oracle Home 目录之外。此功能允许您将只读 Oracle Home 目录用作可以跨多个服务器分发的软件映像。

升级路径/18.x 兼容性矩阵

DBUA 只能对一些支持的版本进行直接升级。

 

可以直接升级到 18.x 的版本:

源数据库 目标数据库
11.2.0.3 或者更高版本 18.x
12.1.0.x (12.1.0.1 - 12.1.0.2)

18.x

12.2.0.1

18.x

 

间接升级到 18.x:

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

 

需要及推荐在源库上完成的

 

- 在升级前确保所有 oracle 提供的组件和对象都是有效的。

- 在开始升级或者降级前,Oracle 推荐您先升级源数据库 HOME 和目标数据库 HOME 到最新的 Oracle bundle patch 或者 patch set update (BP 或者 PSU)。

- 确保在 sys 和 system schema 下没有重复存在的对象。对于 1) 和 2),参照:
      Doc Id 556610.1 - Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)
- dbupgdiag.sql 是可以在升级前或者升级后对数据库的状态进行诊断并提供用户友好的输出结果的一些 SQL 语句;它会创建一个名为 db_upg_diag_<sid>_<timestamp>.log 的输出文件

- 如果源库上安装了 APEX 那么建议在升级数据库前升级APEX

- 当前数据库的 Timezone 版本要小于等于目标 Oracle Home 的 Timezone 版本

- 确保升级前拥有一个可用的源数据库的备份。

- 禁用所有自定义的 before/after DDL 类型的触发器,完成升级后再启用它们。

- 在升级前检查数据库的升级/降级兼容性矩阵。

- 推荐在升级前启用 archive log 模式,这样 DBUA 在升级过程中可以创建/更新 archive log。

- 如果使用 DBUA 升级的是 RAC 数据库,那么必须保持 CLUSTER_DATABASE 设置成 true。

- 在升级前确保运行了 pre-upgrade 工具。

- 检查并且实施 preupgrade log 给出的建议。

- 在升级前原数据库上的物化视图应该被停掉

     Doc ID 1406586.1 - How to Handle Materialized Views When You Upgrade or Clone a Database

- 禁止掉客户的计划作业以及 cron job。

- 可以升级到 18.1 的 COMPATIBLE 参数最小需要是 “11.2.0”,确认数据库 COMPATIBLE 参数已被设置为 11.2.0 或者更高

 

 

推荐/需要在目标库上完成的 

- 先检查您的硬件平台/操作系统是否兼容 18.x 版本。

- 下载安装 Oracle 18c (18,x) 软件到一个新的 ORACLE_HOME 并确认没有编译错误。

- 如果有最新的 RU 的话,下载并安装它们。

- 确保设置 ORACLE_HOME, PATH, LD_LIBRARY_PATH, LIBPATH 等指向到 18.x 目标库 HOME。

- 查看文档 "Patches to apply before upgrading Oracle GI and DB to 18c (Doc ID 2414935.1)" 中给出的补丁建议

 

在 Windows 上需要对 Oracle Home 做的准备及前提条件

 

在 Microsoft Windows 平台上升级数据库之前,必须满足以下这些前提条件。基于安全的考虑,为不同的 Oracle Home 配置的不同的 Microsoft Windows 用户,不允许共享同一个 Oracle Base。

- 数据库升级对于源数据库和目标数据库的 ORACLE_HOME 使用相同的 Windows 用户是支持的。

- 数据库升级对于源数据库使用 Windows 自带账户是支持的。Oracle Database 12c 之前的版本 (release 11.2 或者之前的版本) 在 Windows 上只支持使用 Windows 自带的用户来作为 Oracle Home 用户。

- Oracle home 用户可能无法访问在它自己的 Oracle Base 和 Oracle home 之外的文件。如果出现这样的情况,那么在升级时选择不同的 Oracle Base,可能会出现 Oracle 数据库服务无法访问旧 Oracle Base 的情况。使用 DBUA 升级,需要确保 Oracle Home 用户可以访问它自己的 Oracle Base 和 Oracle Home 之外的文件。

 

 

 

 

 

升级前步骤

 

 

 

$Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar [FILE|TERMINAL] [TEXT|XML] [DIR output_dir]    

 


FILE|TERMINAL - 使用 FILE 选项把脚本输出定向到一个文件。使用 TERMINAL 选项把脚本输出打印到屏幕上。如果没有指定,那么默认是 FILE 选项。
TEXT - 使用这个选项来指定输出文件是 Text 格式的。使用 XML 选项则输出为 XML 格式。如果不指定,默认是 Text。
DIR - Log 会创建在指定的目录里。如果不指定那么会创建 log 到默认的路径:如果定义了 ORACLE_BASE 环境变量,那么日志创建在 $ORACLE_BASE/cfgtoollogs/<dbname>/preupgrade/ 否则会创建在$ORACLE_HOME/cfgtoollogs/db_name/preupgrade/.

 

比如,

源 Oracle Home : /u01/app/oracle/product/12.1.0.1/dbgome_1

目标 Oracle Home : /u01/app/oracle/product/18.0.0.0/dbhome_1

$ export ORACLE_SID=orcl
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0.1/dbhome_1

$ $ORACLE_HOME/jdk/bin/java -jar /u01/app/oracle/product/18.0.0.0/dbhome_1/rdbms/admin/preupgrade.jar FILE TEXT

Preupgrade 产生的文件:
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade.log
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade_fixups.sql
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql

 

检查 preupgrade.log 文件并且实施推荐。

 

 

最新的 preupgrade 工具可以从以下文档获得 :

How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1)

 

 

检查源库中失效的组件及对象:

 

set pagesize500  
set linesize 100  
select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name;

select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type from dba_objects where status='INVALID' order by owner,object_type;

select owner,object_type,count(*) from dba_objects where status='INVALID' group by owner,object_type order by owner,object_type ;

 

如果发现了任何无效组件或者对象,则执行下面的操作以使数据库中的无效对象变为有效:

运行utlrp.sql以编译数据库中的无效对象。 您可以多次执行utlrp.sql脚本以编译无效对象。

$ sqlplus "/ as sysdba"    
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql    

 

 

收集优化器统计信息来减少数据库停机时间

 

Oracle 强烈推荐升级前收集统计信息。Oracle 推荐使用 DBMS_STATS.GATHER_DICTIONARY_STATS 来收集统计信息,比如,执行下面的 SQL: 

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

 

确认升级前物化视图刷新都已经完成

  用下面的语句检查当前是否有物化视图正在刷新。在升级数据库前,我们需要确认所有的物化视图都已经完成了刷新。

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

 

How to Handle Materialized Views When You Upgrade or Clone a Database (Doc ID 1406586.1)

 

检查 TIMESTAMP WITH TIMEZONE 类型的数据类型

Oracle Database 12c release 2 (18.x) 自带的 time zone 文件版本是 26

情况1 源数据库的 Timezone 版本等于或者小于 26。

如果源数据库的 Timezone 版本小于 26,那么不需要打 DST 补丁到源数据库 Home 或者目标 12cR2 home。

情况2 源数据库的 Timezone 版本高于 26。

如果源数据库的 Timezone 版本高于 26,升级前必须打补丁把目标 12cR2 $ORACLE_HOME 升级到源库的 Timezone 版本一致。

 

 

确保没有数据文件需要介质恢复(media recovery)或处于备份的状态

 

执行下面的语句检查备份的状态:

SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';

确保没有文件需要介质恢复:

SQL> SELECT * FROM v$recover_file;

 

升级前清空回收站

 

 SQL> PURGE DBA_RECYCLEBIN;

DBUA 也可以清空回收站。

 

使用了 Oracle Label Security 和 Oracle Database Vault 的数据库

Audit Table 升级前准备

如果要升级使用了 Oracle Label Security (OLS) 和 Oracle Database Vault 的低于 12.1 版本的数据库,必须运行 OLS preprocess 脚本, olspreupgrade.sql,来处理 aud$ 表的内容。 它会把 AUD$ 从 SYSTEM 用户迁移到 SYS 用户下。



如果要升级的数据库低于12.1,并且使用了 Oracle Label Security (OLS) 和 Oracle Database Vault,那么在升级前运行 olspreupgrade.sql 是必须的。一旦数据库升级到了12.1,那么就不需要执行OLS preprocessing 步骤了。

 

升级前在 11.2 数据库上执行 OLS preprocess 脚本:

1.    从 18.1 的 Oracle Home 下拷贝 olspreupgrde.sql 脚本到源库的 Oracle Home 下。

        ORACLE_HOME/rdbms/admin/olspreupgrade.sql  
        ORACLE_HOME/rdbms/admin/emremove.sql  
        ORACLE_HOME/rdbms/admin/catnoamd.sql


2.    启动 SQL*Plus 并以 DVOWNER 登录到要升级的数据库。

3.    执行下面的SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;


4.    使用 SYS as SYSDBA 登陆数据库:

    CONNECT SYS AS SYSDBA


5.    执行 Data Vault preprocess 脚本:

    ORACLE_HOME/rdbms/admin/olspreupgrade.sql  
    ORACLE_HOME/rdbms/admin/emremove.sql  
    ORACLE_HOME/rdbms/admin/catnoamd.sql

    在预处理脚本运行时,您可以继续在数据库上运行应用程序。

6.    执行完毕后,以 DVOWNER 登陆数据库

7.    执行下面的SQL:

    SQL> REVOKE DV_PATCH_ADMIN from SYS;

对于使用了Database Vault的12.x数据库,赋予SYS以DV_PATCH_ADMIN的角色  

如果启用了Database Vault,那么也需要做对应的检查,检查步骤需要执行下面的SQL脚本 - olspreupgrade.sql, emremove.sql, catnoamd.sql

以 DVOWNER 登陆要升级的数据库

执行下面的SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;

 

 

备份 Oracle EM DB Control 配置及数据 (对于低于 12.1 版本的数据库)

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

备份数据的步骤:

     1. 安装新的数据库软件。
     2. 设置 ORACLE_HOME 到旧的数据库版本。
     3. 设置 ORACLE_SID 为要升级的数据库 SID。
     4. 设置 PATH, LD_LIBRARY_PATH 和 SHLIB_PATH 到旧的 ORACLE_HOME 相关的目录下。
     5. 切换目录到目标数据库软件。
     6. 执行 emdwgrd。

 

单实例数据库:

emdwgrd[sh|bat] -save -sid old_SID -path save_directory

 

Oracle Real Application Clusters (Oracle RAC) 数据库:


需要跨节点远程拷贝。定义一个环境变量 EM_REMCP 来指向远程拷贝的命令,比如: export EM_REMCP /usr/bin/scp

emdwgrd -save -cluster -sid old_SID -path save_directory

 

7. 提供要升级的数据库的 SYS 密码。

 

使用 emremove.sql 删除 DB control (对于低于 12.1 版本的数据库)

警告 :   
下面的步骤不能在升级 Enterprise Manager Cloud Control Repository 时操作,否则 EM Cloud Control Repository 数据库会不可用。

      

从 Oracle Database 12c 版本1 (12.1) 开始,作为升级的一部分,DB Control 会被删除。

停掉 DB Console:

emctl stop dbconsole

执行 emremove.sql 脚本。脚本存放在目标 18.x 的 OH/rdbms/admin/。

SQL>SET ECHO ON
SQL>SET SERVEROUTPUT ON
SQL>@emremove.sql >> 脚本放在新的 18.x ORACLE_HOME/rdbms/admin

在 emremove.sql 执行完毕后,必须从系统中手工删除 ORACLE_HOME/HOSTNAME_SID 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目录。

 

不再支持 OLAP Catalog (OLAP AMD) (对于低于 12.1 版本的数据)

从 Oracle Database 12c 开始,OLAP Catalog (OLAP AMD) 不再支持,并且作为升级的一部分会从数据库中删除。为了减少停机时间,也可以在升级前手工删除它。可以执行脚本 $ORACLE_HOME/olap/admin/catnoamd.sql 来删除它。请不要在 UPGRADE 模式下执行这个脚本。  

 

复制 Transparent Encryption Oracle 钱包

如果使用了带 Oracle 钱包的 Transparent Data Encryption (TDE),并且要使用 Database Upgrade Assistant (DBUA) 来升级数据库,那么拷贝 thesqlnet.ora 和 wallet 文件到新的 18.x Oracle home。

在升级前需要手工拷贝 sqlnet.ora 和 wallet 文件。
1. 以授权用户身份登录
2. 手工拷贝 sqlnet.ora,wallet 文件以及 ewallet.p12,到新的 Oracle home。
3. 以 mount 模式打开数据库 wallet。

例如:  
SQL> STARTUP MOUNT;  
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN;

 

检查用户使用了大小写敏感的密码的版本

以管理员账号登陆 SQL*Plus 并执行下面的语句
SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

如果存在 10g 版本的密码,建议参照 Oracle 文档来解决 10g 版本问题,否则,升级完成后用户会被锁。

 

 

关于密码大小写敏感

确保没有设置废弃的参数 SEC_CASE_SENSITIVE_LOGON 为 FALSE。

 

使用了 Oracle Warehouse Builder (OWB) 组件的数据库的升级前要求

11.2.0.3 之前版本的 OWB 无法和 Oracle Database 12c 兼容。安装 Oracle Database 18c 软件并不会安装 OWB 组件。之前版本的 OWB 组件在升级过程中并不会被升级。但是你仍然可以在 Oracle Database 18c 上使用 11.2.0.3 版本的OWB。

启动 DBUA

DBUA ( Step 1 of 9 ) 

我们需要选择要升级的数据库的 SID,在这个例子里是 orcl。

  使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 2 of 9 ) 

在下面的屏幕上,DBUA 会做很多检查。它会执行 preupgrade 脚本(preupgrade.jar) 并且返回警告/错误。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 3 of 9 ) 

一旦 pre-upgrade 警告被解决,下一个屏幕会显示各种选项,比如启用并行升级,在升级后的步骤里重新编译失效对象,升级 timezone,升级前收集统计信息,在升级中把用户表空间设置为只读。当然,您也可以指定在升级前后要执行的任何SQL脚本。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)  

 

DBUA ( Step 4 of 9 ) 

在选择选项之后,下个屏幕会显示一些 Recovery 选项,比如在哪里创建 Guaranteed Restore Point,或者做一个 RMAN 备份或者已经在 DBUA 外创建了备份,那么"I have my own backup and restore stratege "选项可以被选中。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 5 of 9 ) 

在这个屏幕里,可以创建一个新的监听或者升级当前的监听到 18c。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 6 of 9 ) 

这个屏幕来配置 EM express 或者注册这个数据库到 EM Cloud control。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 7 of 9 ) 

这是在真正的升级开始前显示的汇总页面,点击 Finish 来开始真正的升级。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 8 of 9 ) 

DBUA 开始升级 orcl 数据库,它会完成升级前步骤,升级以及升级后步骤。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA 会升级数据库的组件比如 Oracle server, XML等。

 

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

DBUA ( Step 9 of 9 ) 

最后的屏幕会显示升级的结果。

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

它会显示日志的路径以及升级的各个步骤花费的时间。

 

使用 DBUA 升级数据库到 Database 18c (18.x) 的完整核对清单 (文档 ID 2504933.1)

 

升级后步骤

执行 dbupgdiag.sql 脚本来验证对象以及组件的状态 。 如果存在失效对象,那么运行 utlrp.sql 来编译所有的失效对象:

sql> connect / as sysdba

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

 

已知问题


上一篇:python-已安装PySide但无法导入:“没有名为PySide的模块”


下一篇:【静默】在RHEL 6.5上静默安装Oracle 18c