فایل های patch را دانلود کنید و آنها را به دایرکتوری مورد نظر بر روی سرور منتقل کنید.
به روز رسانی OPatch:
$ $ORACLE_HOME/OPatch/opatch version
$ cd /u01/source/patch/OPatch
$ cp p6880880_122010_Linux-x86-64.zip $ORACLE_HOME
$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_old/
$ unzip p6880880_122010_Linux-x86-64.zip
$ rm -rf p6880880_122010_Linux-x86-64.zip
$ $ORACLE_HOME/OPatch/opatch version
متوقف کردن سرویس دیتابیس و سرویس های وابسته:
$ lsnrctl stop
$ sqlplus / as sysdba
SQL> shutdown immediate;
$ cd /u01/source/patch/PSU
$ unzip p28163133_122010_Linux-x86-64.zip
$ cd 28163133
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
$ $ORACLE_HOME/OPatch/opatch apply
به
سوالاتی که پرسیده می شود پاسخ مثبت دهید و منتظر باشید تا patch مورد نظر
اعمال شود و در نهایت باید چیزی شبیه به خروجی زیر دریافت کنید:
Patch 28163133 successfully applied.
Log file location: /u01/oracle/product/12.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-12-02_15-41-48PM_1.log
OPatch succeeded.
برای اطمینان از اعمال patch:
$ $ORACLE_HOME/OPatch/opatch lsinventory
$ sqlplus / as sysdba
SQL> startup upgrade
برای اعمال pacth در دیتابیس:
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose
SQL> @?/rdbms/admin/utlrp.sql
SQL> shutdown immediate
SQL> startup
$ lsnrctl start
SQL> alter system register;
SQL> select * from dba_registry_sqlpatch
order by action_time desc;
چنانچه محیط شما multitenant است، سعی کنید PDB ها را باز کنید:
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 HRPDB READ WRITE YES
4 HRPDB2 READ WRITE YES
و با استفاده از دستور زیر patch را اعمال می کنیم:
$ ./datapatch -verbose -pdbs PDB\$SEED,CDB\$ROOT,HRPDB,HRPDB2
SQL> shutdown immediate
SQL> startup
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 HRPDB READ WRITE NO
4 HRPDB2 READ WRITE NO