暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文] 使用AutoUpgrade将非CDB升级到Oracle Database 21c

原创 Mike.Dietrich 2021-08-25
1275

昨天我写了关于在 Linux 上安装 Oracle Database 21c 的文章。但现在是使用 AutoUpgrade 升级到 Oracle Database 21c 的时候了。

自动升级

您可能已经从我们和其他同事那里听说过,但我们不能经常重复:只有一种推荐的工具可以升级您的数据库——这就是 AutoUpgrade。

在我的 21c 家中,我首先检查已部署的 AutoUpgrade 版本:


[CDB3] oracle@hol:/u01/app/oracle/product/21/rdbms/admin
$ java -jar autoupgrade.jar -version
build.hash 57ab246
build.version 21.1.3
build.date 2021/04/21 13:32:13
build.max_target_version 21
build.supported_target_versions 12.2,18,19,21
build.type production

现在请与MOS 上可用的最新版本进行比较Note: 2485457.1 – AutoUpgrade Tool

我写这篇博文时的最新版本是 2021 年 7 月 21 日 - 比 2021 年 4 月 21 日的上述版本更新。因此,我将其交换。幸运的是,这非常简单:下载并覆盖 21c Oracle Home 中的现有版本:


$ cp /media/sf_TEMP/autoupgradeJUL21.jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar

[CDB3] oracle@hol:/u01/app/oracle/product/21/rdbms/admin
$ java -jar autoupgrade.jar -version
build.hash 680914c
build.version 21.2.210721
build.date 2021/07/21 11:14:54
build.max_target_version 21
build.supported_target_versions 12.2,18,19,21
build.type production

这看起来不错。

大变化——你需要一个 CDB

过去,您只需将数据库从一个版本升级到另一个版本。但现在事情发生了变化。使用仅限 CDB 的架构,您一开始无法再升级。在 Oracle 19c 之前,我们一直推荐以下方法:

  • 在 Oracle 19c 之前将非 CDB 升级和迁移到多租户
    • 使用 AutoUpgrade 将非 CDB 升级到 Oracle 19c
    • 使用 AutoUpgrade 插件并将升级的非 CDB 转换为预先创建的 CDB

这是更安全的方法,因为第一步有经过验证的回退选项,升级:保证还原点(自动升级中的标准)和使用降级脚本进行降级。

但是当您迁移到 Oracle 21c 时,这种方法不再起作用,因为在 21c 中您不能再拥有非 CDB。现在这是自用于非 CDB 的 Oracle 21c 以来的方式:

  • 自 Oracle 21c 起将非 CDB 升级和迁移到多租户
    • 使用 AutoUpgrade 将非 CDB 插入预先创建的 CDB
    • 使用 AutoUpgrade 升级和转换插入的非 CDB

当然,很明显你需要一个适当的 fallback但我稍后会在另一篇博文中回到这一点。

所以首先,我们需要一个 CDB。

是的,让我重复一遍。您首先需要创建一个 CDB。

并且请不要使用种子数据库——使用模板并创建适合您需求的 CDB。事先检查非 CDB 中的 DBA_REGISTRY,并使用您真正需要的组件创建 CDB。

这是在 DBCA 中进入“ Options选项的路径

选择“高级配置”:

然后——这很重要——选择“自定义数据库”:

否则你不会看到这个屏幕:

我以这种方式将我的 CDB 创建为CDB3

同样,我认为声明 AutoUpgrade 不会创建此 CDB 很重要。您需要创建它。一旦 CDB 启动并运行,我就可以开始升级到 Oracle 21c。

让我们升级——分析永远是第一位!

在这种情况下,如果出现故障,我将无法恢复到 GRP,我宁愿创建非 CDB 的副本,而不是将其直接提升到 CDB3。

这是我用于 AutoUpgrade 的配置文件:


