{"id":915,"date":"2022-03-21T20:01:43","date_gmt":"2022-03-21T23:01:43","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=915"},"modified":"2022-04-05T19:34:52","modified_gmt":"2022-04-05T22:34:52","slug":"21c-zero-downtime-oracle-grid-infrastructure-patching","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/","title":{"rendered":"21c, Zero-Downtime Oracle Grid Infrastructure Patching"},"content":{"rendered":"<p style=\"text-align: justify;\">Oracle 21c delivered a lot of new features and for Grid infrastructure one of the most interesting is the zero-downtime patch (<em>zeroDowntimeGIPatching<\/em>). This basically allows your database continues to be running while you patch\/upgrade your GI. The official doc can be seen <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/cwlin\/about-zero-downtime-gi-patching.html#GUID-253CF841-DAAD-4B13-A1F2-6F83EF3FDE47\" target=\"_blank\" rel=\"noopener\">here<\/a>. Let\u2019s say that is an evolution of the Out of Place (OOP) patch for GI.<\/p>\n<p style=\"text-align: justify;\">In this post I will show how to do that, but some details before starting:<\/p>\n<ul style=\"text-align: justify;\">\n<li>This post shows how to do the zero-downtime patch using GUI mode.<\/li>\n<li>I will do another post showing how to do in silent mode the same procedure. So, it can be automatized.<\/li>\n<li>In a third post, I will detail how the zero-downtime works behind the scenes and will discuss some logs.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h1 style=\"text-align: justify;\">Current Environment<\/h1>\n<p style=\"text-align: justify;\">My current environment is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>OEL 8.4 Kernel 5.4.17-2102.201.3.el8uek.x86_64.<\/li>\n<li>Oracle GI 21c, version 21.3 with no one-off or patches installed.<\/li>\n<li>Oracle Database 21c, RU 21.5 (with OCW 21.5).<\/li>\n<li>TFA version is 21.4 (last available at March 2022).<\/li>\n<li>Nodes are not using Transparent HugePages.<\/li>\n<li>Is a RAC installation, with two nodes.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">You can see the output for the info above in <a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2022\/03\/Current-Environment-GI-21c-OOP-ZDP.txt\" target=\"_blank\" rel=\"noopener\">this txt file<\/a>.<\/p>\n<p style=\"text-align: justify;\">And I will apply the RU 21.5 (21.5.0.0.220118) for GI which is patch <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/PatchDetail?patchId=33531909&amp;requestId=24484590\" target=\"_blank\" rel=\"noopener\">33531909<\/a>.<\/p>\n<h1 style=\"text-align: justify;\">ACFS and AFD kernel drivers (pre-patch)<\/h1>\n<p><strong>&nbsp; &#8212; Please read my post dedicated to ACFS and AFD Kernel drivers <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-updateosfiles-after-grid-infrastructure-patch\/\" target=\"_blank\" rel=\"noopener\">here<\/a> &#8212;<\/strong><\/p>\n<p style=\"text-align: justify;\">One important detail for the patch process is to be aware that probably the RU will include new kernel drivers for ACFS, AFD, and even asmlib. But if we update directly (and do not take care of that), the new drivers will be installed at the system and the CRS will not start without a complete reboot of the system. And since we want to have zero database downtime here, this will not work. So, I will show you how to do this correctly too.<\/p>\n<p style=\"text-align: justify;\">My system is using ASM filter (AFD) so it is installed kernel modules for the 21.3 version at both nodes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Checking the current AFD and ACFS drivers at node 01\r\n#  \r\n##################################################################################\r\n[grid@oel8n1-21c ~]$ acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 210701.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.3.0.0.0).\r\nACFS-9547:     Driver available build number = 210701.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.3.0.0.0).\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$ \/u01\/app\/21.0.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 210701.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 210701.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[grid@oel8n1-21c ~]$\r\n\r\n\r\n##################################################################################\r\n#\r\n#Checking the current AFD and ACFS drivers at node 02\r\n#  \r\n##################################################################################\r\n[grid@oel8n2-21c ~]$ \/u01\/app\/21.0.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 210701.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.3.0.0.0).\r\nACFS-9547:     Driver available build number = 210701.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.3.0.0.0).\r\n[grid@oel8n2-21c ~]$\r\n[grid@oel8n2-21c ~]$ \/u01\/app\/21.0.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 210701.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 210701.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[grid@oel8n2-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">As you can see above, my drivers for both nodes are 21.3. And we can check this using the CRS as well:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Check the current ACFS and AFD drivers version for all nodes\r\n#  \r\n##################################################################################\r\n[grid@oel8n1-21c ~]$ crsctl query driver activeversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$ crsctl query driver softwareversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\n[grid@oel8n1-21c ~]$<\/pre>\n<h1 style=\"text-align: justify;\">Patch Process<\/h1>\n<h2 style=\"text-align: justify;\">Unzip files and OPatch<\/h2>\n<p style=\"text-align: justify;\">The files that you will need are:<\/p>\n<ul style=\"text-align: justify;\">\n<li>The base version of GI 21.3.<\/li>\n<li>GI RU 21.5.<\/li>\n<li>The latest version of OPatch for 21c.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The process starts creating (at all nodes) the folder that will store the GI (be careful with the ownership):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Creating the new directories for GI at node01\r\n#  \r\n##################################################################################\r\n[root@oel8n1-21c ~]# mkdir -p \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n1-21c ~]# chown grid \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n1-21c ~]# chgrp -R oinstall \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n1-21c ~]#\r\n\r\n##################################################################################\r\n#\r\n#Creating the new directories for GI at node02\r\n#  \r\n##################################################################################\r\n[root@oel8n2-21c ~]# mkdir -p \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n2-21c ~]# chown grid \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n2-21c ~]# chgrp -R oinstall \/u01\/app\/21.5.0.0\/grid\r\n[root@oel8n2-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And after that, <strong>with the GI home user<\/strong>, we can unzip version 21.3 at the new folder (<strong>only at the first node<\/strong>):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Unzip the binaries as GRID user at node01\r\n#  \r\n##################################################################################\r\n[root@oel8n1-21c ~]# su - grid\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$\r\n[grid@oel8n1-21c ~]$ cd \/u01\/install\/21.5\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$ unzip -q V1011504-01.zip -d \/u01\/app\/21.5.0.0\/grid\r\n[grid@oel8n1-21c 21.5]$<\/pre>\n<p style=\"text-align: justify;\">After that we can update the OPatch at the new unzipped GI home:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Updating opatch with the last version for 21c\r\n#  \r\n##################################################################################\r\n[grid@oel8n1-21c 21.5]$ cp -R \/u01\/app\/21.5.0.0\/grid\/OPatch .\/OPatch-ORG\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$ unzip -q p6880880_210000_Linux-x86-64.zip -d \/u01\/app\/21.5.0.0\/grid\r\nreplace \/u01\/app\/21.5.0.0\/grid\/OPatch\/README.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$ \/u01\/app\/21.5.0.0\/grid\/OPatch\/opatch version\r\nOPatch Version: 12.2.0.1.28\r\n\r\nOPatch succeeded.\r\n[grid@oel8n1-21c 21.5]$<\/pre>\n<p style=\"text-align: justify;\">Now, we can unzip the RU (as GI user) at his own dedicated folder at node 01 (not at the GI home):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Continuing to unzip the files (now the patch 21.5)\r\n#  \r\n##################################################################################\r\n[grid@oel8n1-21c 21.5]$ pwd\r\n\/u01\/install\/21.5\r\n[grid@oel8n1-21c 21.5]$\r\n[grid@oel8n1-21c 21.5]$ unzip -q p33531909_210000_Linux-x86-64.zip\r\n[grid@oel8n1-21c 21.5]$<\/pre>\n<p>At his moment we have:<\/p>\n<ul>\n<li>21.3 GI installed and running at \/u01\/app\/21.0.0.0<\/li>\n<li>21.3 GI unzipped at \/u01\/app\/21.5.0.0<\/li>\n<li>OPatch 12.2.0.1.28 unzipped at \/u01\/app\/21.5.0.0<\/li>\n<li>21.5 RU unzipped at \/u01\/install\/21.5\/33531909<\/li>\n<\/ul>\n<h2>Running systems<\/h2>\n<p>Before starting the patch, I would like to show the current running systems. We have:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#This show the current SMOM and the Listeners running at node 01.\r\n#PLEASE look the times that they started to run\r\n#  \r\n##################################################################################\r\n[root@oel8n1-21c 21.5]# date\r\nSat Mar 12 21:10:42 CET 2022\r\n[root@oel8n1-21c 21.5]#\r\n[root@oel8n1-21c 21.5]# ps -ef |grep smon\r\nroot        3292       1  1 17:50 ?        00:02:05 \/u01\/app\/21.0.0.0\/grid\/bin\/osysmond.bin\r\ngrid        4171       1  0 17:51 ?        00:00:00 asm_smon_+ASM1\r\noracle    173111       1  0 21:06 ?        00:00:00 ora_smon_orcl21c1\r\nroot      176337   10902  0 21:10 pts\/0    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c 21.5]#\r\n[root@oel8n1-21c 21.5]# ps -ef |grep lsnr\r\ngrid        5411       1  0 17:51 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid        5516       1  0 17:51 ?        00:00:05 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid        5611       1  0 17:51 ?        00:00:04 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\ngrid        5629       1  0 17:51 ?        00:00:05 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\nroot      176390   10902  0 21:10 pts\/0    00:00:00 grep --color=auto lsnr\r\n[root@oel8n1-21c 21.5]#\r\n[root@oel8n1-21c 21.5]# date\r\nSat Mar 12 21:10:56 CET 2022\r\n[root@oel8n1-21c 21.5]#\r\n\r\n##################################################################################\r\n#\r\n#This show the current SMON and the Listeners running at node 02.\r\n#PLEASE look the times that they started to run\r\n#  \r\n##################################################################################\r\n[root@oel8n2-21c ~]# date\r\nSat Mar 12 21:11:18 CET 2022\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# ps -ef |grep smon\r\nroot        3045       1  0 17:50 ?        00:01:42 \/u01\/app\/21.0.0.0\/grid\/bin\/osysmond.bin\r\ngrid       20878       1  0 17:53 ?        00:00:00 asm_smon_+ASM2\r\noracle    218419       1  0 21:06 ?        00:00:00 ora_smon_orcl21c2\r\nroot      221493  221424  0 21:11 pts\/1    00:00:00 grep --color=auto smon\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# ps -ef |grep lsnr\r\ngrid        5843       1  0 17:52 ?        00:00:13 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid       18182       1  0 17:53 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid       18706       1  0 17:53 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\nroot      221659  221424  0 21:11 pts\/1    00:00:00 grep --color=auto lsnr\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# date\r\nSat Mar 12 21:11:34 CET 2022\r\n[root@oel8n2-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">As you can see above the database started around 21:06 at both nodes, and the listeners are running since 17:50 more or less. Please remember these timeframes for the next steps.<\/p>\n<p style=\"text-align: justify;\">As an example, I created one table in the database and left two scripts running:<\/p>\n<ul style=\"text-align: justify;\">\n<li>The first is one loop that connects at the database using scan and inserts at the table and saves the instances from where it connects. This simulates connections that are coming from the applications side and are load-balanced by the listener and sometimes go to node01 and other to node02. During the patch you will see that node being patched does not receive connection due to listener restart.<\/li>\n<li>The second example is an open connection at instance 01, and this runs a PL\/SQL. This simulates one established connection at the database and you will see that it continues to run uninterrupted even during the GI patch.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The scripts:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@orcloel7 ~]$ for i in {1..100000}\r\n&gt; do\r\n&gt; echo \"Insert Data $i \"`date +%d-%m-%Y-%H%M%S`\r\n&gt; sqlplus -s sys\/oracle@oel8-21c-scan.oralocal\/PDB21C as sysdba&lt;&lt;EOF\r\n&gt; set heading on feedback on;\r\n&gt; insert into t1(c1, c2, c3) values (SYS_CONTEXT ('USERENV', 'INSTANCE'), 'Loop - EZconnect', sysdate);            &gt; commit;\r\n&gt; EOF\r\n&gt; done\r\nInsert Data 1 12-03-2022-214357\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 2 12-03-2022-214358\r\n\u2026\r\n\u2026\r\n\r\n\r\n[oracle@oel8n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Sat Mar 12 21:49:04 2022\r\nVersion 21.5.0.0.0\r\n\r\nCopyright (c) 1982, 2021, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.5.0.0.0\r\n\r\nSQL&gt; alter session set container = PDB21C;\r\n\r\nSession altered.\r\n\r\nSQL&gt; SET SERVEROUTPUT ON\r\nSQL&gt; DECLARE\r\n  2      lDatMax DATE := (sysdate + 40\/1440);\r\n  3  BEGIN\r\n  4      WHILE (sysdate &lt;= (lDatMax)) LOOP\r\n  5          insert into t1(c1, c2, c3) values (SYS_CONTEXT ('USERENV', 'INSTANCE'), 'Loop - Sqlplus', sysdate);\r\n  6          commit;\r\n  7          dbms_session.sleep(0.5);\r\n  8      END LOOP;\r\n  9  END;\r\n 10  \/\r\n<\/pre>\n<p>After some time running them, we have:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; select count(*), c1, c2, to_char(max(c3), 'DD\/MM\/RRRR HH24:MI:SS') as last_ins, to_char(min(c3), 'DD\/MM\/RRRR HH24:MI:SS') as first_ins from t1 group by c1, c2;\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n       903          2 Loop - EZconnect               12\/03\/2022 21:50:47 12\/03\/2022 21:43:58\r\n      1239          1 Loop - EZconnect               12\/03\/2022 21:50:47 12\/03\/2022 21:44:07\r\n        27          1 Loop - Sqlplus                 12\/03\/2022 21:50:46 12\/03\/2022 21:50:33\r\n\r\nSQL&gt;\r\nSQL&gt; \/\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1395          2 Loop - EZconnect               12\/03\/2022 21:52:25 12\/03\/2022 21:43:58\r\n      1349          1 Loop - EZconnect               12\/03\/2022 21:52:20 12\/03\/2022 21:44:07\r\n       223          1 Loop - Sqlplus                 12\/03\/2022 21:52:25 12\/03\/2022 21:50:33\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">So, you can see that are inserts from EZConnect at both instances, and from Sqlplus just instance 01.<\/p>\n<h2 style=\"text-align: justify;\">Patching<\/h2>\n<p style=\"text-align: justify;\">To call the patch, we just use the <strong>griSetup.sh<\/strong> and pass the parameters:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>applyRU<\/strong>: This will apply the RU patch over the current home before starting the installation of the GI itself.<\/li>\n<li><strong>switchGridHome<\/strong>: This informs the install process that the GI will move from the older home to the new one. Is basically the OOP.<\/li>\n<li><strong>zeroDowntimeGIPatching<\/strong>: This is the new feature and informs the patch process that databases will continue to be run.<\/li>\n<li><strong>skipDriverUpdate<\/strong>: This set to not install the kernel modules directly. They will be at GI home but not applied. My hint is: always assume that the GI patch will update the kernel drivers. So, always call using this option to avoid unexpected problems.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">To call the patch we do (as GI owner):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[grid@oel8n1-21c 21.5]$ cd \/u01\/app\/21.5.0.0\/grid\r\n[grid@oel8n1-21c grid]$\r\n[grid@oel8n1-21c grid]$ unset ORACLE_BASE\r\n[grid@oel8n1-21c grid]$ unset ORACLE_HOME\r\n[grid@oel8n1-21c grid]$ unset ORACLE_SID\r\n[grid@oel8n1-21c grid]$\r\n[grid@oel8n1-21c grid]$\r\n[grid@oel8n1-21c grid]$ .\/gridSetup.sh -applyRU \/u01\/install\/21.5\/33531909 -switchGridHome -zeroDowntimeGIPatching -skipDriverUpdate\r\nERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.\r\nPreparing the home to patch...\r\nApplying the patch \/u01\/install\/21.5\/33531909...\r\nSuccessfully applied the patch.\r\nThe log can be found at: \/u01\/app\/oraInventory\/logs\/GridSetupActions2022-03-12_09-30-52PM\/installerPatchActions_2022-03-12_09-30-52PM.log\r\nLaunching Oracle Grid Infrastructure Setup Wizard...\r\n<\/pre>\n<p><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-865\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\" alt=\"\" width=\"470\" height=\"269\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png 470w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01-300x172.png 300w\" sizes=\"auto, (max-width: 470px) 100vw, 470px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Calling this the GUI interface will appear and the commands are basically Next\/Next\/Finish. Look at the gallery below (you can open each image in a new windows to see all the details):<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">This slideshow requires JavaScript.<\/p><div id=\"gallery-915-1-slideshow\" class=\"jetpack-slideshow-window jetpack-slideshow jetpack-slideshow-black\" data-trans=\"fade\" data-autostart=\"1\" data-gallery=\"[{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-01.png&quot;,&quot;id&quot;:&quot;917&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-01&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-02.png&quot;,&quot;id&quot;:&quot;918&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-02&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-03.png&quot;,&quot;id&quot;:&quot;919&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-03&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-04.png&quot;,&quot;id&quot;:&quot;920&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-04&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-05.png&quot;,&quot;id&quot;:&quot;921&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-05&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-06.png&quot;,&quot;id&quot;:&quot;922&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-06&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-07.png&quot;,&quot;id&quot;:&quot;923&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-07&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-08.png&quot;,&quot;id&quot;:&quot;924&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-08&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-09.png&quot;,&quot;id&quot;:&quot;925&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-09&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-10.png&quot;,&quot;id&quot;:&quot;926&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-10&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/03\\\/GI-OOP-ZDT-11.png&quot;,&quot;id&quot;:&quot;927&quot;,&quot;title&quot;:&quot;GI-OOP-ZDT-11&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;}]\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><\/div>\n<p style=\"text-align: justify;\">The installation will request to call the root.sh in each node. So, for node01 I called the root.sh (please connect using administrative network interface and not from one virtual interface linked with CRS), and this was the output (it started at 21:52 and finished around 21:57):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/root.sh\r\nPerforming root user operation.\r\n\r\nThe following environment variables are set as:\r\n    ORACLE_OWNER= grid\r\n    ORACLE_HOME=  \/u01\/app\/21.5.0.0\/grid\r\n\r\nEnter the full pathname of the local bin directory: [\/usr\/local\/bin]:\r\nThe contents of \"dbhome\" have not changed. No need to overwrite.\r\nThe contents of \"oraenv\" have not changed. No need to overwrite.\r\nThe contents of \"coraenv\" have not changed. No need to overwrite.\r\n\r\nEntries will be added to the \/etc\/oratab file as needed by\r\nDatabase Configuration Assistant when a database is created\r\nFinished running generic part of root script.\r\nNow product-specific root actions will be performed.\r\nRelinking oracle with rac_on option\r\nLD_LIBRARY_PATH='\/u01\/app\/21.0.0.0\/grid\/lib:\/u01\/app\/21.5.0.0\/grid\/lib:'\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n1-21c\/crsconfig\/rootcrs_oel8n1-21c_2022-03-12_09-52-40PM.log\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n1-21c\/crsconfig\/crs_prepatch_apply_oop_oel8n1-21c_2022-03-12_09-52-41PM.log\r\nThis software is \"247\" days old. It is a best practice to update the CRS home by downloading and applying the latest release update. Refer to MOS note 2731675.1 for more details.\r\n\r\n Performing following verification checks ...\r\n\r\n   cluster upgrade state ...PASSED\r\n   OLR Integrity ...PASSED\r\n   Hosts File ...PASSED\r\n   Free Space: oel8n1-21c:\/ ...PASSED\r\n   Free Space: oel8n2-21c:\/ ...PASSED\r\n\r\n Pre-check for Patch Application was successful.\r\n\r\n CVU operation performed:      stage -pre patch\r\n Date:                         Mar 12, 2022 9:52:43 PM\r\n Clusterware version:          21.0.0.0.0\r\n CVU home:                     \/u01\/app\/21.0.0.0\/grid\r\n Grid home:                    \/u01\/app\/21.0.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2102.201.3.el8uek.x86_64\r\n\r\n2022\/03\/12 21:53:17 CLSRSC-347: Successfully unlock \/u01\/app\/21.5.0.0\/grid\r\n2022\/03\/12 21:53:17 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n1-21c\/crsconfig\/crs_postpatch_apply_oop_oel8n1-21c_2022-03-12_09-53-18PM.log\r\nOracle Clusterware active version on the cluster is [21.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [0].\r\nCRS-1151: The cluster was successfully set to rolling patch mode.\r\n2022\/03\/12 21:53:39 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd_dummy.service'\r\n2022\/03\/12 21:54:42 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'\r\n2022\/03\/12 21:56:04 CLSRSC-4015: Performing install or upgrade action for Oracle Autonomous Health Framework (AHF).\r\n2022\/03\/12 21:56:04 CLSRSC-4012: Shutting down Oracle Autonomous Health Framework (AHF).\r\n2022\/03\/12 21:57:12 CLSRSC-4013: Successfully shut down Oracle Autonomous Health Framework (AHF).\r\nOracle Clusterware active version on the cluster is [21.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [0].\r\n2022\/03\/12 21:57:17 CLSRSC-672: Post-patch steps for patching GI home successfully completed.\r\n[root@oel8n1-21c ~]# 2022\/03\/12 21:57:43 CLSRSC-4003: Successfully patched Oracle Autonomous Health Framework (AHF).<\/pre>\n<p style=\"text-align: justify;\">After that, you can see that the database continues to be run, and the CRS\/Listener got restarted. Look below that database startup time continued the same (21:06) and the others are new:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:05:19 CET 2022\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\noracle    173111       1  0 21:06 ?        00:00:00 ora_smon_orcl21c1\r\nroot      242362       1  1 21:55 ?        00:00:08 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid      247444       1  0 21:55 ?        00:00:00 asm_smon_+ASM1\r\nroot      277152  220872  0 22:05 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]# ps -ef |grep lsnr\r\ngrid      243605       1  0 21:55 ?        00:00:02 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid      243935       1  0 21:55 ?        00:00:00 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid      243959       1  0 21:55 ?        00:00:01 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\nroot      277222  220872  0 22:05 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:05:24 CET 2022\r\n[root@oel8n1-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And if we look at node02 the database continues the same but we see that scan listeners (LISTENERR_SCAN1 and LISTENER_SCAN2) started at this node:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n2-21c ~]# date\r\nSat Mar 12 22:08:00 CET 2022\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# ps -ef |grep smon\r\nroot        3045       1  0 17:50 ?        00:02:16 \/u01\/app\/21.0.0.0\/grid\/bin\/osysmond.bin\r\ngrid       20878       1  0 17:53 ?        00:00:00 asm_smon_+ASM2\r\noracle    218419       1  0 21:06 ?        00:00:00 ora_smon_orcl21c2\r\nroot      293156  292560  0 22:08 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# ps -ef |grep lsnr\r\ngrid        5843       1  0 17:52 ?        00:00:17 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid       18182       1  0 17:53 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid      264386       1  0 21:53 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\ngrid      264403       1  0 21:53 ?        00:00:00 \/u01\/app\/21.0.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\nroot      293390  292560  0 22:08 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# date\r\nSat Mar 12 22:08:19 CET 2022\r\n[root@oel8n2-21c ~]#<\/pre>\n<p>And now we can call root.sh at node02 (it started around 22:09 and finished at 22:15):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n2-21c ~]# date\r\nSat Mar 12 22:09:21 CET 2022\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/root.sh\r\nPerforming root user operation.\r\n\r\nThe following environment variables are set as:\r\n    ORACLE_OWNER= grid\r\n    ORACLE_HOME=  \/u01\/app\/21.5.0.0\/grid\r\n\r\nEnter the full pathname of the local bin directory: [\/usr\/local\/bin]:\r\nThe contents of \"dbhome\" have not changed. No need to overwrite.\r\nThe contents of \"oraenv\" have not changed. No need to overwrite.\r\nThe contents of \"coraenv\" have not changed. No need to overwrite.\r\n\r\nEntries will be added to the \/etc\/oratab file as needed by\r\nDatabase Configuration Assistant when a database is created\r\nFinished running generic part of root script.\r\nNow product-specific root actions will be performed.\r\nRelinking oracle with rac_on option\r\nLD_LIBRARY_PATH='\/u01\/app\/21.0.0.0\/grid\/lib:\/u01\/app\/21.5.0.0\/grid\/lib:'\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n2-21c\/crsconfig\/rootcrs_oel8n2-21c_2022-03-12_10-10-52PM.log\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n2-21c\/crsconfig\/crs_prepatch_apply_oop_oel8n2-21c_2022-03-12_10-10-53PM.log\r\nThis software is \"247\" days old. It is a best practice to update the CRS home by downloading and applying the latest release update. Refer to MOS note 2731675.1 for more details.\r\n\r\n Performing following verification checks ...\r\n\r\n   cluster upgrade state ...PASSED\r\n   OLR Integrity ...PASSED\r\n   Hosts File ...PASSED\r\n   Free Space: oel8n1-21c:\/ ...PASSED\r\n   Free Space: oel8n2-21c:\/ ...PASSED\r\n\r\n Pre-check for Patch Application was successful.\r\n\r\n CVU operation performed:      stage -pre patch\r\n Date:                         Mar 12, 2022 10:10:56 PM\r\n Clusterware version:          21.0.0.0.0\r\n CVU home:                     \/u01\/app\/21.0.0.0\/grid\r\n Grid home:                    \/u01\/app\/21.0.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2102.201.3.el8uek.x86_64\r\n\r\n2022\/03\/12 22:11:17 CLSRSC-347: Successfully unlock \/u01\/app\/21.5.0.0\/grid\r\n2022\/03\/12 22:11:18 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n2-21c\/crsconfig\/crs_postpatch_apply_oop_oel8n2-21c_2022-03-12_10-11-19PM.log\r\nOracle Clusterware active version on the cluster is [21.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [0].\r\nCRS-1152: The cluster is in rolling patch mode.\r\nCRS-4000: Command Start failed, or completed with errors.\r\n2022\/03\/12 22:11:37 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd_dummy.service'\r\n2022\/03\/12 22:12:35 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'\r\n2022\/03\/12 22:14:03 CLSRSC-4015: Performing install or upgrade action for Oracle Autonomous Health Framework (AHF).\r\n2022\/03\/12 22:14:03 CLSRSC-4012: Shutting down Oracle Autonomous Health Framework (AHF).\r\n2022\/03\/12 22:15:09 CLSRSC-4013: Successfully shut down Oracle Autonomous Health Framework (AHF).\r\nOracle Clusterware active version on the cluster is [21.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [1452993786].\r\n\r\n Performing following verification checks ...\r\n\r\n   cluster upgrade state ...PASSED\r\n\r\n Post-check for Patch Application was successful.\r\n\r\n CVU operation performed:      stage -post patch\r\n Date:                         Mar 12, 2022 10:15:25 PM\r\n Clusterware version:          21.0.0.0.0\r\n CVU home:                     \/u01\/app\/21.5.0.0\/grid\r\n Grid home:                    \/u01\/app\/21.5.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2102.201.3.el8uek.x86_64\r\n\r\n2022\/03\/12 22:15:56 CLSRSC-672: Post-patch steps for patching GI home successfully completed.\r\n[root@oel8n2-21c ~]# 2022\/03\/12 22:15:59 CLSRSC-4003: Successfully patched Oracle Autonomous Health Framework (AHF).<\/pre>\n<p style=\"text-align: justify;\">And we can see that neither node01 nor node02 the database restarted:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:45:59 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\noracle    173111       1  0 21:06 ?        00:00:00 ora_smon_orcl21c1\r\nroot      242362       1  1 21:55 ?        00:00:33 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid      247444       1  0 21:55 ?        00:00:00 asm_smon_+ASM1\r\nroot      348370  220872  0 22:46 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]# ps -ef |grep lsnr\r\ngrid      243605       1  0 21:55 ?        00:00:07 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid      243935       1  0 21:55 ?        00:00:00 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid      289735       1  0 22:11 ?        00:00:00 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\ngrid      289757       1  0 22:11 ?        00:00:00 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\nroot      348397  220872  0 22:46 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:46:10 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n\r\n[root@oel8n2-21c ~]# date\r\nSat Mar 12 22:46:21 CET 2022\r\n[root@oel8n2-21c ~]# ps -ef |grep smon\r\noracle    218419       1  0 21:06 ?        00:00:00 ora_smon_orcl21c2\r\nroot      316071       1  0 22:13 ?        00:00:19 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid      317880       1  0 22:13 ?        00:00:00 asm_smon_+ASM2\r\nroot      366229  292560  0 22:46 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n2-21c ~]# ps -ef |grep lsnr\r\ngrid      317058       1  0 22:13 ?        00:00:03 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid      317269       1  0 22:13 ?        00:00:00 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid      317509       1  0 22:13 ?        00:00:03 \/u01\/app\/21.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\nroot      366234  292560  0 22:46 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@oel8n2-21c ~]# date\r\nSat Mar 12 22:46:28 CET 2022\r\n[root@oel8n2-21c ~]#\r\n<\/pre>\n<p style=\"text-align: justify;\">Remember the two inserts that I left running before? So, one example is that around 21:54 (while the root.sh from node01 was running) you can see that just database was running at node01 and that the inserts from sqlplus that was connected at node01 continue to insert data. And that just instance 02 was receiving connections using EZConnect from scan listener. This show that the database continues to run and insert database at node01 even without ASM\/CRS (look at the column LAST_INS that is a date column taken from the insert statement):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# date\r\nSat Mar 12 21:54:37 CET 2022\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\nroot        3292       1  1 17:50 ?        00:02:34 \/u01\/app\/21.0.0.0\/grid\/bin\/osysmond.bin\r\noracle    173111       1  0 21:06 ?        00:00:00 ora_smon_orcl21c1\r\nroot      231277  220872  0 21:54 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]# ps -ef |grep lsnr\r\nroot      231765  220872  0 21:54 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 21:54:41 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n\r\n\r\nSQL&gt; select count(*), c1, c2, to_char(max(c3), 'DD\/MM\/RRRR HH24:MI:SS') as last_ins, to_char(min(c3), 'DD\/MM\/RRRR HH24:MI:SS') as first_ins from t1 group by c1, c2;\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1878          2 Loop - EZconnect               12\/03\/2022 21:53:50 12\/03\/2022 21:43:58\r\n      1353          1 Loop - EZconnect               12\/03\/2022 21:53:15 12\/03\/2022 21:44:07\r\n       428          1 Loop - Sqlplus                 12\/03\/2022 21:54:09 12\/03\/2022 21:50:33\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1878          2 Loop - EZconnect               12\/03\/2022 21:53:50 12\/03\/2022 21:43:58\r\n      1353          1 Loop - EZconnect               12\/03\/2022 21:53:15 12\/03\/2022 21:44:07\r\n       500          1 Loop - Sqlplus                 12\/03\/2022 21:54:45 12\/03\/2022 21:50:33\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1878          2 Loop - EZconnect               12\/03\/2022 21:53:50 12\/03\/2022 21:43:58\r\n      1353          1 Loop - EZconnect               12\/03\/2022 21:53:15 12\/03\/2022 21:44:07\r\n       503          1 Loop - Sqlplus                 12\/03\/2022 21:54:46 12\/03\/2022 21:50:33\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1878          2 Loop - EZconnect               12\/03\/2022 21:53:50 12\/03\/2022 21:43:58\r\n      1353          1 Loop - EZconnect               12\/03\/2022 21:53:15 12\/03\/2022 21:44:07\r\n       506          1 Loop - Sqlplus                 12\/03\/2022 21:54:48 12\/03\/2022 21:50:33\r\n\r\nSQL&gt; l\r\n  1* select count(*), c1, c2, to_char(max(c3), 'DD\/MM\/RRRR HH24:MI:SS') as last_ins, to_char(min(c3), 'DD\/MM\/RRRR HH24:MI:SS') as first_ins from t1 group by c1, c2\r\nSQL&gt; \/\r\n\r\n  COUNT(*)         C1 C2                             LAST_INS            FIRST_INS\r\n---------- ---------- ------------------------------ ------------------- -------------------\r\n      1879          2 Loop - EZconnect               12\/03\/2022 21:54:50 12\/03\/2022 21:43:58\r\n      1353          1 Loop - EZconnect               12\/03\/2022 21:53:15 12\/03\/2022 21:44:07\r\n       516          1 Loop - Sqlplus                 12\/03\/2022 21:54:53 12\/03\/2022 21:50:33\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">The full output from the inserts can be seen in <a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2022\/03\/Steps-Full-Ins-Executed-and-Description-GOLD_at_12-Mar-2022.txt\" target=\"_blank\" rel=\"noopener\">this file<\/a>, and <a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2022\/03\/Steps-Ins-Executed-and-Description-GOLD_at_12-Mar-2022.txt\" target=\"_blank\" rel=\"noopener\">here<\/a>. You can see that no errors were got during the root.sh call (check the LAST_INS column). I recommend that you look above the root.sh execution from both nodes (check the times at output) and find inside of the file to match the times and check that no errors were reported due to bad connection or database unavailability.<\/p>\n<h1 style=\"text-align: justify;\">ACFS and AFD kernel drivers (pos-patch)<\/h1>\n<p style=\"text-align: justify;\"><strong>&nbsp; &#8212; Please read my post dedicated to ACFS and AFD Kernel drivers <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-updateosfiles-after-grid-infrastructure-patch\/\" target=\"_blank\" rel=\"noopener\">here<\/a> &#8212;<\/strong><\/p>\n<p style=\"text-align: justify;\">Since we called the GI patch with the option <em>skipDriverUpdate<\/em> the ACFS and AFD was not updated. In my environment just the AFD is in use, so, the result is:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#You can see that ACFS and AFD are in different versions\r\n#This is expected because the AFD was not uploaded at kernel as requested - node01\r\n#  \r\n##################################################################################\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 211031.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.4.0.0.0).\r\nACFS-9547:     Driver available build number = 211031.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.4.0.0.0).\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 210701.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 211031.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n\r\n##################################################################################\r\n#\r\n#You can see that ACFS and AFD are in different versions\r\n#This is expected because the AFD was not uploaded at kernel as requested - node02\r\n#  \r\n##################################################################################\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 211031.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.4.0.0.0).\r\nACFS-9547:     Driver available build number = 211031.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.4.0.0.0).\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 210701.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 211031.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[root@oel8n2-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And if we check at CRS we can see that it knows that the active version is 21.3 for AFD (version 210701) and 21.4 for ACFS (version 211031). But it knows too that the available version for both (inside GI home for 21.5) is the last version (the 21.4, version 211031):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">##################################################################################\r\n#\r\n#Check the current ACFS and AFD drivers version for all nodes\r\n#  \r\n##################################################################################\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver activeversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver softwareversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\n[root@oel8n1-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And as an example, even if I restart one node (node01) you can see that the ASM\/CRS restart and the old driver continues to be used at kernel level:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# uptime\r\n 22:49:47 up  5:00,  3 users,  load average: 1.02, 1.36, 1.60\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# reboot\r\nlogin as: root\r\nroot@10.160.10.70's password:\r\nActivate the web console with: systemctl enable --now cockpit.socket\r\n\r\nLast login: Sat Mar 12 22:53:39 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:54:03 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\nroot        3651       1  2 22:52 ?        00:00:02 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        4814       1  0 22:53 ?        00:00:00 asm_smon_+ASM1\r\noracle      6437       1  0 22:53 ?        00:00:00 ora_smon_orcl21c1\r\nroot        7070    6589  0 22:54 pts\/0    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:54:22 CET 2022\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 211031.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.4.0.0.0).\r\nACFS-9547:     Driver available build number = 211031.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.4.0.0.0).\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 210701.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 211031.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver activeversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\n[root@oel8n1-21c ~]#<\/pre>\n<p>So, the solution, in this case, is to follow the documentation (<a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/cwlin\/about-zero-downtime-gi-patching.html#GUID-253CF841-DAAD-4B13-A1F2-6F83EF3FDE47\" target=\"_blank\" rel=\"noopener\">here<\/a>) and call the <strong><em>rootcrs.sh<\/em><\/strong> with the parameter <strong><em>updateosfiles<\/em><\/strong>. The installation is easy and needs to be done in each node in a separate way. <strong>Be aware that doing this you will need to have downtime<\/strong> because you will restart the databases and the entire CRS stack during the process. <del>And going deeper, the CRS will not start if you do not reboot the system because the kernel drivers (in the case of Linux) will not be uploaded (to memory). I have not tried with ksplice (maybe) can be used, but not tested<\/del>. &nbsp; <strong>&#8212; Please read my post dedicated to ACFS and AFD Kernel drivers <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-updateosfiles-after-grid-infrastructure-patch\/\" target=\"_blank\" rel=\"noopener\">here<\/a>, more updated information was provided.&nbsp;<\/strong><\/p>\n<p>So, at node 01 you can see that I made:<\/p>\n<ol>\n<li>Stop instance 01 of database and left just ASM running.<\/li>\n<li>Called the <em>rootcrs.sh <\/em><em>-updateosfiles<\/em> from GI 21.5 (after that you can see that CRS stack came down).<\/li>\n<li>Reboot the server and check that ASM became up.<\/li>\n<li>Validated that AFD driver was updated from 210701 to 211031.<\/li>\n<li>Checked that CRS detected that just node01 got updated the drivers.<\/li>\n<\/ol>\n<p>All of this output you can see below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# su - oracle\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ export ORACLE_HOME=\/u01\/app\/oracle\/product\/21.5.0.0\/dbhome_1\r\n[oracle@oel8n1-21c ~]$ export PATH=$ORACLE_HOME\/bin:$PATH\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ srvctl status database -d orcl21c\r\nInstance orcl21c1 is running on node oel8n1-21c\r\nInstance orcl21c2 is running on node oel8n2-21c\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ srvctl stop instance -d orcl21c -i orcl21c1 -o immediate\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ exit\r\nlogout\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:56:42 CET 2022\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\nroot        3651       1  1 22:52 ?        00:00:03 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        4814       1  0 22:53 ?        00:00:00 asm_smon_+ASM1\r\nroot        8359    6589  0 22:56 pts\/0    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 22:56:48 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/crs\/install\/rootcrs.sh -updateosfiles\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n1-21c\/crsconfig\/crsupdate_osfiles_oel8n1-21c_2022-03-12_10-57-12PM.log\r\n2022\/03\/12 22:57:15 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\nroot       14675    6589  0 23:00 pts\/0    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# reboot\r\nlogin as: root\r\nroot@10.160.10.70's password:\r\nActivate the web console with: systemctl enable --now cockpit.socket\r\n\r\nLast login: Sat Mar 12 23:08:17 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# ps -ef |grep smon\r\nroot        3850       1  2 23:07 ?        00:00:02 \/u01\/app\/21.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        5257       1  0 23:08 ?        00:00:00 asm_smon_+ASM1\r\nroot        6831    6568  0 23:08 pts\/0    00:00:00 grep --color=auto smon\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# date\r\nSat Mar 12 23:09:00 CET 2022\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 211031.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.4.0.0.0).\r\nACFS-9547:     Driver available build number = 211031.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.4.0.0.0).\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 211031.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 211031.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver activeversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 210701\r\nBuildVersion : 21.0.0.0.0 (21.3.0.0.0)\r\n\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]# su - oracle\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ srvctl start instance -d orcl21c -i orcl21c1\r\n[oracle@oel8n1-21c ~]$\r\n[oracle@oel8n1-21c ~]$ logout\r\n[root@oel8n1-21c ~]#\r\n[root@oel8n1-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And after node01, we can do the same at node02:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n2-21c ~]# su - oracle\r\n[oracle@oel8n2-21c ~]$\r\n[oracle@oel8n2-21c ~]$ srvctl status database -d orcl21c\r\nInstance orcl21c1 is running on node oel8n1-21c\r\nInstance orcl21c2 is running on node oel8n2-21c\r\n[oracle@oel8n2-21c ~]$\r\n[oracle@oel8n2-21c ~]$ srvctl stop instance -d orcl21c -i orcl21c2 -o immediate\r\n[oracle@oel8n2-21c ~]$\r\n[oracle@oel8n2-21c ~]$ logout\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/crs\/install\/rootcrs.sh -updateosfiles\r\nUsing configuration parameter file: \/u01\/app\/21.5.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/oel8n2-21c\/crsconfig\/crsupdate_osfiles_oel8n2-21c_2022-03-12_11-13-53PM.log\r\n2022\/03\/12 23:13:55 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# ps -ef |grep smon\r\nroot      411611  292560  0 23:17 pts\/3    00:00:00 grep --color=auto smon\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \r\n[root@oel8n2-21c ~]# reboot\r\nlogin as: root\r\nroot@10.160.10.75's password:\r\nActivate the web console with: systemctl enable --now cockpit.socket\r\n\r\nLast login: Sat Mar 12 23:21:03 2022\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 211031.\r\nACFS-9212:     Driver build version = 21.0.0.0.0 (21.4.0.0.0).\r\nACFS-9547:     Driver available build number = 211031.\r\nACFS-9548:     Driver available build version = 21.0.0.0.0 (21.4.0.0.0).\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 211031.\r\nAFD-9212:     Driver build version = 21.0.0.0.0.\r\nAFD-9547:     Driver available build number = 211031.\r\nAFD-9548:     Driver available build version = 21.0.0.0.0.\r\n[root@oel8n2-21c ~]#\r\n[root@oel8n2-21c ~]# su - oracle\r\n[oracle@oel8n2-21c ~]$\r\n[oracle@oel8n2-21c ~]$ srvctl start instance -d orcl21c -i orcl21c2\r\n[oracle@oel8n2-21c ~]$\r\n[oracle@oel8n2-21c ~]$ exit\r\nlogout\r\n[root@oel8n2-21c ~]#<\/pre>\n<p style=\"text-align: justify;\">And after that we can see that all nodes are updated with AFD and ACFS drivers:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver softwareversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\n[root@oel8n1-21c ~]# \/u01\/app\/21.5.0.0\/grid\/bin\/crsctl query driver softwareversion -all\r\nNode Name : oel8n1-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n1-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : ACFS\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\nNode Name : oel8n2-21c\r\nDriver Name : AFD\r\nBuildNumber : 211031\r\nBuildVersion : 21.0.0.0.0 (21.4.0.0.0)\r\n\r\n[root@oel8n1-21c ~]#<\/pre>\n<h1>Conclusion<\/h1>\n<p style=\"text-align: justify;\">The Zero-Downtime Oracle Grid Infrastructure Patching (<em>zeroDowntimeGIPatching<\/em>) is really interesting for GI 21c and MAA\/HA perspectives. The database continues to be running and the downtime\/outage is zero (as promised). But we need to take care of the details for ACFS and AFD drivers, if we do not use the <em>skipDriverUpdate<\/em> option when calling the gridSetup.sh the database (and the CRS will be stopped).<\/p>\n<p style=\"text-align: justify;\">One point to add is that my environment had a fresh install of the GI 21c, it does not come from an upgrade of 19c to 21c. When I tested in one environment where the GI was upgraded from 19c to 21c I got problems while calling the root.sh at the last node. The other nodes worked perfectly and the database continue to run, but at the last node, the database restarted in both nodes due to a lack of communication to write at controlfile (ORA-221). SR is open and we are working over that for more than one month.<\/p>\n<p style=\"text-align: justify;\">So, you need to take care and test in other\/similar environments before applying at your production. Oracle 21c is an Innovative Release but is always interesting to test new features that will become the basis for the next releases. If you reach here, thanks for reading the entire post (I know that was a long journey until here).<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Disclaimer<\/strong>:&nbsp;<em>\u201cThe postings on this site are my own and don\u2019t necessarily represent my actual employer positions, strategies or opinions. The information here was edited to be useful for general purpose, specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.\u201d<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle 21c delivered a lot of new features and for Grid infrastructure one of the most interesting is the zero-downtime patch (zeroDowntimeGIPatching). This basically allows your database continues to be running while you patch\/upgrade your GI. The official doc can be seen here. Let\u2019s say that is an evolution of the Out of Place (OOP) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[164,55,29,56,141,5,152,42,14,12],"tags":[166,80,165,75,65,135,124,169],"class_list":["post-915","post","type-post","status-publish","format-standard","hentry","category-21c","category-asm","category-database","category-grid-infrastructure","category-maa","category-oracle","category-patch","category-rac","category-update","category-upgrade","tag-21c","tag-asm","tag-grid-infrastructure","tag-maa","tag-oracle","tag-patch","tag-upgrade","tag-zero-downtime"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon<\/title>\n<meta name=\"description\" content=\"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-21T23:01:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-05T22:34:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\" \/>\n<meta name=\"author\" content=\"Simon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"21c, Zero-Downtime Oracle Grid Infrastructure Patching\",\"datePublished\":\"2022-03-21T23:01:43+00:00\",\"dateModified\":\"2022-04-05T22:34:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\"},\"wordCount\":1765,\"commentCount\":5,\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\",\"keywords\":[\"21c\",\"ASM\",\"Grid Infrastructure\",\"MAA\",\"Oracle\",\"Patch\",\"Upgrade\",\"Zero-Downtime\"],\"articleSection\":[\"21c\",\"ASM\",\"Database\",\"Grid Infrastructure\",\"MAA\",\"Oracle\",\"Patch\",\"RAC\",\"Update\",\"Upgrade\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\",\"name\":\"21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\",\"datePublished\":\"2022-03-21T23:01:43+00:00\",\"dateModified\":\"2022-04-05T22:34:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\",\"contentUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png\",\"width\":470,\"height\":269},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"21c, Zero-Downtime Oracle Grid Infrastructure Patching\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/\",\"name\":\"Fernando Simon\",\"description\":\"Have you hugged your backup today?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\",\"name\":\"Simon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"caption\":\"Simon\"},\"sameAs\":[\"http:\/\/www.fernandosimon.com\"],\"url\":\"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon","description":"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/","og_locale":"en_US","og_type":"article","og_title":"21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon","og_description":"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.","og_url":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/","og_site_name":"Fernando Simon","article_published_time":"2022-03-21T23:01:43+00:00","article_modified_time":"2022-04-05T22:34:52+00:00","og_image":[{"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png","type":"","width":"","height":""}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"25 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"21c, Zero-Downtime Oracle Grid Infrastructure Patching","datePublished":"2022-03-21T23:01:43+00:00","dateModified":"2022-04-05T22:34:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/"},"wordCount":1765,"commentCount":5,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png","keywords":["21c","ASM","Grid Infrastructure","MAA","Oracle","Patch","Upgrade","Zero-Downtime"],"articleSection":["21c","ASM","Database","Grid Infrastructure","MAA","Oracle","Patch","RAC","Update","Upgrade"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/","url":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/","name":"21c, Zero-Downtime Oracle Grid Infrastructure Patching - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png","datePublished":"2022-03-21T23:01:43+00:00","dateModified":"2022-04-05T22:34:52+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"Check how to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 21c. All the details, from patch until AFD and ACFS drivers.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2021\/08\/Grid-Install-01.png","width":470,"height":269},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"21c, Zero-Downtime Oracle Grid Infrastructure Patching"}]},{"@type":"WebSite","@id":"https:\/\/www.fernandosimon.com\/blog\/#website","url":"https:\/\/www.fernandosimon.com\/blog\/","name":"Fernando Simon","description":"Have you hugged your backup today?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9","name":"Simon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","caption":"Simon"},"sameAs":["http:\/\/www.fernandosimon.com"],"url":"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ofTp-eL","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/comments?post=915"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/915\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}