ORACLE19c从19.3打补丁升级到19.22以及回退

本文章的思路来源于官方文档:Oracle® 数据库补丁35943157 — 数据库版本更新 19.22.0.0.240116,有错误的地方欢迎指正!
1.环境

        系统:RedHat 7.9

        版本:单节点 19c 19.3.0

2.OPATCH配置

        查阅19.22补丁的Oracle® 数据库补丁35943157 — 数据库版本更新 19.22.0.0.240116可以知道,opatch的版本是需要12.2.0.1.40及以上的,所以这个一定要注意:

        

        1)解压Opatch压缩包到$ORACLE_HOME

        我将补丁包等都放在了/soft目录下

        静默解压

su - root
su - oracle -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db"

        然后我们切换到oracle用户执行命令查看是否成功:

su - oracle
opatch version

        这里OPATCH就OK了

3.解压19.22的补丁

        这里也是将19c 19.22补丁解压在了/soft目录下

su - oracle -c "unzip -q /soft/p35943157_190000_Linux-x86-64.zip -d /soft"

        

4.打补丁之前的准备

        在进行补丁安装之前我们需要关闭数据库实例以及监听:

        1)关闭数据库
su - oracle

sas

shutdown immediate

exit

       LOG

[root@p19c soft]# su - oracle
上一次登录:四 3月 21 19:24:29 CST 2024pts/0 上
[oracle@p19c:/home/oracle]$ sas

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 21 19:25:53 2024
Version 19.3.0.0.0

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


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

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
         2)关闭监听
lsnrctl stop
lsnrctl status

        LOG

[oracle@p19c:/home/oracle]$ lsnrctl stop

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2024 19:31:42

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
[oracle@p19c:/home/oracle]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2024 19:31:47

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
        3)预检查
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
[oracle@p19c:/soft/35943157]$ pwd
/soft/35943157
[oracle@p19c:/soft/35943157]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle 临时补丁程序安装程序版本 12.2.0.1.41
版权所有 (c) 2024, Oracle Corporation。保留所有权利。

PREREQ session

Oracle 主目录       :/u01/app/oracle/product/19.3.0/db
主产品清单:/u01/app/oraInventory
   来自           :/u01/app/oracle/product/19.3.0/db/oraInst.loc
OPatch 版本    :12.2.0.1.41
OUI 版本       :12.2.0.7.0
日志文件位置:/u01/app/oracle/product/19.3.0/db/cfgtoollogs/opatch/opatch2024-03-21_19-45-21下午_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

        提示OPatch succeeded!至此就OK了。

5.开始打补丁
cd /soft/35943157   #切换目录

opatch apply  #开始打补丁

        LOG

Oracle 临时补丁程序安装程序版本 12.2.0.1.41
版权所有 (c) 2024, Oracle Corporation。保留所有权利。


Oracle 主目录       :/u01/app/oracle/product/19.3.0/db
主产品清单:/u01/app/oraInventory
   来自           :/u01/app/oracle/product/19.3.0/db/oraInst.loc
OPatch 版本    :12.2.0.1.41
OUI 版本       :12.2.0.7.0
日志文件位置:/u01/app/oracle/product/19.3.0/db/cfgtoollogs/opatch/opatch2024-03-21_19-47-19下午_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   35943157

是否继续? [y|n]
y
User Responded with: Y
All checks passed.

请关闭本地系统上在此 ORACLE_HOME 之外运行的 Oracle 实例。
(Oracle 主目录 = '/u01/app/oracle/product/19.3.0/db')


本地系统是否已准备打补丁? [y|n]
y
User Responded with: Y
Backing up files...
正在将临时补丁程序 '35943157' 应用于 OH '/u01/app/oracle/product/19.3.0/db'
ApplySession: Oracle 主目录中不存在可选组件 [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.crypto.rsf, 19.0.0.0.0 ] , [ oracle.pg4mq, 19.0.0.0.0 ] , [ oracle.precomp.companion, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.options.olap.api, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.sdo.companion, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.pg4appc, 19.0.0.0.0 ] , [ oracle.jdk, 1.8.0.191.0 ] , 或找到更高版本。

