签到成功

知道了

CNDBA社区CNDBA社区

Oracle 11g 升级到19c 操作示例 -- AutoUpgrade 工具(CDB)

2025-06-30 21:07 9 0 原创 Oracle 19c
作者: dave

之前的博客我们了解了通过autoupgrade工具将11g 升级得到19c non-cdb的过程,如下:

Oracle 11g 升级到19c 操作示例 — AutoUpgrade 工具(NON-CDB)
https://www.cndba.cn/dave/article/131640

本篇我们来补充一下通过autoupgrade工具将11g 升级得到19c cdb的过程,这里相关重复内容直接省略。
使用non-cdb的优点是业务侧是透明的,迁移前后实例名是一样的,如果是CDB架构,需要确保pdb名称和之前是一样,否则业务连接就会异常。

1 兼容性检查

因为只有特定的版本才能升级到19c,所以在升级之前,需要先检查下当前兼容性参数。如果源端版本是 11.2.0.4,但 compatible 参数是设置为10.0.0,就会导致失败,需要先将compatible参数设置为至少支持升级的最小值(11.2.0),然后再升级。

SQL> set lines 160
SQL> show parameter compatible;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
compatible                           string                 11.2.0.4.0
SQL>

如果不满足,需要先修改参数,更改参数后,重启动数据库生效:http://www.cndba.cn/dave/article/131666

SQL> alter system set compatible=’11.2.0’ scope=spfile;

2 备份数据库

升级是高危动作,需要先使用RMAN 备份,具体步骤这里忽略。

3 安装19c 软件

Oracle有2种升级方法:In-Place和Out-of-Place。这种大版本升级,一般推荐使用out-of-place,所以需要先安装一套19c的软件,不创建实例。 http://www.cndba.cn/dave/article/131666

图形化部署可以参考如下博客:

Linux 7.4 平台下 Oracle 19.3 单实例安装手册
https://www.cndba.cn/dave/article/3427

我们这里用静默方式快速部署一套,前期准备工作我这里忽略,具体可以参考上面的链接。http://www.cndba.cn/dave/article/131666http://www.cndba.cn/dave/article/131666

注意:

  1. 升级为PDB之前,必须先创建好CDB,autoupgrade不会创建CDB,可以直接使用dbca命令创建。
  2. CDB的字符集尽可能和PDB的保持一致,或者大一些。
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>

4 升级前信息检查

4.1 替换AutoUpgrade 工具版本

Oracle 19c 自带autoupgrad工具,在$ORACLE_HOME/rdbms/admin目录下,我们用官网的最新版本替代一下。

[dave@cndba.cn admin]$ ll autoupgrade*
-rw-r--r--. 1 oracle oinstall 6530319 May 26 12:12 autoupgrade_25.3.jar
-rw-r--r--. 1 oracle oinstall 3360892 Feb  9  2019 autoupgrade.jar.bak
[dave@cndba.cn admin]$ mv autoupgrade_25.3.jar autoupgrade.jar
[dave@cndba.cn admin]$ ll autoupgrade*
-rw-r--r--. 1 oracle oinstall 6530319 May 26 12:12 autoupgrade.jar
-rw-r--r--. 1 oracle oinstall 3360892 Feb  9  2019 autoupgrade.jar.bak
[dave@cndba.cn admin]$ pwd
/u02/app/oracle/product/19.0.0/dbhome_1/rdbms/admin

4.2 创建autoupgrade配置文件

[dave@cndba.cn ~]$ cd /u01/software/
[dave@cndba.cn software]$ java -jar /u02/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar -create_sample_file config
Created sample configuration file /u01/software/sample_config.cfg

sample_config.cfg 文件中会有示例的配置,可以参考。 http://www.cndba.cn/dave/article/131666

我们这里直接清空,使用如下配置:

http://www.cndba.cn/dave/article/131666

[dave@cndba.cn software]$ echo '' >  sample_config.cfg 
[dave@cndba.cn software]$ cat sample_config.cfg 
global.autoupg_log_dir=/tmp/autoupgrade_log
global.dictionary_stats_after=yes
global.dictionary_stats_before=yes
global.fixed_stats_before=yes
global.restoration=yes
global.raise_compatible=yes
global.drop_grp_after_upgrade=yes
upg1.dbname=orcl
upg1.sid=orcl
upg1.start_time=NOW
upg1.source_home=/u01/app/oracle/product/11.2.0/db_1
upg1.target_home=/u02/app/oracle/product/19.0.0/dbhome_1
upg1.target_cdb=cdb19c
#upg1.target_pdb_name=orcl
upg1.target_pdb_name=dave
upg1.target_pdb_copy_option=file_name_convert=('orcl','orcl')
upg1.log_dir=/tmp/autoupgrade_log/orcl
upg1.upgrade_node=ora11g            
dbold.run_utlrp=yes
dbold.timezone_upg=yes
upg1.target_version=19
upg1.remove_underscore_parameters=yes
upg1.source_tns_admin_dir=/u01/app/oracle/product/11.2.0/db_1/network/admin
upg1.target_tns_admin_dir=/u02/app/oracle/product/19.0.0/dbhome_1/network/admin