global.autoupg_log_dir=/home/oracle/logs
upg1.source_home=/u01/app/oracle/product/12.2.0.1
upg1.target_home=/u01/app/oracle/product/21
upg1.sid=DB12
upg1.target_cdb=CDB3
upg1.target_pdb_copy_option=file_name_convert=('/u02/oradata/DB12', '/u02/oradata/CDB3/db12')
upg1.log_dir=/home/oracle/logs
upg1.restoration=no
upg1.catctl_options=-t

起初,我开始分析运行。


$ java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config DB12.cfg -mode analyze
AutoUpgrade 21.2.210721 launched with default options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be analyzed
Type 'help' to list console commands
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be analyzed
Type 'help' to list console commands
upg> Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs pending                   [0]

Please check the summary report at: 
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.log 


这看起来不错。

让我检查status.html报告。

没有错误,没有预检警告——这看起来不错。

让我们用 -mode deploy 升级

由于分析运行顺利,部署应该不会造成麻烦。

但事实上确实如此。

如果您的数据库有 ORDIM (Oracle Multimedia) 但没有 SDO (Spatial Data Option),升级将会失败,因为 LCTR (Locator),它在 Oracle 19c 之前不是一个独立的组件。请在我的下一篇博文中阅读更多内容,包括解决方法:

我现在将使用解决方法并从那里取得进展。


$ java -jar /u01/app/oracle/product/21/rdbms/admin/autoupgrade.jar -config DB12.cfg -mode deploy
AutoUpgrade 21.2.210721 launched with default options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be processed
Type 'help' to list console commands
upg> lsj
+----+-------+---------+---------+-------+--------------+--------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME| UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+----------------+
| 100|   DB12|DBUPGRADE|EXECUTING|RUNNING|21/08/24 17:47|17:54:43|10%Upgraded DB12|
+----+-------+---------+---------+-------+--------------+--------+----------------+
Total jobs 1

upg> lsj
+----+-------+-------------+---------+-------+--------------+--------+------------------+
|Job#|DB_NAME|        STAGE|OPERATION| STATUS|    START_TIME| UPDATED|           MESSAGE|
+----+-------+-------------+---------+-------+--------------+--------+------------------+
| 100|   DB12|NONCDBTOPDBXY|EXECUTING|RUNNING|21/08/24 17:47|18:06:55|noncdb_to_pdb - 0%|
+----+-------+-------------+---------+-------+--------------+--------+------------------+
Total jobs 1

upg> lsj
+----+-------+-------------+---------+-------+--------------+--------+-------------------+
|Job#|DB_NAME|        STAGE|OPERATION| STATUS|    START_TIME| UPDATED|            MESSAGE|
+----+-------+-------------+---------+-------+--------------+--------+-------------------+
| 100|   DB12|NONCDBTOPDBXY|EXECUTING|RUNNING|21/08/24 17:47|18:08:25|noncdb_to_pdb - 64%|
+----+-------+-------------+---------+-------+--------------+--------+-------------------+
Total jobs 1

upg> Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs pending                   [0]



Please check the summary report at: 
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.log
[CDB3] oracle@hol:~/scripts


最后,我们走了。


$ s

SQL*Plus: Release 21.0.0.0.0 - Production on Tue Aug 24 18:15:57 2021
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 DB12 			  READ WRITE NO


概括

让我为您快速总结一下最重要的主题。

  1. 您升级到的首选版本仍然是 Oracle Database 19c
  2. Oracle Database 21c 是一个创新版本,具有一些不错的特性,但支持时间很短
  3. Oracle 21c 仅支持 CDB如果您打算迁移到 Oracle 21c 并且您的数据库是非 CDB,则首先需要在 21c 中创建一个 CDB
  4. 升级到21C唯一推荐的方式是自动升级-连姆厅同意
  5. 如果您的源数据库中ORDIM 而没有 SDO,那么您必须遵循这篇博文以避免出现可怕的陷阱

因此,请将此博客文章视为一个很好的练习和分步说明。但是您将升级到的版本很可能是 Oracle Database 19c,因为这是长期支持版本


文章来源:https://mikedietrichde.com/2021/08/24/upgrading-a-non-cdb-to-oracle-database-21c-with-autoupgrade/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论