正在为组件 oracle.rdbms, 19.0.0.0.0 打补丁...

正在为组件 oracle.rdbms.util, 19.0.0.0.0 打补丁...

正在为组件 oracle.rdbms.rsf, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.acf, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.deconfig, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.server, 19.0.0.0.0 打补丁...

正在为组件 oracle.blaslapack, 19.0.0.0.0 打补丁...

.......

正在为组件 oracle.precomp.common, 19.0.0.0.0 打补丁...

正在为组件 oracle.jdk, 1.8.0.201.0 打补丁...
Patch 35943157 successfully applied.
Sub-set patch [29517242] has become inactive due to the application of a super-set patch [35943157].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/19.3.0/db/cfgtoollogs/opatch/opatch2024-03-21_19-47-19下午_1.log

OPatch succeeded.
6.检查补丁的信息
opatch lspatches

        LOG:因为我们是单例的,OCW是集群管理的,所以在这篇文章就不做功课了

[oracle@p19c:/soft/35943157]$ opatch lspatches
35943157;Database Release Update : 19.22.0.0.240116 (35943157)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.
7.启动数据库

        1)启动监听:

lsnrctl start
lsnrctl status
[oracle@p19c:/soft/35943157]$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2024 20:07:47

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/19.3.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/p19c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=p19c)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                21-MAR-2024 20:07:47
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/p19c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=p19c)(PORT=1521)))
The listener supports no services
The command completed successfully

         2)启动数据库:

su - oracle
sas
startup

可以看到我们的数据库版本已经由原来的19.3到现在的19.22了:

[oracle@p19c:/soft/35943157]$ sas

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 21 20:07:56 2024
Version 19.22.0.0.0

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4194300776 bytes
Fixed Size                  9188200 bytes
Variable Size             822083584 bytes
Database Buffers         3355443200 bytes
Redo Buffers                7585792 bytes
Database mounted.
Database opened.
SQL>
8.查看状态
#查看数据库进程
ps -ef|grep ora
[oracle@p19c:/soft/35943157]$ ps -ef|grep ora
root       5336   3178  0 19:25 pts/0    00:00:00 su - oracle
oracle     5337   5336  0 19:25 pts/0    00:00:00 -bash
oracle    10930      1  0 20:07 ?        00:00:00 /u01/app/oracle/product/19.3.0/db/bin/tnslsnr LISTENER -inherit
oracle    10956      1  0 20:08 ?        00:00:00 ora_pmon_p19c
oracle    10960      1  0 20:08 ?        00:00:00 ora_clmn_p19c
oracle    10964      1  0 20:08 ?        00:00:00 ora_psp0_p19c
oracle    10969      1  2 20:08 ?        00:00:04 ora_vktm_p19c
oracle    10975      1  0 20:08 ?        00:00:00 ora_gen0_p19c
oracle    10979      1  0 20:08 ?        00:00:00 ora_mman_p19c
oracle    10985      1  0 20:08 ?        00:00:00 ora_gen1_p19c
oracle    10988      1  0 20:08 ?        00:00:00 ora_diag_p19c
oracle    10990      1  0 20:08 ?        00:00:00 ora_ofsd_p19c
oracle    10993      1  0 20:08 ?        00:00:00 ora_dbrm_p19c
oracle    10997      1  0 20:08 ?        00:00:00 ora_vkrm_p19c
oracle    10999      1  0 20:08 ?        00:00:00 ora_svcb_p19c
oracle    11001      1  0 20:08 ?        00:00:00 ora_pman_p19c
oracle    11005      1  0 20:08 ?        00:00:00 ora_dia0_p19c
oracle    11007      1  0 20:08 ?        00:00:00 ora_dbw0_p19c
oracle    11011      1  0 20:08 ?        00:00:00 ora_lgwr_p19c
oracle    11015      1  0 20:08 ?        00:00:00 ora_ckpt_p19c
oracle    11019      1  0 20:08 ?        00:00:00 ora_lg00_p19c
oracle    11021      1  0 20:08 ?        00:00:00 ora_smon_p19c
oracle    11025      1  0 20:08 ?        00:00:00 ora_lg01_p19c
oracle    11027      1  0 20:08 ?        00:00:00 ora_smco_p19c
oracle    11029      1  0 20:08 ?        00:00:00 ora_reco_p19c
oracle    11031      1  0 20:08 ?        00:00:00 ora_w000_p19c
oracle    11033      1  0 20:08 ?        00:00:00 ora_lreg_p19c
oracle    11037      1  0 20:08 ?        00:00:00 ora_w001_p19c
oracle    11039      1  0 20:08 ?        00:00:00 ora_pxmn_p19c
oracle    11046      1  0 20:08 ?        00:00:01 ora_mmon_p19c
oracle    11048      1  0 20:08 ?        00:00:00 ora_mmnl_p19c
oracle    11050      1  0 20:08 ?        00:00:00 ora_d000_p19c
oracle    11052      1  0 20:08 ?        00:00:00 ora_s000_p19c
oracle    11054      1  0 20:08 ?        00:00:00 ora_tmon_p19c
oracle    11059      1  0 20:08 ?        00:00:00 ora_m000_p19c
oracle    11061      1  0 20:08 ?        00:00:00 ora_m001_p19c
oracle    11067      1  0 20:08 ?        00:00:00 ora_tt00_p19c
oracle    11069      1  0 20:08 ?        00:00:00 ora_tt01_p19c
oracle    11071      1  0 20:08 ?        00:00:00 ora_tt02_p19c
oracle    11076      1  0 20:08 ?        00:00:00 ora_w002_p19c
oracle    11078      1  0 20:08 ?        00:00:00 ora_aqpc_p19c
oracle    11083      1  0 20:08 ?        00:00:00 ora_p000_p19c
oracle    11085      1  0 20:08 ?        00:00:00 ora_p001_p19c
oracle    11087      1  0 20:08 ?        00:00:00 ora_p002_p19c
oracle    11089      1  0 20:08 ?        00:00:00 ora_p003_p19c
oracle    11091      1  0 20:08 ?        00:00:00 ora_p004_p19c
oracle    11093      1  0 20:08 ?        00:00:00 ora_p005_p19c
oracle    11095      1  0 20:08 ?        00:00:00 ora_p006_p19c
oracle    11097      1  0 20:08 ?        00:00:00 ora_p007_p19c
oracle    11099      1  0 20:08 ?        00:00:00 ora_p008_p19c
oracle    11101      1  0 20:08 ?        00:00:00 ora_p009_p19c
oracle    11103      1  0 20:08 ?        00:00:00 ora_p00a_p19c
oracle    11105      1  0 20:08 ?        00:00:00 ora_p00b_p19c
oracle    11107      1  0 20:08 ?        00:00:00 ora_cjq0_p19c
oracle    11305      1  0 20:08 ?        00:00:00 ora_w003_p19c
oracle    11311      1  0 20:08 ?        00:00:00 ora_w004_p19c
oracle    11325      1  0 20:08 ?        00:00:00 ora_m002_p19c
oracle    11349      1  0 20:08 ?        00:00:00 ora_m003_p19c
oracle    11353      1  0 20:08 ?        00:00:00 ora_qm02_p19c
oracle    11357      1  0 20:08 ?        00:00:00 ora_q002_p19c
oracle    11359      1  0 20:08 ?        00:00:00 ora_q003_p19c
oracle    11410      1  0 20:09 ?        00:00:00 ora_cl00_p19c
oracle    11412      1  0 20:09 ?        00:00:00 ora_cl01_p19c
oracle    11414      1  0 20:09 ?        00:00:00 ora_cl02_p19c
oracle    11416      1  0 20:09 ?        00:00:00 ora_cl03_p19c
oracle    11418      1  0 20:09 ?        00:00:00 ora_cl04_p19c
oracle    11587   5337  0 20:11 pts/0    00:00:00 ps -ef
oracle    11588   5337  0 20:11 pts/0    00:00:00 grep --color=auto ora
9.将修改的负载 SQL 文件传到数据库中(非必须)

        在查阅升级19.22的官方文档后,在补丁升级之后还需要将修改的负载 SQL 文件传到数据库中,因为我们是单节点ORACLE数据库,所以属于非CDB数据库:

        1)查看数据库状态:
#先确保我们的数据库已经启动
ps -ef|grep ora
[oracle@p19c:/soft/35943157]$ ps -ef|grep ora
root       5336   3178  0 19:25 pts/0    00:00:00 su - oracle
oracle     5337   5336  0 19:25 pts/0    00:00:00 -bash
oracle    10930      1  0 20:07 ?        00:00:00 /u01/app/oracle/product/19.3.0/db/bin/tnslsnr LISTENER -inherit
oracle    10956      1  0 20:08 ?        00:00:00 ora_pmon_p19c
oracle    10960      1  0 20:08 ?        00:00:00 ora_clmn_p19c
oracle    10964      1  0 20:08 ?        00:00:00 ora_psp0_p19c
oracle    10969      1  2 20:08 ?        00:00:04 ora_vktm_p19c
oracle    10975      1  0 20:08 ?        00:00:00 ora_gen0_p19c
oracle    10979      1  0 20:08 ?        00:00:00 ora_mman_p19c
oracle    10985      1  0 20:08 ?        00:00:00 ora_gen1_p19c
oracle    10988      1  0 20:08 ?        00:00:00 ora_diag_p19c
oracle    10990      1  0 20:08 ?        00:00:00 ora_ofsd_p19c
oracle    10993      1  0 20:08 ?        00:00:00 ora_dbrm_p19c
oracle    10997      1  0 20:08 ?        00:00:00 ora_vkrm_p19c
oracle    10999      1  0 20:08 ?        00:00:00 ora_svcb_p19c
oracle    11001      1  0 20:08 ?        00:00:00 ora_pman_p19c
oracle    11005      1  0 20:08 ?        00:00:00 ora_dia0_p19c
oracle    11007      1  0 20:08 ?        00:00:00 ora_dbw0_p19c
oracle    11011      1  0 20:08 ?        00:00:00 ora_lgwr_p19c
oracle    11015      1  0 20:08 ?        00:00:00 ora_ckpt_p19c
oracle    11019      1  0 20:08 ?        00:00:00 ora_lg00_p19c
oracle    11021      1  0 20:08 ?        00:00:00 ora_smon_p19c
oracle    11025      1  0 20:08 ?        00:00:00 ora_lg01_p19c
oracle    11027      1  0 20:08 ?        00:00:00 ora_smco_p19c
oracle    11029      1  0 20:08 ?        00:00:00 ora_reco_p19c
oracle    11031      1  0 20:08 ?        00:00:00 ora_w000_p19c
oracle    11033      1  0 20:08 ?        00:00:00 ora_lreg_p19c
oracle    11037      1  0 20:08 ?        00:00:00 ora_w001_p19c
oracle    11039      1  0 20:08 ?        00:00:00 ora_pxmn_p19c
oracle    11046      1  0 20:08 ?        00:00:01 ora_mmon_p19c
oracle    11048      1  0 20:08 ?        00:00:00 ora_mmnl_p19c
oracle    11050      1  0 20:08 ?        00:00:00 ora_d000_p19c
oracle    11052      1  0 20:08 ?        00:00:00 ora_s000_p19c
oracle    11054      1  0 20:08 ?        00:00:00 ora_tmon_p19c
oracle    11059      1  0 20:08 ?        00:00:00 ora_m000_p19c
oracle    11061      1  0 20:08 ?        00:00:00 ora_m001_p19c
oracle    11067      1  0 20:08 ?        00:00:00 ora_tt00_p19c
oracle    11069      1  0 20:08 ?        00:00:00 ora_tt01_p19c
oracle    11071      1  0 20:08 ?        00:00:00 ora_tt02_p19c
oracle    11076      1  0 20:08 ?        00:00:00 ora_w002_p19c
oracle    11078      1  0 20:08 ?        00:00:00 ora_aqpc_p19c
oracle    11083      1  0 20:08 ?        00:00:00 ora_p000_p19c
oracle    11085      1  0 20:08 ?        00:00:00 ora_p001_p19c
oracle    11087      1  0 20:08 ?        00:00:00 ora_p002_p19c
oracle    11089      1  0 20:08 ?        00:00:00 ora_p003_p19c
oracle    11091      1  0 20:08 ?        00:00:00 ora_p004_p19c
oracle    11093      1  0 20:08 ?        00:00:00 ora_p005_p19c
oracle    11095      1  0 20:08 ?        00:00:00 ora_p006_p19c
oracle    11097      1  0 20:08 ?        00:00:00 ora_p007_p19c
oracle    11099      1  0 20:08 ?        00:00:00 ora_p008_p19c
oracle    11101      1  0 20:08 ?        00:00:00 ora_p009_p19c
oracle    11103      1  0 20:08 ?        00:00:00 ora_p00a_p19c
oracle    11105      1  0 20:08 ?        00:00:00 ora_p00b_p19c
oracle    11107      1  0 20:08 ?        00:00:00 ora_cjq0_p19c
oracle    11305      1  0 20:08 ?        00:00:00 ora_w003_p19c
oracle    11311      1  0 20:08 ?        00:00:00 ora_w004_p19c
oracle    11325      1  0 20:08 ?        00:00:00 ora_m002_p19c
oracle    11349      1  0 20:08 ?        00:00:00 ora_m003_p19c
oracle    11353      1  0 20:08 ?        00:00:00 ora_qm02_p19c
oracle    11357      1  0 20:08 ?        00:00:00 ora_q002_p19c
oracle    11359      1  0 20:08 ?        00:00:00 ora_q003_p19c
oracle    11410      1  0 20:09 ?        00:00:00 ora_cl00_p19c
oracle    11412      1  0 20:09 ?        00:00:00 ora_cl01_p19c
oracle    11414      1  0 20:09 ?        00:00:00 ora_cl02_p19c
oracle    11416      1  0 20:09 ?        00:00:00 ora_cl03_p19c
oracle    11418      1  0 20:09 ?        00:00:00 ora_cl04_p19c
oracle    11587   5337  0 20:11 pts/0    00:00:00 ps -ef
oracle    11588   5337  0 20:11 pts/0    00:00:00 grep --color=auto ora
        2)开始操作