注意: 这里建议upg1.sid 和 upg1.target_pdb_name 2个参数配置成一样的,如果设置成不一样,创建的pdb名称也会不一样,业务侧就需要修改数据源中的实例名。

4.3 analyze 分析

通过分析用来判断条件是否满足升级,如果不满足,也会给出整改建议。

[dave@cndba.cn software]$ java -jar /u02/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar -config /u01/software/sample_config.cfg -mode analyze
AutoUpgrade 25.3.250509 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be analyzed
Type 'help' to list console commands
upg> 
注意这里可能会等很久:
upg> -------------------------------------------------
job 101 has not shown progress in last 25 minutes
database [orcl]
Stage    [PRECHECKS]
Operation[EXECUTING]
Status   [RUNNING]
Info     [Loading database information]
[Review log files for further information]
-----------------------------------------------
Logs: /tmp/autoupgrade_log/orcl/orcl/101
-----------------------------------------------Job 101 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]

Please check the summary report at:
/tmp/autoupgrade_log/cfgtoollogs/upgrade/auto/status/status.html
/tmp/autoupgrade_log/cfgtoollogs/upgrade/auto/status/status.log
[dave@cndba.cn software]$

看到这里才是最终的完成。

4.4 查看日志并修复

Logs: /tmp/autoupgrade_log/orcl/orcl/101

[root@ora11g prechecks]# pwd
/tmp/autoupgrade_log/orcl/orcl/101/prechecks
[root@ora11g prechecks]# ll
total 472
-rw-r-----. 1 oracle oinstall   5816 Jun 25 19:10 orcl_checklist.cfg
-rw-r-----. 1 oracle oinstall  21417 Jun 25 19:10 orcl_checklist.json
-rw-r-----. 1 oracle oinstall  20409 Jun 25 19:10 orcl_checklist.xml
-rw-r-----. 1 oracle oinstall  44071 Jun 25 19:10 orcl_preupgrade.html
-rw-r-----. 1 oracle oinstall  21584 Jun 25 19:10 orcl_preupgrade.log
-rw-r-----. 1 oracle oinstall 315728 Jun 25 19:10 prechecks_orcl.log
-rw-r-----. 1 oracle oinstall  39982 Jun 25 19:10 upgrade.xml
[root@ora11g prechecks]#

可以查看orcl_preupgrade.log 或者orcl_preupgrade.html。

这里的建议有2种: REQUIRED ACTIONS 和 RECOMMENDED ACTIONS。 其中RECOMMENDED ACTIONS 基本都是能够AUTOFIXUP的,所以我们这里只需要处理REQUIRED ACTIONS。

升级前源库执行修复脚本:

[dave@cndba.cn software]$ java -jar /u02/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar -config /u01/software/sample_config.cfg -mode fixups

5 升级数据库

5.1 deploy升级数据库

[dave@cndba.cn ~]$ java -jar /u02/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar -config /u01/software/sample_config.cfg -mode deploy
AutoUpgrade 25.3.250509 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be processed
Type 'help' to list console commands
upg>

5.2 网页监控升级进度

在autoupgrade的命令行中可以查看升级的进度,也可以通过web 页面查看,启动server:http://www.cndba.cn/dave/article/131666

[dave@cndba.cn ~]$ cd /tmp/autoupgrade_log/cfgtoollogs/upgrade/auto
[dave@cndba.cn auto]$ python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...

然后通过页面访问:

http://192.168.1.150:8000/state.html

5.3 查看升级日志

autoupgrade会提示日志的保存路径:
Logs: /tmp/autoupgrade_log/orcl/orcl/102http://www.cndba.cn/dave/article/131666

http://www.cndba.cn/dave/article/131666

