适用于:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本Oracle Database - Standard Edition - 版本 12.1.0.1 和更高版本
本文档所含信息适用于所有平台
用途
介绍 Oracle Database 12c 版本 1 (12.1) 的升级方面新功能
详细信息
DBUA 界面在版本 12cR1 (12.1.0.1) 中有了重大改变。
DBUA 现在采用面板设计(与 OUI 相同),并将升级过程划分为以下几个阶段:
- 升级前步骤
- 数据库升级步骤
- 升级后步骤
使用新的 Pre-Upgrade Information Tool 增强了升级自动化功能
- Oracle 提供了新的 Pre-Upgrade Information Tool/脚本 preupgrd.sql。
- Pre-Upgrade Information Tool 包括 preupgrd.sql 和 utluppkg.sql。
- 这些脚本必须从新的 12c $ORACLE_HOME/rdbms/admin 复制到需要被升级的 $ORACLE_HOME/rdbms/admin 目录。
- 必须从要升级的数据库环境运行 preupgrd.sql。
-
该工具生成修复脚本和日志文件,它们位于 $ORACLE_HOME/cfgtoollogs/$ORACLE_SID/preupgrade。
- 生成的 preupgrade_fixups.sql 脚本是为了解决源数据库中可以使用 SQL*Plus 修复的问题。
- 生成的 postupgrade_fixups.sql 脚本是为了解决可在数据库升级之后修复的问题。
- 生成的日志文件 preupgrade.log,其中包含 Pre-Upgrade Information Tool 的输出。
- Pre-Upgrade Information Tool 会显示建议,但并不自动执行建议以确保您可以完全控制修复脚本的运行方式和时间。
数据库升级的并行处理
- 并行升级是 Oracle Database 12cR1 中引入的新功能,可以并行运行升级脚本和进程。
- 并行升级旨在充分利用 CPU 能力,从而减少升级所需时间。
-
并行运行会将各 SQL 文件分解为单独(独立)组件。
如果一个 SQL 文件是独立的,那么它就可以与另一个 SQL 文件一起并行运行。
这种情况并不适用于所有 SQL 脚本,因为一些 SQL 脚本依赖于其他脚本并会调用其他实用程序。
在这种情况下,Oracle 确保调用下一个脚本或进行引用之前满足这些相关性。 -
将升级过程分为不同阶段的目的是为了并行升级。
阶段就是 Oracle 升级如何并行加载 sql 文件。
必须先完成一个阶段,然后才能进入下一个阶段。 -
默认情况下,升级以并行度 4 运行。
即使在单 CPU 下将该数字设置为 4 也观察到了性能提升。
升级过程可以获取更多 CPU 周期来完成工作,即使只有一个处理器/CPU 也是如此。
新升级实用程序 catctl.pl
- Oracle Database 12cR1 中引入了新的升级实用程序 (catctl.pl)。
- 它并行加载数据字典和组件,从而减少了整体升级时间。
- 它使得不需要按照特定顺序升级的组件可以同时升级,即并行升级。
-
下面是对 catctl.pl 脚本可用的一些参数:
- -n : 指定用于并行操作的进程数量。默认值为 4。最大值为 8。对于串行模式,请将其设置为 0。
- -u : 用户名(提示输入口令)
- -d : 包含要运行的文件的目录
- -t : 用于阶段日志记录的表名称
- -l : 用于存放 spool 日志文件的目录
- -s : 用于初始化会话的 SQL 脚本
- -e : 在运行脚本时关闭命令回显
- -p : 重新启动阶段(重新运行时跳过成功的阶段)
- -i : 创建 spool 日志文件时使用的标识符
- -y : 仅显示阶段
要在 Linux 上运行 catctl.pl,请执行以下操作:
: cd $ORACLE_HOME/rdbms/admin
: $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
要在 Windows 上运行 catctl.pl,请执行以下操作:
: cd %ORACLE_HOME%\rdbms\admin
: %ORACLE_HOME%\perl\bin\perl catctl.pl catupgrd.sql
: cd $ORACLE_HOME/rdbms/admin
: $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
要在 Windows 上运行 catctl.pl,请执行以下操作:
: cd %ORACLE_HOME%\rdbms\admin
: %ORACLE_HOME%\perl\bin\perl catctl.pl catupgrd.sql
示例:并行度为 6 (n=6)
: cd $ORACLE_HOME/rdbms/admin_
: $ORACLE_HOME/perl/bin/perl catctl.pl -n 6 -l $ORACLE_HOME/diagnostics -t phase_tab -i V112 catupgrd.sql
: cd $ORACLE_HOME/rdbms/admin_
: $ORACLE_HOME/perl/bin/perl catctl.pl -n 6 -l $ORACLE_HOME/diagnostics -t phase_tab -i V112 catupgrd.sql
Oracle XML DB 现在是安装的必需组件
-
Oracle XML Database (Oracle XML DB) 现在是 Oracle 数据库的必需组件。
如果在升级期间发现未安装 Oracle XML DB,则 Oracle XML DB 将自动被加载到 SYSAUX 表空间中。
升级后的 Oracle数据库中将包含 Oracle XML DB。
升级日志文件
- 如果设置了环境变量 ORACLE_BASE,则 DIAGNOSTIC_DEST 默认为由 ORACLE_BASE 指定的目录,并且生成的脚本和日志文件将在以下位置中创建:
$ORACLE_BASE/cfgtoollogs/tool_name/SID/upgrade
-
如果未定义 ORACLE_BASE,则生成的脚本和日志文件将在以下位置中创建:
$ORACLE_HOME/cfgtoollogs/tool_name/SID/upgrade
其中 n 表示此系统上针对特定 ORACLE_SID 已执行升级的编号。
-
每个并行线程有一个日志文件。根据运行 catctl.pl 和 catupgrd.sql 脚本时选择的并行度,catctl.pl 脚本将创建多个日志文件。
例如:
catupgrd0.log
catupgrd1.log
catupgrd2.log
catupgrd3.log
- 默认日志位置是当前工作目录。
- 使用 catcctl.pl 的 –l 参数指定日志位置。
Oracle EM Express
? EM DB Control 在 12c 中由 Oracle EM Express 取代。
- 因此不再需要资料档案库。
- 如果没有提前删除 EM 资料档案库,则将在 catuppst.sql 升级后阶段中自动删除。
或者
- 用如下命令删除 Enterprise Manager Database Control 资料档案库。
$emctl stop dbcontrol
SQL> @ ?/rdbms/admin/emremove.sql
参考
NOTE:1520299.1 - Master Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC)NOTE:1493645.1 - Oracle Database 12c Release 1 (12.1) DBUA : Understanding New Changes with All New 12.1 DBUA
NOTE:1503653.1 - Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1)