1. 패치 전 주의사항
패치 파일을 다운로드 받아 압축을 해제하면 파일 안에 README.html 파일이 존재합니다.
해당 파일에는 패치 방법이나 주의 사항과 관련된 자세한 안내가 기록되어 있습니다.
이를 반드시 읽고 테스트를 한 후에 적용해야 합니다.
2. 패치 사전 준비
A) 환경 변수 입력
root 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
export ORACLE_BASE=/u01/app/oracle export GRID_HOME=/u01/app/12.1.0/grid export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1 # mkdir -p /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460 # chown -R grid:oinstall /u01/app/oracle/cfgtoollogs/sqlpatch # chmod -R 775 /u01/app/oracle/cfgtoollogs
[root@rac1 ~]# export ORACLE_BASE=/u01/app/oracle [root@rac1 ~]# export GRID_HOME=/u01/app/12.1.0/grid [root@rac1 ~]# export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1
B) 서비스 상태 조회
RAC가 정상적으로 기동중인지 확인합니다.
서비스를 수동으로 중단하지 않고, 패치를 진행할 수 있습니다.
$GRID_HOME/bin/crsctl stat res -t
[root@rac1 ~]# $GRID_HOME/bin/crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.CRS.dg ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.DATA.dg ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.FRA.dg ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.LISTENER.lsnr ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.asm ONLINE ONLINE rac1 Started,STABLE ONLINE ONLINE rac2 Started,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.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE rac1 STABLE ora.MGMTLSNR 1 ONLINE ONLINE rac1 169.254.237.180 10.0 .5.102,STABLE ora.cvu 1 ONLINE ONLINE rac1 STABLE ora.mgmtdb 1 ONLINE ONLINE rac1 Open,STABLE ora.oc4j 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,STABLE 2 ONLINE ONLINE rac2 Open,STABLE ora.scan1.vip 1 ONLINE ONLINE rac1 STABLE --------------------------------------------------------------------------------
C) GRID_HOME의 OPatch 업데이트
root 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
cd $GRID_HOME OPatch/opatch version mv OPatch OPatch.old cp -r /media/sf_oracle/OPatch . chown -R grid:oinstall OPatch ll | grep OPatch OPatch/opatch version
[root@rac1 ~]# cd $GRID_HOME [root@rac1 grid]# OPatch/opatch version OPatch Version: 12.1.0.1.3 OPatch succeeded. [root@rac1 grid]# mv OPatch OPatch.old [root@rac1 grid]# cp -r /media/sf_oracle/OPatch . [root@rac1 grid]# chown -R grid:oinstall OPatch [root@rac1 grid]# ll | grep OPatch drwxr-x---. 14 grid oinstall 4096 2018-02-01 12:07 OPatch drwxr-xr-x. 7 grid oinstall 4096 2018-01-31 13:33 OPatch.old [root@rac1 grid]# OPatch/opatch version OPatch Version: 12.2.0.1.12 OPatch succeeded.
[root@rac2 ~]# cd $GRID_HOME [root@rac2 grid]# OPatch/opatch version OPatch Version: 12.1.0.1.3 OPatch succeeded. [root@rac2 grid]# mv OPatch OPatch.old [root@rac2 grid]# cp -r /media/sf_oracle/OPatch . [root@rac2 grid]# chown -R grid:oinstall OPatch [root@rac2 grid]# ll | grep OPatch drwxr-x---. 14 grid oinstall 4096 2018-02-01 12:24 OPatch drwxr-xr-x. 7 grid oinstall 4096 2018-01-31 13:35 OPatch.old [root@rac2 grid]# OPatch/opatch version OPatch Version: 12.2.0.1.12 OPatch succeeded.
D) ORACLE_HOME의 OPatch 업데이트
root 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
cd $DB_HOME OPatch/opatch version mv OPatch OPatch.old cp -r /media/sf_oracle/OPatch . chown -R oracle:oinstall OPatch ll | grep OPatch OPatch/opatch version
[root@rac1 ~]# cd $DB_HOME [root@rac1 db_1]# OPatch/opatch version OPatch Version: 12.1.0.1.3 OPatch succeeded. [root@rac1 db_1]# mv OPatch OPatch.old [root@rac1 db_1]# cp -r /media/sf_oracle/OPatch . [root@rac1 db_1]# chown -R oracle:oinstall OPatch [root@rac1 db_1]# ll | grep OPatch drwxr-x---. 14 oracle oinstall 4096 2018-02-01 12:07 OPatch drwxr-xr-x. 7 oracle oinstall 4096 2018-01-31 14:09 OPatch.old [root@rac1 db_1]# OPatch/opatch version OPatch Version: 12.2.0.1.12 OPatch succeeded.
[root@rac2 ~]# cd $DB_HOME [root@rac2 db_1]# OPatch/opatch version OPatch Version: 12.1.0.1.3 OPatch succeeded. [root@rac2 db_1]# mv OPatch OPatch.old [root@rac2 db_1]# cp -r /media/sf_oracle/OPatch . [root@rac2 db_1]# chown -R oracle:oinstall OPatch [root@rac2 db_1]# ll | grep OPatch drwxr-x---. 14 oracle oinstall 4096 2018-02-01 12:25 OPatch drwxr-xr-x. 7 oracle oinstall 4096 2018-01-31 14:12 OPatch.old [root@rac2 db_1]# OPatch/opatch version OPatch Version: 12.2.0.1.12 OPatch succeeded.
3. 패치 검증
A) GRID의 패치 내역 확인
grid 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
$GRID_HOME/OPatch/opatch lsinventory
[grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch lsinventory Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-23-16오후_1.log Lsinventory Output file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2018-02-01_15-23-16오후.txt -------------------------------------------------------------------------------- Local Machine Information:: Hostname: rac1 ARU platform id: 226 ARU platform description:: Linux x86-64 설치된 최상위 레벨 제품(1): Oracle Grid Infrastructure 12c 12.1.0.2.0 이 Oracle 홈에 1개의 제품이 설치되어 있습니다. 이 Oracle 홈에 설치된 Interim 패치가 없습니다. -------------------------------------------------------------------------------- OPatch succeeded.
[grid@+ASM2 ~]$ $GRID_HOME/OPatch/opatch lsinventory Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-23-47오후_1.log Lsinventory Output file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2018-02-01_15-23-47오후.txt -------------------------------------------------------------------------------- Local Machine Information:: Hostname: rac2 ARU platform id: 226 ARU platform description:: Linux x86-64 설치된 최상위 레벨 제품(1): Oracle Grid Infrastructure 12c 12.1.0.2.0 이 Oracle 홈에 1개의 제품이 설치되어 있습니다. 이 Oracle 홈에 설치된 Interim 패치가 없습니다. -------------------------------------------------------------------------------- OPatch succeeded.
B) GRID 패치 충돌 여부 검증
grid 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
pass되지 않은 항목이 있다면 oracle에 기술 지원을 요청해야 합니다. (기존 패치의 rollback 등의 작업이 필요할 수 있으므로 반드시 가이드를 받고 진행합니다.)
$GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218 $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26910974 $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26983807
[grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-08오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-17오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26910974 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-20오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26983807 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-26오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
[grid@+ASM2 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-10오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM2 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-20오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM2 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26910974 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-26-23오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [grid@+ASM2 ~]$ $GRID_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26983807 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-27-30오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
C) GRID 패치 디스크 용량 확인
GRID 패치를 위해 충분한 디스크 용량이 확보되어 있는지 검사합니다.
적용할 패치 파일의 디렉토리 경로를 텍스트 파일에 저장하고, opatch의 CheckSystemSpace 옵션을 이용하여 디스크 공간을 검사합니다.
vi /tmp/patch_list_gihome.txt # cat /tmp/patch_list_gihome.txt $GRID_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt
[grid@+ASM1 ~]$ vi /tmp/patch_list_gihome.txt [grid@+ASM1 ~]$ cat /tmp/patch_list_gihome.txt /media/sf_oracle/27010930/26983807 /media/sf_oracle/27010930/26910974 /media/sf_oracle/27010930/26925218 /media/sf_oracle/27010930/26925263 [grid@+ASM1 ~]$ $GRID_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/12.1.0/grid Central Inventory : /u01/app/oraInventory from : /u01/app/12.1.0/grid/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/12.1.0/grid/cfgtoollogs/opatch/opatch2018-02-01_15-29-47오후_1.log Invoking prereq "checksystemspace" Prereq "checkSystemSpace" passed. OPatch succeeded.
D) Database의 패치 내역 확인
oracle 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
$DB_HOME/OPatch/opatch lsinventory
[oracle@racdb1 ~]$ $DB_HOME/OPatch/opatch lsinventory Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-24-38오후_1.log Lsinventory Output file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2018-02-01_15-24-38오후.txt -------------------------------------------------------------------------------- Local Machine Information:: Hostname: rac1 ARU platform id: 226 ARU platform description:: Linux x86-64 설치된 최상위 레벨 제품(1): Oracle Database 12c 12.1.0.2.0 이 Oracle 홈에 1개의 제품이 설치되어 있습니다. 이 Oracle 홈에 설치된 Interim 패치가 없습니다. -------------------------------------------------------------------------------- OPatch succeeded.
[oracle@racdb2 ~]$ $DB_HOME/OPatch/opatch lsinventory Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-24-41오후_1.log Lsinventory Output file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2018-02-01_15-24-41오후.txt -------------------------------------------------------------------------------- Local Machine Information:: Hostname: rac2 ARU platform id: 226 ARU platform description:: Linux x86-64 설치된 최상위 레벨 제품(1): Oracle Database 12c 12.1.0.2.0 이 Oracle 홈에 1개의 제품이 설치되어 있습니다. 이 Oracle 홈에 설치된 Interim 패치가 없습니다. -------------------------------------------------------------------------------- OPatch succeeded.
E) Database 패치 충돌 여부 검증
oracle 유저로 1번과 2번 노드에 접속하여 양쪽에서 모두 실행합니다.
pass되지 않은 항목이 있다면 oracle에 기술 지원을 요청해야 합니다. (경우에 따라 기존 패치의 rollback 등의 작업이 필요할 수 있으므로 반드시 가이드를 받고 진행합니다.)
$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218
[oracle@racdb1 ~]$ $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-28-20오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [oracle@racdb1 ~]$ $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-28-34오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
[oracle@racdb2 ~]$ $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925263 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-28-28오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [oracle@racdb2 ~]$ $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /media/sf_oracle/27010930/26925218 Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-29-00오후_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
F) Database 패치 디스크 용량 확인
Database 패치를 위해 충분한 디스크 용량이 확보되어 있는지 검사합니다.
적용할 패치 파일의 디렉토리 경로를 텍스트 파일에 저장하고, opatch의 CheckSystemSpace 옵션을 이용하여 디스크 공간을 검사합니다.
vi /tmp/patch_list_dbhome.txt # cat /tmp/patch_list_dbhome.txt $DB_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt
[oracle@racdb1 ~]$ vi /tmp/patch_list_dbhome.txt [oracle@racdb1 ~]$ cat /tmp/patch_list_dbhome.txt /media/sf_oracle/27010930/26925218 /media/sf_oracle/27010930/26925263 [oracle@racdb1 ~]$ $DB_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.12 Copyright (c) 2018, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/12.1.0/db_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc OPatch version : 12.2.0.1.12 OUI version : 12.1.0.2.0 Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2018-02-01_15-30-33오후_1.log Invoking prereq "checksystemspace" Prereq "checkSystemSpace" passed. OPatch succeeded.
4. Grid 및 DBMS 패치 적용
A) opatchauto 수행하기
root 유저로 실행하며, 한 노드의 작업이 모두 완료된 후에 다른 노드에 작업을 수행합니다.
opatchauto apply /media/sf_oracle/27010930
1번 노드에서 실패 메시지가 발생할 수 있으나, 무시하고 2번 노드에 패치를 적용합니다.
[root@rac1 ~]# opatchauto apply /media/sf_oracle/27010930 OPatchauto session is initiated at Thu Feb 1 15:37:50 2018 System initialization log file is /u01/app/12.1.0/grid/cfgtoollogs/opatchautodb/systemconfig2018-02-01_03-38-32PM.log. 세션 로그 파일은 /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/opatchauto2018-02-01_03-38-56PM.log입니다. 이 세션의 ID는 C6FG입니다. Executing OPatch prereq operations to verify patch applicability on home /u01/app/12.1.0/grid Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/12.1.0/db_1 Patch applicability verified successfully on home /u01/app/oracle/product/12.1.0/db_1 Patch applicability verified successfully on home /u01/app/12.1.0/grid Verifying SQL patch applicability on home /u01/app/oracle/product/12.1.0/db_1 SQL patch applicability verified successfully on home /u01/app/oracle/product/12.1.0/db_1 Preparing to bring down database service on home /u01/app/oracle/product/12.1.0/db_1 Successfully prepared home /u01/app/oracle/product/12.1.0/db_1 to bring down database service Bringing down CRS service on home /u01/app/12.1.0/grid Prepatch operation log file location: /u01/app/12.1.0/grid/cfgtoollogs/crsconfig/crspatch_rac1_2018-02-01_03-49-03PM.log CRS service brought down successfully on home /u01/app/12.1.0/grid Performing prepatch operation on home /u01/app/oracle/product/12.1.0/db_1 Perpatch operation completed successfully on home /u01/app/oracle/product/12.1.0/db_1 Start applying binary patch on home /u01/app/oracle/product/12.1.0/db_1 Binary patch applied successfully on home /u01/app/oracle/product/12.1.0/db_1 Performing postpatch operation on home /u01/app/oracle/product/12.1.0/db_1 Postpatch operation completed successfully on home /u01/app/oracle/product/12.1.0/db_1 Start applying binary patch on home /u01/app/12.1.0/grid Binary patch applied successfully on home /u01/app/12.1.0/grid Starting CRS service on home /u01/app/12.1.0/grid Postpatch operation log file location: /u01/app/12.1.0/grid/cfgtoollogs/crsconfig/crspatch_rac1_2018-02-01_04-09-57PM.log Failed to start CRS service on home /u01/app/12.1.0/grid [GIStartupAction] 패치 작업 실행을 실패했습니다. 자세한 내용은 로그를 확인하십시오. 실패: Patch Target : rac1->/u01/app/12.1.0/grid 유형[crs] Details: [ ---------------------------Patching Failed--------------------------------- Command execution failed during patching in home: /u01/app/12.1.0/grid, host: rac1. Command failed: /u01/app/12.1.0/grid/perl/bin/perl -I/u01/app/12.1.0/grid/perl/lib -I/u01/app/12.1.0/grid/OPatch/auto/dbtmp/bootstrap_rac1/patchwork/crs/install /u01/app/12.1.0/grid/OPatch/auto/dbtmp/bootstrap_rac1/patchwork/crs/install/rootcrs.pl -postpatch Command failure output: Using configuration parameter file: /u01/app/12.1.0/grid/OPatch/auto/dbtmp/bootstrap_rac1/patchwork/crs/install/crsconfig_params 2018/02/01 16:10:03 CLSRSC-4015: Performing install or upgrade action for Oracle Trace File Analyzer (TFA) Collector. 2018/02/01 16:10:40 CLSRSC-4003: Successfully patched Oracle Trace File Analyzer (TFA) Collector. 2018/02/01 16:10:44 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.conf' CRS-4123: Oracle 고가용성 서비스가 시작되었습니다. CRS-4133: Oracle 고가용성 서비스가 정지되었습니다. CRS-4123: Oracle 고가용성 서비스가 관리하는 리소스를 시작하는 중 CRS-2672: 'ora.mdnsd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2672: 'ora.evmd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.evmd' 시작('rac1')이 성공했습니다. CRS-2676: 'ora.mdnsd' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.gpnpd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.gpnpd' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.gipcd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.gipcd' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.cssdmonitor'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.cssdmonitor' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.cssd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2672: 'ora.diskmon'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.diskmon' 시작('rac1')이 성공했습니다. CRS-2676: 'ora.cssd' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.cluster_interconnect.haip'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2672: 'ora.ctssd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.ctssd' 시작('rac1')이 성공했습니다. CRS-2676: 'ora.cluster_interconnect.haip' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.asm'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.asm' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.storage'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.storage' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.crf'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.crf' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.crsd'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.crsd' 시작('rac1')이 성공했습니다. CRS-6017: 서버에 대한 리소스 자동 시작을 처리하는 중: rac1 CRS-2672: 'ora.net1.network'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.net1.network' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.ons'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2673: 'ora.rac1.vip'을(를) 'rac2'에서 정지하려고 시도하는 중입니다. CRS-2677: 'ora.rac1.vip' 정지('rac2')가 성공했습니다. CRS-2672: 'ora.rac1.vip'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.ons' 시작('rac1')이 성공했습니다. CRS-2676: 'ora.rac1.vip' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.LISTENER.lsnr'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.LISTENER.lsnr' 시작('rac1')이 성공했습니다. CRS-2672: 'ora.racdb.db'을(를) 'rac1'에서 시작하려고 시도하는 중입니다. CRS-2676: 'ora.racdb.db' 시작('rac1')이 성공했습니다. CRS-6016: rac1 서버에 대한 리소스 자동 시작이 완료되었습니다. CRS-6024: Oracle Cluster Ready Services가 관리하는 리소스의 시작을 완료했습니다. CRS-4123: Oracle 고가용성 서비스가 시작되었습니다. 클러스터의 Oracle Clusterware 활성 버전이 [12.1.0.2.0]입니다. 클러스터 업그레이드 상태는 [ROLLING PATCH], 클러스터 활성 패치 레벨은 [0]입니다. SQL Patching tool version 12.1.0.2.0 Production on Thu Feb 1 16:14:23 2018 Copyright (c) 2012, 2017, Oracle. All rights reserved. Connecting to database...OK 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 Adding patches to installation queue and performing prereq checks...done Installation queue: For the following PDBs: CDB$ROOT PDB$SEED RAC_SCAN Nothing to roll back The following patches will be applied: 26925263 (DATABASE BUNDLE PATCH 12.1.0.2.180116) Installing patches... Patch installation complete. Total patches installed: 3 Validating logfiles... Patch 26925263 apply (pdb CDB$ROOT): WITH ERRORS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_CDBROOT_20182월 01_16_15_46.log (errors) Error at line 0: Could not open logfile /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_CDBROOT_20182월 01_16_15_46.log Patch 26925263 apply (pdb PDB$SEED): WITH ERRORS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_PDBSEED_20182월 01_16_17_50.log (errors) Error at line 0: Could not open logfile /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_PDBSEED_20182월 01_16_17_50.log Patch 26925263 apply (pdb RAC_SCAN): WITH ERRORS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_RAC_SCAN_20182월 01_16_17_50.log (errors) Error at line 0: Could not open logfile /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_RAC_SCAN_20182월 01_16_17_50.log Please refer to MOS Note 1609718.1 and/or the invocation log /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_10986_2018_02_01_16_14_23/sqlpatch_invocation.log for information on how to resolve the above errors. SQL Patching tool complete on Thu Feb 1 16:22:21 2018 2018/02/01 16:22:21 CLSRSC-488: Patching the Grid Infrastructure Management Repository database failed. After fixing the cause of failure Run opatchauto resume ] OPATCHAUTO-68061: 조정 엔진을 실패했습니다. OPATCHAUTO-68061: 반환 코드 1과(와) 함께 조정 엔진이 실패했습니다. OPATCHAUTO-68061: 자세한 내용은 로그를 확인하십시오. OPatchAuto를 실패했습니다. OPatchauto session completed at Thu Feb 1 16:22:23 2018 Time taken to complete the session 44 minutes, 33 seconds opatchauto failed with error code 42
[root@rac2 ~]# opatchauto apply /media/sf_oracle/27010930 OPatchauto session is initiated at Thu Feb 1 16:27:36 2018 System initialization log file is /u01/app/12.1.0/grid/cfgtoollogs/opatchautodb/systemconfig2018-02-01_04-28-21PM.log. 세션 로그 파일은 /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/opatchauto2018-02-01_04-28-47PM.log입니다. 이 세션의 ID는 JMQ1입니다. Executing OPatch prereq operations to verify patch applicability on home /u01/app/12.1.0/grid Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/12.1.0/db_1 Patch applicability verified successfully on home /u01/app/oracle/product/12.1.0/db_1 Patch applicability verified successfully on home /u01/app/12.1.0/grid Verifying SQL patch applicability on home /u01/app/oracle/product/12.1.0/db_1 SQL patch applicability verified successfully on home /u01/app/oracle/product/12.1.0/db_1 Preparing to bring down database service on home /u01/app/oracle/product/12.1.0/db_1 Successfully prepared home /u01/app/oracle/product/12.1.0/db_1 to bring down database service Bringing down CRS service on home /u01/app/12.1.0/grid Prepatch operation log file location: /u01/app/12.1.0/grid/cfgtoollogs/crsconfig/crspatch_rac2_2018-02-01_04-43-42PM.log CRS service brought down successfully on home /u01/app/12.1.0/grid Performing prepatch operation on home /u01/app/oracle/product/12.1.0/db_1 Perpatch operation completed successfully on home /u01/app/oracle/product/12.1.0/db_1 Start applying binary patch on home /u01/app/oracle/product/12.1.0/db_1 Binary patch applied successfully on home /u01/app/oracle/product/12.1.0/db_1 Performing postpatch operation on home /u01/app/oracle/product/12.1.0/db_1 Postpatch operation completed successfully on home /u01/app/oracle/product/12.1.0/db_1 Start applying binary patch on home /u01/app/12.1.0/grid Binary patch applied successfully on home /u01/app/12.1.0/grid Starting CRS service on home /u01/app/12.1.0/grid Postpatch operation log file location: /u01/app/12.1.0/grid/cfgtoollogs/crsconfig/crspatch_rac2_2018-02-01_05-05-00PM.log CRS service started successfully on home /u01/app/12.1.0/grid Preparing home /u01/app/oracle/product/12.1.0/db_1 after database service restarted No step execution required......... Prepared home /u01/app/oracle/product/12.1.0/db_1 successfully after database service restarted Trying to apply SQL patch on home /u01/app/oracle/product/12.1.0/db_1 "/bin/sh -c 'cd /u01/app/oracle/product/12.1.0/db_1;ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1 ORACLE_SID=racdb2 /u01/app/oracle/product/12.1.0/db_1/OPatch/datapatch -verbose'" command failed with errors. Please refer to logs for more details. SQL changes, if any, can be applied by manually retrying the same command. SQL patch applied successfully on home /u01/app/oracle/product/12.1.0/db_1 OPatchAuto를 성공했습니다. --------------------------------Summary-------------------------------- Patching is completed successfully. Please find the summary as follows: Host:rac2 RAC Home:/u01/app/oracle/product/12.1.0/db_1 Summary: ==Following patches were SKIPPED: Patch: /media/sf_oracle/27010930/26910974 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /media/sf_oracle/27010930/26983807 Reason: This patch is not applicable to this specified target type - "rac_database" ==Following patches were SUCCESSFULLY applied: Patch: /media/sf_oracle/27010930/26925218 Log: /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-44-48오후_1.log Patch: /media/sf_oracle/27010930/26925263 Log: /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-44-48오후_1.log Host:rac2 CRS Home:/u01/app/12.1.0/grid Summary: ==Following patches were SUCCESSFULLY applied: Patch: /media/sf_oracle/27010930/26910974 Log: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-52-43오후_1.log Patch: /media/sf_oracle/27010930/26925218 Log: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-52-43오후_1.log Patch: /media/sf_oracle/27010930/26925263 Log: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-52-43오후_1.log Patch: /media/sf_oracle/27010930/26983807 Log: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-02-01_16-52-43오후_1.log OPatchauto session completed at Thu Feb 1 17:18:12 2018 Time taken to complete the session 50 minutes, 36 seconds
5. MGMTDB 패치 적용하기
A) sqlpatch 로그 디렉토리 권한 변경
추후 datapatch를 정상적으로 진행하기 위해서는 sqlpatch 로그 디렉토리의 권한을 수정해야 합니다.
datapatch를 실행할 노드의 디렉토리만 적용해도 됩니다.
만약 grid와 database가 같은 유저로 설치되어 있다면, 이 작업은 생략해도 됩니다.
chmod -R 775 /u01/app/oracle/cfgtoollogs/sqlpatch
[root@rac1 ~]# chmod -R 775 /u01/app/oracle/cfgtoollogs/sqlpatch
B) MGMTDB 상태 확인
grid 유저로 접속해서 MGMTDB에 연결합니다.
export ORACLE_SID=-MGMTDB sqlplus / as sysdba
[grid@+ASM1 ~]$ export ORACLE_SID=-MGMTDB [grid@-MGMTDB ~]$ $GRID_HOME/bin/sqlplus / as sysdba
정상적으로 연결이 되었으며, 기존에 패치 내역이 있는지 확인합니다.
SELECT instance_name FROM v$instance; select PATCH_ID, VERSION, ACTION, STATUS, ACTION_TIME from DBA_REGISTRY_SQLPATCH;
WITH ERRORS 상태인 것으로 보아 datapatch가 제대로 적용되지 않은 것을 확인할 수 있습니다.
SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- -MGMTDB SQL> select PATCH_ID, VERSION, ACTION, STATUS, ACTION_TIME from DBA_REGISTRY_SQLPATCH; PATCH_ID VERSION ACTION STATUS ACTION_TIME ---------- -------------------- --------------- --------------- --------------------------------------------------------------------------- 26925263 12.1.0.2 APPLY WITH ERRORS 18/02/01 16:22:20.055772
C) MGMTDB에 datapatch 적용하기
grid 유저에서 MGMTDB에 대한 datapatch를 적용합니다.
반드시 ORACLE_SID가 -MGMTDB로 지정된 상태에서 수행해야 합니다.
cd $ORACLE_HOME/OPatch ./datapatch -verbose
[grid@-MGMTDB ~]$ datapatch -verbose SQL Patching tool version 12.1.0.2.0 Production on Thu Feb 1 17:21:29 2018 Copyright (c) 2012, 2017, Oracle. All rights reserved. Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_6204_2018_02_01_17_21_29/sqlpatch_invocation.log Connecting to database...OK 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 SQL patches: Bundle series DBBP: ID 180116 in the binary registry and ID 180116 with errors in PDB CDB$ROOT, ID 180116 with errors in PDB PDB$SEED, ID 180116 with errors in PDB RAC_SCAN Adding patches to installation queue and performing prereq checks... Installation queue: For the following PDBs: CDB$ROOT PDB$SEED RAC_SCAN Nothing to roll back The following patches will be applied: 26925263 (DATABASE BUNDLE PATCH 12.1.0.2.180116) Installing patches... Patch installation complete. Total patches installed: 3 Validating logfiles... Patch 26925263 apply (pdb CDB$ROOT): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_CDBROOT_2018Feb01_17_22_25.log (no errors) Patch 26925263 apply (pdb PDB$SEED): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_PDBSEED_2018Feb01_17_23_27.log (no errors) Patch 26925263 apply (pdb RAC_SCAN): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply__MGMTDB_RAC_SCAN_2018Feb01_17_23_26.log (no errors) SQL Patching tool complete on Thu Feb 1 17:25:35 2018
D) MGMTDB 패치 결과 확인
MGMTDB에 접속하여 제대로 datapatch가 적용되었는지 확인합니다.
SELECT patch_id, version, action, status, action_time FROM dba_registry_sqlpatch;
SQL> SELECT patch_id, version, action, status, action_time FROM dba_registry_sqlpatch; PATCH_ID VERSION ACTION STATUS ACTION_TIME ---------- -------------------- --------------- --------------- --------------------------------------------------------------------------- 26925263 12.1.0.2 APPLY WITH ERRORS 18/02/01 16:22:20.055772 26925263 12.1.0.2 APPLY SUCCESS 18/02/01 17:25:30.410993
6. Database 패치 적용하기
A) PDB 상태 확인 및 변경
패치를 적용할 PDB의 상태를 모두 READ WRITE 모드로 변경해 줍니다.
만약 Multitenent Database가 아닌 경우에는 Database를 Open 시켜 주면 됩니다.
SELECT name, open_mode FROM v$pdbs; ALTER PLUGGABLE DATABASE ALL OPEN; SELECT name, open_mode FROM v$pdbs;
SQL> SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY RACPDB MOUNTED SQL> ALTER PLUGGABLE DATABASE ALL OPEN; Pluggable database altered. SQL> SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY RACPDB READ WRITE
B) Database에 datapatch 적용하기
oracle 유저로 database에 대한 datapatch를 적용합니다.
cd $ORACLE_HOME/OPatch ./datapatch -verbose
[oracle@racdb1 ~]$ datapatch -verbose SQL Patching tool version 12.1.0.2.0 Production on Thu Feb 1 17:31:18 2018 Copyright (c) 2012, 2017, Oracle. All rights reserved. Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_8153_2018_02_01_17_31_18/sqlpatch_invocation.log Connecting to database...OK 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 SQL patches: Bundle series DBBP: ID 180116 in the binary registry and ID 180116 with errors in PDB CDB$ROOT, ID 180116 with errors in PDB PDB$SEED Adding patches to installation queue and performing prereq checks... Installation queue: For the following PDBs: CDB$ROOT PDB$SEED RACPDB Nothing to roll back The following patches will be applied: 26925263 (DATABASE BUNDLE PATCH 12.1.0.2.180116) Installing patches... Patch installation complete. Total patches installed: 3 Validating logfiles... Patch 26925263 apply (pdb CDB$ROOT): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply_RACDB_CDBROOT_2018Feb01_17_32_46.log (no errors) Patch 26925263 apply (pdb PDB$SEED): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply_RACDB_PDBSEED_2018Feb01_17_35_23.log (no errors) Patch 26925263 apply (pdb RACPDB): SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/26925263/21857460/26925263_apply_RACDB_RACPDB_2018Feb01_17_35_21.log (no errors) SQL Patching tool complete on Thu Feb 1 17:42:22 2018
C) Database 패치 결과 확인
패치가 정상적으로 적용되었는지 확인합니다.
SELECT patch_id, version, action, status, action_time FROM dba_registry_sqlpatch;
SQL> SELECT patch_id, version, action, status, action_time FROM dba_registry_sqlpatch; PATCH_ID VERSION ACTION STATUS ACTION_TIME ---------- -------------------- --------------- --------------- --------------------------------------------------------------------------- 26925263 12.1.0.2 APPLY WITH ERRORS 18/02/01 17:18:03.633165 26925263 12.1.0.2 APPLY SUCCESS 18/02/01 17:42:02.037427