#进入到OPATCH的目录
cd $ORACLE_HOME/OPatch

#这个是可选择的
./datapatch -sanity_checks

#执行,这一步的时间有点长,稍微等一等就OK了
./datapatch -verbose

        LOG

[oracle@p19c:/u01/app/oracle/product/19.3.0/db/OPatch]$ ./datapatch -sanity_checks
Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 395.
SQL Patching sanity checks version 19.22.0.0.0 on 2024年03月21日 星期四 20时29分59秒
Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 404.
Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 412.
Copyright (c) 2021, 2024, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20240321_202959_3649/sanity_checks_20240321_202959_3649.log

Running checks
JSON report generated in /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20240321_202959_3649/sqlpatch_sanity_checks_summary.json file
Checks completed. Printing report:

Check: Database component status - OK
Check: PDB Violations - OK
Check: Invalid System Objects - OK
Check: Tablespace Status - OK
Check: Backup jobs - OK
Check: Temp file exists - OK
Check: Temp file online - OK
Check: Data Pump running - OK
Check: Container status - WARNING
  Datapatch will only run in containers with READ WRITE, MIGRATE (upgrade) or READ ONLY mode.
  Specified containers are not READ WRITE, MIGRATE or READ ONLY mode. When not opened, containers will not be a part of patching.
  Open containers if they should take part of patching activities. Refer to the section "Modifying a PDB with the ALTER PLUGGABLE DATABASE Statement" in the Multitenant Administrator's Guide for details.
  CDB$ROOT:
    | NAME | OPEN_MODE |
    |------+-----------|
    | PDB  |  MOUNTED  |
    |------+-----------|
