1. 작업 대상 확인

A) 클러스터 상태 확인

crsctl stat res -t
[root@rac1 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.CRS.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     Started,STABLE
      2        ONLINE  ONLINE       rac2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac1                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.racdb.db
      1        ONLINE  ONLINE       rac1                     Open,HOME=/u01/app/o
                                                             racle/product/19c/db
                                                             _1,STABLE
      2        ONLINE  ONLINE       rac2                     Open,HOME=/u01/app/o
                                                             racle/product/19c/db
                                                             _1,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                     STABLE
--------------------------------------------------------------------------------


B) 데이터베이스 상태 확인

select NAME, OPEN_MODE from V$PDBS;
select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;
[racdb1:/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 10:13:16 2019
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> set lines 100
SQL> col NAME form a10
SQL> select NAME, OPEN_MODE from V$PDBS;

NAME       OPEN_MODE
---------- ----------
PDB$SEED   READ ONLY
PDB        READ WRITE

SQL> col STATUS form a10
SQL> col ACTION_TIME form a25
SQL> select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;

  PATCH_ID ACTION          STATUS     ACTION_TIME               SOURCE_VERSION  TARGET_VERSION
---------- --------------- ---------- ------------------------- --------------- ---------------
  29517242 APPLY           SUCCESS    19/08/24 14:38:46.385562  19.1.0.0.0      19.3.0.0.0

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


2. Release Update 적용

A) RU 패치

$GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769

1번 노드