[dave@cndba.cn 110]$ pwd
/tmp/autoupgrade_log/orcl/orcl/110
[dave@cndba.cn 110]$ ll
total 932
-rw-r-----. 1 oracle oinstall 939169 Jun 30 16:05 autoupgrade_20250630.log
-rw-r-----. 1 oracle oinstall   6869 Jun 30 16:05 autoupgrade_20250630_user.log
-rw-r-----. 1 oracle oinstall      0 Jun 30 15:06 autoupgrade_err.log
drwxr-x---. 2 oracle oinstall   4096 Jun 30 15:44 dbupgrade
drwxr-x---. 2 oracle oinstall     49 Jun 30 15:07 drain
drwxr-x---. 2 oracle oinstall    150 Jun 30 16:05 noncdbtopdb
drwxr-x---. 2 oracle oinstall    188 Jun 30 15:45 postchecks
drwxr-x---. 3 oracle oinstall    167 Jun 30 15:52 postfixups
drwxr-x---. 2 oracle oinstall    191 Jun 30 15:54 postupgrade
drwxr-x---. 2 oracle oinstall    185 Jun 30 15:06 prechecks
drwxr-x---. 2 oracle oinstall    134 Jun 30 15:07 prefixups
drwxr-x---. 2 oracle oinstall     28 Jun 30 15:06 preupgrade
drwxr-x---. 2 oracle oinstall     28 Jun 30 16:05 sysupdates
[dave@cndba.cn 110]$

6 升级后工作

6.1 查看PDB

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DAVE                           READ WRITE NO
SQL> 
SQL> show con_name

CON_NAME
------------------------------
DAVE
SQL> 
SQL> select name,pdb from v$services order by 1;

NAME                           PDB
------------------------------ ------------------------------
SYS$BACKGROUND                 CDB$ROOT
SYS$USERS                      CDB$ROOT
cdb19c                         CDB$ROOT
cdb19cXDB                      CDB$ROOT
dave                           DAVE

可以看到pdb的名称是我们配置文件中指定的dave,所以生产迁移建议和旧环境的sid保持一致。

SQL> col name for a60
SQL> select name from v$datafile;

NAME
------------------------------------------------------------
/u01/app/oracle/oradata/dave/system01.dbf
/u01/app/oracle/oradata/dave/sysaux01.dbf
/u01/app/oracle/oradata/dave/undotbs01.dbf
/u01/app/oracle/oradata/dave/users01.dbf
/u01/app/oracle/oradata/dave/example01.dbf
/u01/app/oracle/oradata/dave/dave01.dbf
/u01/app/oracle/oradata/dave/dave02.dbf

7 rows selected.

[dave@cndba.cn admin]$ sqlplus cndba/cndba@DAVE

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jun 30 19:47:39 2025
Version 19.3.0.0.0

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

ERROR:
ORA-28002: the password will expire within 7 days



Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show con_name

CON_NAME
------------------------------
DAVE
SQL>

如果连接pdb 报错可以参考如下博客:

Oracle 19c 连接PDB ORA-01034 错误说明
https://www.cndba.cn/dave/article/131665

6.2 确认 COMPATIBLE 参数

因为我们在配置了global.raise_compatible=yes,所以这里会自动帮我修改:

SQL> show parameter compatible;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
compatible                           string                 19.0.0
noncdb_compatible                    boolean                FALSE
SQL>

6.3 确认监听文件

因为我们在配置了upg1.target_tns_admin_dir参数,所以相关的监听和tns 也会自动创建。http://www.cndba.cn/dave/article/131666

[dave@cndba.cn admin]$ pwd
/u02/app/oracle/product/19.0.0/dbhome_1/network/admin
[dave@cndba.cn admin]$ ll
total 16
-rw-r-----. 1 oracle oinstall  586 Jun 30 15:52 listener.ora
drwxr-xr-x. 2 oracle oinstall   64 Apr 17  2019 samples
-rw-r--r--. 1 oracle oinstall 1536 Feb 14  2018 shrept.lst
-rw-r-----. 1 oracle oinstall  266 Jun 30 15:52 sqlnet.ora
-rw-r-----. 1 oracle oinstall  615 Jun 30 15:52 tnsnames.ora
[dave@cndba.cn admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u02/app/oracle/product/19.0.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

CDB19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ora11g)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb19c)
    )
  )

LISTENER_CDB19C =
  (ADDRESS = (PROTOCOL = TCP)(HOST = ora11g)(PORT = 1522))

# start-delta orcl
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ora11g)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
# end-delta orcl
[dave@cndba.cn admin]$

6.4 删除源库相关文件

[dave@cndba.cn db_1]$ pwd
/u01/app/oracle/product/11.2.0/db_1
[dave@cndba.cn db_1]$ rm -rf /u01/app/oracle/product/11.2.0/db_1

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2273
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8147800次
  • 积分:4395
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