Check: Oracle Database Keystore - OK
Check: Dictionary statistics gathering - WARNING
  Patching the database while dictionary statistics are being collected may lead to performance issues.
  Dictionary statistics are currently being collected in the database.
  Consider patching the database when dictionary statistics are not being collected. To check if such operations are currently running, run this query:
    SELECT sofar, totalwork, units, start_time, time_remaining, message
    FROM sys.v$session_longops
    WHERE opname = 'Gather Dictionary Schema Statistics'
    AND time_remaining > 0;
  PDB$SEED:
    |     LATEST      |        OPERATION        |
    |-----------------+-------------------------|
    | 17-APR-19 02:03 | gather_dictionary_stats |
    |-----------------+-------------------------|
Check: Scheduled Jobs - OK
Check: GoldenGate triggers - OK
Check: Logminer DDL triggers - OK
Check: Check sys public grants - OK
Check: Statistics gathering running - OK
Check: Optim dictionary upgrade parameter - OK
Check: Symlinks on oracle home path - OK
Check: Central Inventory - OK
Check: Queryable Inventory dba directories - OK
Check: Queryable Inventory locks - OK
Check: Queryable Inventory package - ERROR
  Datapatch uses Queryable Inventory to get OPatch Inventory information and create a patching installation plan.
  The Queryable Inventory package is not able to retrieve OPatch Inventory information.
  Refer to MOS Note 1602089.1 for details on verifying the Queryable Inventory package before patching.
  CDB$ROOT:
    | RESULT  |
    |---------|
    | Failure |
    |---------|
Check: Queryable Inventory external table - SKIPPED (ERROR)
  Message: Skipped as previous check wasn't executed successfully.
Check: Imperva processes - OK
Check: Guardium processes - OK
Check: Locale - OK

Refer to MOS Note 2680521.1 and debug log
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20240321_202959_3649/sanity_checks_debug_20240321_202959_3649.log

Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 395.
SQL Patching sanity checks completed on 2024年03月21日 星期四 20时30分06秒
Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 404.
Wide character in print at /u01/app/oracle/product/19.3.0/db/sqlpatch/sqlpatch_sanity_checks.pm line 412.
[oracle@p19c:/u01/app/oracle/product/19.3.0/db/OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.22.0.0.0 Production on Thu Mar 21 20:30:24 2024
Copyright (c) 2012, 2024, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_3910_2024_03_21_20_30_24/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)

Warning: PDB PDB is in mode MOUNTED and will be skipped.
Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
  No interim patches found

Current state of release update SQL patches:
  Binary registry:
    19.22.0.0.0 Release_Update 240104023954: Installed
  PDB CDB$ROOT:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 21-MAR-24 04.19.41.127359 PM
  PDB PDB$SEED:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 21-MAR-24 04.25.10.391884 PM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED
    No interim patches need to be rolled back
    Patch 35943157 (Database Release Update : 19.22.0.0.240116 (35943157)):
      Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.22.0.0.0 Release_Update 240104023954
    No interim patches need to be applied

Installing patches...
Patch installation complete.  Total patches installed: 2

Validating logfiles...done
Patch 35943157 apply (pdb CDB$ROOT): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_P19C_CDBROOT_2024Mar21_20_30_59.log (no errors)
Patch 35943157 apply (pdb PDB$SEED): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_P19C_PDBSEED_2024Mar21_20_36_12.log (no errors)

Automatic recompilation incomplete; run utlrp.sql to revalidate.
  PDBs: PDB$SEED

SQL Patching tool complete on Thu Mar 21 20:40:04 2024

        从中可以看出没有错误:

        3)检查日志是否出错
cd /u01/app/oracle/cfgtoollogs/sqlpatch/35943157/25527362

ls