[root@rac1 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769

OPatchauto session is initiated at Mon Aug 26 10:22:18 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-26_10-23-18AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-26_10-25-48AM.log입니다.
이 세션의 ID는 XZZZ입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1

Patch applicability verified successfully on home /u01/app/19c/grid


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
SQL patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Preparing to bring down database service on home /u01/app/oracle/product/19c/db_1
Successfully prepared home /u01/app/oracle/product/19c/db_1 to bring down database service


Bringing down CRS service on home /u01/app/19c/grid
CRS service brought down successfully on home /u01/app/19c/grid


Performing prepatch operation on home /u01/app/oracle/product/19c/db_1
Perpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/oracle/product/19c/db_1
Binary patch applied successfully on home /u01/app/oracle/product/19c/db_1


Performing postpatch operation on home /u01/app/oracle/product/19c/db_1
Postpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/19c/grid
Binary patch applied successfully on home /u01/app/19c/grid


Starting CRS service on home /u01/app/19c/grid
CRS service started successfully on home /u01/app/19c/grid


Preparing home /u01/app/oracle/product/19c/db_1 after database service restarted
No step execution required.........


Trying to apply SQL patch on home /u01/app/oracle/product/19c/db_1
SQL patch applied successfully on home /u01/app/oracle/product/19c/db_1

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac1
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_10-35-49오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_10-35-49오전_1.log


Host:rac1
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_10-41-21오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_10-41-21오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_10-41-21오전_1.log



OPatchauto session completed at Mon Aug 26 10:54:15 2019
Time taken to complete the session 32 minutes, 1 second

2번 노드

[root@rac2 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769

OPatchauto session is initiated at Mon Aug 26 11:00:38 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-26_11-00-49AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-26_11-01-56AM.log입니다.
이 세션의 ID는 N8PU입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1

Patch applicability verified successfully on home /u01/app/19c/grid


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
SQL patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Preparing to bring down database service on home /u01/app/oracle/product/19c/db_1
Successfully prepared home /u01/app/oracle/product/19c/db_1 to bring down database service


Bringing down CRS service on home /u01/app/19c/grid
CRS service brought down successfully on home /u01/app/19c/grid


Performing prepatch operation on home /u01/app/oracle/product/19c/db_1
Perpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/oracle/product/19c/db_1
Binary patch applied successfully on home /u01/app/oracle/product/19c/db_1


Performing postpatch operation on home /u01/app/oracle/product/19c/db_1
Postpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/19c/grid
Binary patch applied successfully on home /u01/app/19c/grid


Starting CRS service on home /u01/app/19c/grid
CRS service started successfully on home /u01/app/19c/grid


Preparing home /u01/app/oracle/product/19c/db_1 after database service restarted
No step execution required.........


Trying to apply SQL patch on home /u01/app/oracle/product/19c/db_1
SQL patch applied successfully on home /u01/app/oracle/product/19c/db_1

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac2
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_11-09-14오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_11-09-14오전_1.log


Host:rac2
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_11-14-29오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_11-14-29오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-26_11-14-29오전_1.log



OPatchauto session completed at Mon Aug 26 11:42:48 2019
Time taken to complete the session 42 minutes, 10 seconds


3. Release Update Datapatch 적용

A) CDB와 PDB Datapatch 적용 여부 확인

select NAME, OPEN_MODE from V$PDBS;
select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;
select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;
[racdb1:/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 13:42:42 2019
Version 19.4.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.4.0.0.0

SQL> set lines 100
SQL> col NAME form a10
SQL> select NAME, OPEN_MODE from V$PDBS;

NAME       OPEN_MODE
---------- ----------
PDB$SEED   READ ONLY
PDB        READ WRITE

SQL> col STATUS form a10
SQL> col ACTION_TIME form a25
SQL> select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;

  PATCH_ID ACTION          STATUS     ACTION_TIME               SOURCE_VERSION  TARGET_VERSION
---------- --------------- ---------- ------------------------- --------------- ---------------
  29517242 APPLY           SUCCESS    19/08/24 14:38:46.385562  19.1.0.0.0      19.3.0.0.0
  29834717 APPLY           SUCCESS    19/08/26 11:42:17.845203  19.3.0.0.0      19.4.0.0.0

SQL> col TIME form a25
SQL> col NAME form a10
SQL> col CAUSE form a10
SQL> col MESSAGE form a150
SQL> select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;

TIME                      NAME       CAUSE      STATUS     MESSAGE
------------------------- ---------- ---------- ---------- ------------------------------------------------------------------------------------------------------------------------------------------------------
19/08/24 15:01:56.279107  PDB$SEED   SQL Patch  RESOLVED   '19.3.0.0.0 Release_Update 1904101227' is installed in the CDB but no release updates are installed in the PDB
19/08/26 13:29:21.177332  PDB        SQL Patch  PENDING    '19.4.0.0.0 Release_Update 1906261711' is installed in the CDB but '19.3.0.0.0 Release_Update 1904101227' is installed in the PDB

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


B)  Datapatch 적용

datapatch -verbose
[racdb1:/home/oracle]> datapatch -verbose
SQL Patching tool version 19.4.0.0.0 Production on Mon Aug 26 13:29:41 2019
Copyright (c) 2012, 2019, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_17954_2019_08_26_13_29_41/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)

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.4.0.0.0 Release_Update 190626171128: Installed
  PDB CDB$ROOT:
    Applied 19.4.0.0.0 Release_Update 190626171128 successfully on 19/08/26 11:42:17.845203
  PDB PDB:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 19/08/24 14:55:33.831127
  PDB PDB$SEED:
    Applied 19.4.0.0.0 Release_Update 190626171128 successfully on 19/08/26 11:42:30.723819

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
    No release update patches need to be installed
    No interim patches need to be applied
  For the following PDBs: PDB
    No interim patches need to be rolled back
    Patch 29834717 (Database Release Update : 19.4.0.0.190716 (29834717)):
      Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.4.0.0.0 Release_Update 190626171128
    No interim patches need to be applied

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

Validating logfiles...done
Patch 29834717 apply (pdb PDB): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/29834717/23016168/29834717_apply_RACDB_PDB_2019Aug26_13_31_09.log (no errors)
SQL Patching tool complete on Mon Aug 26 13:43:58 2019


C) PDB 재기동 및 Datapatch 결과 확인