#这个会把操作都给调出来,很多很多,一般前几步不会错,都不会有问题的,不建议操作,可以记事本打开瞅瞅,内容太多我就不列出来了
cat 35943157_apply_P19C_CDBROOT_2024Mar21_20_30_59.log
        4)更新 extjob 的权限

        数据库版本更新修补程序安装涉及重新链接库和可执行文件待更新。有时会导致权限更改并需要更新。

#以root权限执行以下命令
su - root

#如果你的root用户没有配置ORACLE_HOME的环境变量的话,此时会找不到目录,直接将$ORACLE_HOME替换成实际目录就行了
chown root $ORACLE_HOME/bin/extjob
chmod 4750 $ORACLE_HOME/bin/extjob


#没有配置环境变量执行以下命令
chown root /u01/app/oracle/product/19.3.0/db/bin/extjob
chmod 4750 /u01/app/oracle/product/19.3.0/db/bin/extjob
10.版本回退
       1)关闭数据实例和监听程序

         查阅官方文档可知,我们要想进行回退必须将监听以及实例关掉

        我们把数据库以及监听都关闭之后执行以下命令进行版本回退

opatch rollback -id 35943157

                          LOG

[oracle@p19c:/home/oracle]$ opatch rollback -id 35943157
Oracle 临时补丁程序安装程序版本 12.2.0.1.41
版权所有 (c) 2024, Oracle Corporation。保留所有权利。


Oracle 主目录       :/u01/app/oracle/product/19.3.0/db
主产品清单:/u01/app/oraInventory
   来自           :/u01/app/oracle/product/19.3.0/db/oraInst.loc
OPatch 版本    :12.2.0.1.41
OUI 版本       :12.2.0.7.0
日志文件位置:/u01/app/oracle/product/19.3.0/db/cfgtoollogs/opatch/opatch2024-03-22_16-34-10下午_1.log


Patches will be rolled back in the following order:
   35943157
The following patch(es) will be rolled back: 35943157

请关闭本地系统上在此 ORACLE_HOME 之外运行的 Oracle 实例。
(Oracle 主目录 = '/u01/app/oracle/product/19.3.0/db')


本地系统是否已准备打补丁? [y|n]
y
User Responded with: Y

Rolling back patch 35943157...

RollbackSession 从 OH '/u01/app/oracle/product/19.3.0/db' 回退临时补丁程序 '35943157'

正在为组件 oracle.rdbms, 19.0.0.0.0 打补丁...

正在为组件 oracle.rdbms.util, 19.0.0.0.0 打补丁...

正在为组件 oracle.rdbms.rsf, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.acf, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.deconfig, 19.0.0.0.0 打补丁...

正在为组件 oracle.assistants.server, 19.0.0.0.0 打补丁...

正在为组件 oracle.blaslapack, 19.0.0.0.0 打补丁...

正在为组件 oracle.buildtools.rsf, 19.0.0.0.0 打补丁...

..........

正在为组件 oracle.javavm.server, 19.0.0.0.0 打补丁...

正在为组件 oracle.precomp.lang, 19.0.0.0.0 打补丁...

正在为组件 oracle.precomp.common, 19.0.0.0.0 打补丁...

正在为组件 oracle.jdk, 1.8.0.201.0 打补丁...
RollbackSession 从产品清单中删除临时补丁程序 '35943157'
Inactive sub-set patch [29517242] has become active due to the rolling back of a super-set patch [35943157].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/19.3.0/db/cfgtoollogs/opatch/opatch2024-03-22_16-34-10下午_1.log

OPatch succeeded.
        2)加载修改 SQL 文件到数据库中
                ①启动监听并且启动数据库:
lsnrctl start      #启动监听
 
sas
 
startup         #启动数据库

                这里我们就可以看到版本已经回退了

                 ②执行命令

                治理就不放执行记录了,跟之前的执行过一次的结果是一样的。

#进入到OPATCH的目录
cd $ORACLE_HOME/OPatch

#这个是可选择的
./datapatch -sanity_checks

#执行,这一步的时间有点长,稍微等一等就OK了
./datapatch -verbose
11.结语 

        至此,从19.3打补丁到19.22以及回退就结束啦!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值