alter pluggable database PDB close immediate;
alter pluggable database PDB open;
select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;
[racdb1:/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 13:58:42 2019
Version 19.4.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.4.0.0.0

SQL> alter pluggable database PDB close;

Pluggable database altered.

SQL> alter pluggable database PDB open;

Pluggable database altered.

SQL> set lines 250
SQL> col TIME form a25
SQL> col NAME form a10
SQL> col CAUSE form a10
SQL> col MESSAGE form a150
SQL> select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;

TIME                      NAME       CAUSE      STATUS     MESSAGE
------------------------- ---------- ---------- ---------- ------------------------------------------------------------------------------------------------------------------------------------------------------
19/08/24 15:01:56.279107  PDB$SEED   SQL Patch  RESOLVED   '19.3.0.0.0 Release_Update 1904101227' is installed in the CDB but no release updates are installed in the PDB
19/08/26 13:56:15.520959  PDB        SQL Patch  RESOLVED   '19.4.0.0.0 Release_Update 1906261711' is installed in the CDB but '19.3.0.0.0 Release_Update 1904101227' is installed in the PDB

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


4. RU 패치 결과 확인

A) Grid 패치 결과 확인

$GI_HOME/OPatch/opatch lspatches -oh $GI_HOME

1번 노드

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29851014;ACFS RELEASE UPDATE 19.4.0.0.0 (29851014)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29851014;ACFS RELEASE UPDATE 19.4.0.0.0 (29851014)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.


B) Database 패치 결과 확인

$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.


5. OJVM 패치 (옵션)

A) OJVM 패치 준비

DB_HOME 서비스 정지

srvctl stop home -oraclehome $DB_HOME -statefile /tmp/state.out -node <노드명> -stopoption IMMEDIATE

1번 노드

[root@rac1 ~]# srvctl stop home -oraclehome $DB_HOME -statefile /tmp/state.out -node rac1 -stopoption IMMEDIATE

2번 노드

[root@rac2 ~]# srvctl stop home -oraclehome $DB_HOME -statefile /tmp/state.out -node rac2 -stopoption IMMEDIATE

결과 확인

[root@rac2 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.CRS.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     Started,STABLE
      2        ONLINE  ONLINE       rac2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac2                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac2                     STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.racdb.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      2        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------


패치 사전 검증

$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph <압축 해제 경로>/29774421

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-09-25오후_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-09-36오후_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.


B) OJVM 패치 적용

cd <압축 해제 경로>/29774421
$DB_HOME/OPatch/opatch apply

1번 노드

[racdb1:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb1:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-10-37오후_1.log

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

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-10-37오후_1.log

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb2:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-19-07오후_1.log

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

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_14-19-07오후_1.log

OPatch succeeded.


클러스터 재기동

srvctl start home -oraclehome $DB_HOME -statefile /tmp/state.out -node <노드명>

1번 노드

[root@rac1 ~]# srvctl start home -oraclehome $DB_HOME -statefile /tmp/state.out -node rac1

2번 노드

[root@rac2 ~]# srvctl start home -oraclehome $DB_HOME -statefile /tmp/state.out -node rac2


C) OJVM 패치 결과 확인

$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.


D) OJVM Datapatch 준비

OJVM Datapatch 준비

alter system set cluster_database=false scope=spfile;
[racdb1:/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 14:36:39 2019
Version 19.4.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.4.0.0.0

SQL> alter system set cluster_database=false scope=spfile;

System altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


Database 중지

srvctl stop database -d <데이터베이스명> -o immediate
[racdb1:/home/oracle]> srvctl stop database -d racdb -o immediate


업그레이드 모드로 Database 기동

startup upgrade
alter pluggable database all open upgrade;
[racdb1:/home/oracle]> sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 14:41:36 2019
Version 19.4.0.0.0

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

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.

Total System Global Area 3154114088 bytes
Fixed Size                  9139752 bytes
Variable Size             805306368 bytes
Database Buffers         2332033024 bytes
Redo Buffers                7634944 bytes
Database mounted.
Database opened.
SQL> alter pluggable database all open upgrade;

Pluggable database altered.

SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


E) OJVM Datapatch 적용

$DB_HOME/OPatch/datapatch -verbose
[racdb1:/home/oracle]> datapatch -verbose
SQL Patching tool version 19.4.0.0.0 Production on Mon Aug 26 14:42:46 2019
Copyright (c) 2012, 2019, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_26152_2019_08_26_14_42_46/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)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
Interim patch 29774421 (OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)):
  Binary registry: Installed
  PDB CDB$ROOT: Not installed
  PDB PDB: Not installed
  PDB PDB$SEED: Not installed

Current state of release update SQL patches:
  Binary registry:
    19.4.0.0.0 Release_Update 190626171128: Installed
  PDB CDB$ROOT:
    Applied 19.4.0.0.0 Release_Update 190626171128 successfully on 19/08/26 11:42:17.845203
  PDB PDB:
    Applied 19.4.0.0.0 Release_Update 190626171128 successfully on 19/08/26 13:43:48.990596
  PDB PDB$SEED:
    Applied 19.4.0.0.0 Release_Update 190626171128 successfully on 19/08/26 11:42:30.723819

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED PDB
    No interim patches need to be rolled back
    No release update patches need to be installed
    The following interim patches will be applied:
      29774421 (OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421))

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

Validating logfiles...done
Patch 29774421 apply (pdb CDB$ROOT): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/29774421/22965160/29774421_apply_RACDB_CDBROOT_2019Aug26_14_43_35.log (no errors)
Patch 29774421 apply (pdb PDB$SEED): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/29774421/22965160/29774421_apply_RACDB_PDBSEED_2019Aug26_14_46_02.log (no errors)
Patch 29774421 apply (pdb PDB): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/29774421/22965160/29774421_apply_RACDB_PDB_2019Aug26_14_46_02.log (no errors)
SQL Patching tool complete on Mon Aug 26 14:47:08 2019


OJVM Datapatch 정리 작업

alter system set cluster_database=true scope=spfile;
shutdown
[racdb1:/home/oracle]> sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 14:52:56 2019
Version 19.4.0.0.0

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

SQL> connect / as sysdba
Connected.
SQL> alter system set cluster_database=true scope=spfile;

System altered.

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


Database 기동

srvctl start database -d racdb
[racdb1:/home/oracle]> srvctl start database -d racdb


F) OJVM Datapatch 결과 확인

select NAME, OPEN_MODE from V$PDBS;
select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;
select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;
[racdb1:/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Aug 26 15:04:09 2019
Version 19.4.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.4.0.0.0

SQL> set lines 250
SQL> col NAME form a10
SQL> select NAME, OPEN_MODE from V$PDBS;

NAME       OPEN_MODE
---------- ----------
PDB$SEED   READ ONLY
PDB        READ WRITE

SQL> col STATUS form a10
SQL> col ACTION_TIME form a25
SQL> select PATCH_ID, ACTION, STATUS, ACTION_TIME, SOURCE_VERSION, TARGET_VERSION from DBA_REGISTRY_SQLPATCH;

  PATCH_ID ACTION          STATUS     ACTION_TIME               SOURCE_VERSION  TARGET_VERSION
---------- --------------- ---------- ------------------------- --------------- ---------------
  29517242 APPLY           SUCCESS    19/08/24 14:38:46.385562  19.1.0.0.0      19.3.0.0.0
  29834717 APPLY           SUCCESS    19/08/26 11:42:17.845203  19.3.0.0.0      19.4.0.0.0
  29774421 APPLY           SUCCESS    19/08/26 14:47:07.762419  19.4.0.0.0      19.4.0.0.0

SQL> col TIME form a25
SQL> col NAME form a10
SQL> col CAUSE form a10
SQL> col MESSAGE form a150
SQL> select TIME, NAME, CAUSE, STATUS, MESSAGE from PDB_PLUG_IN_VIOLATIONS;

TIME                      NAME       CAUSE      STATUS     MESSAGE
------------------------- ---------- ---------- ---------- ------------------------------------------------------------------------------------------------------------------------------------------------------
19/08/24 15:01:56.279107  PDB$SEED   SQL Patch  RESOLVED   '19.3.0.0.0 Release_Update 1904101227' is installed in the CDB but no release updates are installed in the PDB
19/08/26 13:56:15.520959  PDB        SQL Patch  RESOLVED   '19.4.0.0.0 Release_Update 1906261711' is installed in the CDB but '19.3.0.0.0 Release_Update 1904101227' is installed in the PDB

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.4.0.0.0


6. 최종 패치 결과 확인

A) Grid 패치 결과

$GI_HOME/OPatch/opatch lsinventory -oh $GI_HOME


B) Database 패치 결과

$DB_HOME/OPatch/opatch lsinventory -oh $DB_HOME


  • 레이블 없음