{"id":1091,"date":"2024-10-30T19:46:58","date_gmt":"2024-10-30T22:46:58","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=1091"},"modified":"2024-10-30T19:46:58","modified_gmt":"2024-10-30T22:46:58","slug":"23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/","title":{"rendered":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE"},"content":{"rendered":"<p style=\"text-align: justify;\">As you know, the 23ai was released for Cloud and Engineered Systems (Exadata and ExaCC) first, I already explored these in <a href=\"https:\/\/www.fernandosimon.com\/blog\/tag\/23ai\/\" target=\"_blank\" rel=\"noopener\">previous posts<\/a> as well. And since the patches already started to be released, now with the patch for 23.6, we can re-test the feature Zero-Downtime Oracle Grid Infrastructure Patching (ZDOGIP). The steps here are not specific to the Exadata version and can be used for any 23ai version.<\/p>\n<p style=\"text-align: justify;\">I already demonstrated how to use it for 21c (using <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching\/\" target=\"_blank\" rel=\"noopener\">graphical<\/a>, and <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-zero-downtime-oracle-grid-infrastructure-patching-silent-mode\/\" target=\"_blank\" rel=\"noopener\">silent<\/a> mode) and the same can be done for <a href=\"https:\/\/dohdatabase.com\/2023\/03\/10\/how-to-patch-oracle-grid-infrastructure-19c-using-zero-downtime-oracle-grid-infrastructure-patching\/\" target=\"_blank\" rel=\"noopener\">19c<\/a> as well.<\/p>\n<p style=\"text-align: justify;\">But now, I will show how to do for 23ai, and this post includes:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Install the Grid Infrastructure 23.6.0.24.10, using the Gold Image<\/li>\n<li>Upgrade the GI from 23.5.0.24.07 to 23.6.0.24.10 using the Zero-Downtime Oracle Grid Infrastructure Patching<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">This will be done while the database is running to show that we can patch the GI without downtime. I will show how to do this:<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1111 size-full\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg\" alt=\"\" width=\"801\" height=\"601\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg 801w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02-300x225.jpg 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02-768x576.jpg 768w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02-624x468.jpg 624w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/a><\/p>\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;\">The running system is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>OEL 8.9 Kernel 5.4.17-2136.324.5.3.el8uek.x86_64.<\/li>\n<li>Oracle GI 23ai, version 23.5.0.24.07 with no one-off or patches installed.<\/li>\n<li>Oracle Database 23ai (23.5.0.24.07) and 19c (19.23.0.0.0).<\/li>\n<li>Nodes are not using Transparent HugePages.<\/li>\n<li>It is a RAC installation, with two nodes.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">You can see this information in detail <a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/23ai-ZDOGIP-From-235-to-236-Env-Info.txt\" target=\"_blank\" rel=\"noopener\">here in this file<\/a>. Since I am running the Oracle 19c, the compatibility for ASM diskgroups was set to 19.0.0.0.0.<\/p>\n<h1 style=\"text-align: justify;\">Gold Image<\/h1>\n<p style=\"text-align: justify;\">One detail for this patch is that I am using the gold image provided for 23ai. Starting with 23ai Oracle will provide (for some HW\/OS combinations) the version called Gold Image, this is aimed to facilitate installation and patch process because the image is already packed resulting in small size and fast installation.<\/p>\n<p style=\"text-align: justify;\">One detail for the 23ai patches, the Engineered System version started with 23.4.0.24.05 and later with the release 23.5.0.24.07. Unfortunately, the upgrade from 23.4 to 23.5 was not possible to use the ZDOGIP process because 23.5 was considered a new release, and when I tried to apply the patch I received an error message telling me that the actual patch level was the same. And if we compare 23.4 and 23.5, they appear as the same patch level at CRS:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[grid@o23c1n1s1 ~]$ \/u01\/app\/23.4.0.0\/grid\/bin\/crsctl query crs activeversion -f\r\nOracle Clusterware active version on the cluster is [23.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [0].\r\n[grid@o23c1n1s1 ~]$\r\n\r\n[grid@o23c1n1s1 ~]$ \/u01\/app\/23.5.0.0\/grid\/bin\/crsctl query crs activeversion -f\r\nOracle Clusterware active version on the cluster is [23.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [0].\r\n[grid@o23c1n1s1 ~]$<\/pre>\n<p style=\"text-align: justify;\">But using the provided gold image, we can use the ZDOGIP.<\/p>\n<h1 style=\"text-align: justify;\">ACFS and AFD drivers<\/h1>\n<p style=\"text-align: justify;\">As you know, some installations use the ASM Filter and ACFS drivers compiled and attached as modules directly to the Linux Kernel. So, there is a well-known compatible matrix that you can see at MOS for these drivers and the Linux Kernel (link <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=1369107.1\" target=\"_blank\" rel=\"noopener\">ACFS Support On OS Platforms (Certification Matrix &#8211; Doc ID 1369107.1)<\/a>).<\/p>\n<p style=\"text-align: justify;\">This verification is important because most of the time (99%) of the patches for GI include upgrades for the OS drivers. So, you need to validate if your actual kernel is compatible with the new version of drivers.<\/p>\n<p style=\"text-align: justify;\">Besides that, it is important that <strong>BEFORE<\/strong> starting the patch you execute the command to check the current version of these drivers (execute in both nodes):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">######################################\r\n#\r\n#Checking Node 01\r\n#\r\n######################################\r\n[grid@o23c1n1s2 ~]$ acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 240702.1.\r\nACFS-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nACFS-9547:     Driver available build number = 240702.1.\r\nACFS-9232:     Driver available build version = 23.0.0.0.0 (23.5.0.24.07).\r\n[grid@o23c1n1s2 ~]$\r\n[grid@o23c1n1s2 ~]$ afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 240702.1.\r\nAFD-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nAFD-9547:     Driver available build number = 240702.1.\r\nAFD-9232:     Driver available build version = 23.0.0.0.0 (23.5.0.24.07).\r\n[grid@o23c1n1s2 ~]$\r\n[grid@o23c1n1s2 ~]$\r\n\r\n######################################\r\n#\r\n#Checking Node 02\r\n#\r\n######################################\r\n[grid@o23c1n2s2 ~]$ acfsdriverstate version\r\nACFS-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nACFS-9326:     Driver build number = 240702.1.\r\nACFS-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nACFS-9547:     Driver available build number = 240702.1.\r\nACFS-9232:     Driver available build version = 23.0.0.0.0 (23.5.0.24.07).\r\n[grid@o23c1n2s2 ~]$\r\n[grid@o23c1n2s2 ~]$ afddriverstate version\r\nAFD-9325:     Driver OS kernel version = 5.4.17-2011.0.7.el8uek.x86_64.\r\nAFD-9326:     Driver build number = 240702.1.\r\nAFD-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nAFD-9547:     Driver available build number = 240702.1.\r\nAFD-9232:     Driver available build version = 23.0.0.0.0 (23.5.0.24.07).\r\n[grid@o23c1n2s2 ~]$\r\n<\/pre>\n<p style=\"text-align: justify;\">And as well for CRS to check what is the current active drivers:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">######################################\r\n#\r\n#Checking Node 01\r\n#\r\n######################################\r\n[grid@o23c1n1s2 ~]$ crsctl query driver activeversion -all\r\nNode Name : o23c1n1s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n1s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\n[grid@o23c1n1s2 ~]$ crsctl query driver softwareversion -all\r\nNode Name : o23c1n1s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n1s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\n[grid@o23c1n1s2 ~]$<\/pre>\n<p style=\"text-align: justify;\">A little detail about the ZDOGIP. If you need to upgrade the OS drivers, unfortunately, you will have downtime because the process stops all databases. But there is one way to do ZDOGIP without applying the ACFS and AFD drivers, and this is what I will use later.<\/p>\n<h1 style=\"text-align: justify;\">Preparing for Patching<\/h1>\n<p style=\"text-align: justify;\">The files that we need are simple:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Grid Infrastructure Gold Image, patch number is <a href=\"https:\/\/support.oracle.com\/\" target=\"_blank\" rel=\"noopener\">37037934<\/a>.<\/li>\n<li>Opatch, always the last version available. Download here in <a href=\"https:\/\/updates.oracle.com\/download\/6880880.html\" target=\"_blank\" rel=\"noopener\">this link<\/a>.<\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">Creating the folders the files<\/h2>\n<p style=\"text-align: justify;\">The patch will use the ZDOGIP processes. So, it is out of place patching, with a switch of the current t Oracle Home folder for the GI. So, after downloading the patches and uploading to the first node of your RAC cluster we need to create the new folders in all nodes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">######################################\r\n#\r\n#Checking Node 01\r\n#\r\n######################################\r\n[root@o23c1n1s2 ~]# mkdir -p \/u01\/app\/23.6.0.0\/grid\r\n[root@o23c1n1s2 ~]# chown grid:oinstall \/u01\/app\/23.6.0.0\/grid\r\n[root@o23c1n1s2 ~]#\r\n\r\n######################################\r\n#\r\n#Checking Node 02\r\n#\r\n######################################\r\n[root@o23c1n2s2 ~]# mkdir -p \/u01\/app\/23.6.0.0\/grid\r\n[root@o23c1n2s2 ~]# chown grid:oinstall \/u01\/app\/23.6.0.0\/grid\r\n[root@o23c1n2s2 ~]#\r\n<\/pre>\n<h2 style=\"text-align: justify;\">Unzipping the patches<\/h2>\n<p style=\"text-align: justify;\">The next step is executed only in the first node. We just need to unzip the GI gold image and the OPatch <strong>as the grid user<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@o23c1n1s2 ~]# su - grid\r\n[grid@o23c1n1s2 ~]$\r\n[grid@o23c1n1s2 ~]$ cd \/u01\/app\/23.6.0.0\/grid\/\r\n[grid@o23c1n1s2 grid]$\r\n[grid@o23c1n1s2 grid]$ unzip -q \/u01\/install\/Grid\/p37037934_230000_Linux-x86-64.zip\r\n[grid@o23c1n1s2 grid]$\r\n[grid@o23c1n1s2 grid]$\r\n[grid@o23c1n1s2 grid]$ unzip -q \/u01\/install\/p6880880_230000_Linux-x86-64.zip\r\nreplace OPatch\/opatchauto? [y]es, [n]o, [A]ll, [N]one, [r]ename: A\r\n[grid@o23c1n1s2 grid]$\r\n<\/pre>\n<h2 style=\"text-align: justify;\">Running systems &nbsp;<\/h2>\n<p style=\"text-align: justify;\">For now in my example scenario, what is running in the system is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>23.5 GI installed and running at \/u01\/app\/23.5.0.0<\/li>\n<li>Oracle RAC Database 23.5 called o23ne<\/li>\n<li>Oracle RAC Database 19.23 called o19c<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">You can see below this (in both nodes):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">######################################\r\n#\r\n#Checking Node 01\r\n#\r\n######################################\r\n[root@o23c1n1s2 ~]# ps -ef |grep smon\r\nroot        5770       1  0 15:14 ?        00:00:53 \/u01\/app\/23.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        6480       1  0 15:15 ?        00:00:00 asm_smon_+ASM1\r\noracle      7170       1  0 15:15 ?        00:00:00 ora_smon_o23ne1\r\noracle      7514       1  0 15:15 ?        00:00:00 ora_smon_o19c1\r\nroot       66017    3896  0 16:46 pts\/0    00:00:00 grep --color=auto smon\r\n[root@o23c1n1s2 ~]#\r\n[root@o23c1n1s2 ~]# ps -ef |grep lsnr\r\nroot        5872    5810  0 15:14 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/crfelsnr -n o23c1n1s2\r\ngrid        6209       1  0 15:15 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid        6259       1  0 15:15 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid        9078       1  0 15:16 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\ngrid        9084       1  0 15:16 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\nroot       66025    3896  0 16:46 pts\/0    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n1s2 ~]#\r\n\r\n######################################\r\n#\r\n#Checking Node 02\r\n#\r\n######################################\r\n[root@o23c1n2s2 ~]#\r\n[root@o23c1n2s2 ~]# ps -ef |grep smon\r\nroot        4795       1  0 15:19 ?        00:00:48 \/u01\/app\/23.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        5727       1  0 15:19 ?        00:00:00 asm_smon_+ASM2\r\noracle      6300       1  0 15:20 ?        00:00:00 ora_smon_o23ne2\r\noracle      6679       1  0 15:20 ?        00:00:00 ora_smon_o19c2\r\nroot       57432    9393  0 16:46 pts\/0    00:00:00 grep --color=auto smon\r\n[root@o23c1n2s2 ~]#\r\n[root@o23c1n2s2 ~]# ps -ef |grep lsnr\r\nroot        4896    4838  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/crfelsnr -n o23c1n2s2\r\ngrid        5298       1  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid        5329       1  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid        5350       1  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\nroot       57436    9393  0 16:46 pts\/0    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n2s2 ~]#\r\n[root@o23c1n2s2 ~]#\r\n<\/pre>\n<p style=\"text-align: justify;\">And for the 19c database, we have one pdb called PDB19C1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o23c1n1s2 ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 20 16:51:48 2024\r\nVersion 19.23.0.0.0\r\n\r\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.23.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 PDB19C1                        READ WRITE NO\r\nSQL&gt; show parameter list\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nforward_listener                     string\r\nlistener_networks                    string\r\nlocal_listener                       string       (ADDRESS=(PROTOCOL=TCP)(HOST=\r\n                                                 o23c1n1s2-vip.oralocal)(PORT=1\r\n                                                 521))\r\nremote_listener                      string       o23c1s2-scan:1521\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.23.0.0.0\r\n[oracle@o23c1n1s2 ~]$<\/pre>\n<h2 style=\"text-align: justify;\">Testing the ZDOGIP<\/h2>\n<p style=\"text-align: justify;\">As you know, I like to test in detail what I post here. So, I created a simple table (T1) at the PDB19C and made two loops that were continuously inserted into it. In case of downtime or shutdown of the database, we will notice the error.<\/p>\n<p style=\"text-align: justify;\">The first one is using a PLSQL connected from the node01. This will represent a connected session (that never disconnects) from your database:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o23c1n1s2 ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 20 16:52:34 2024\r\nVersion 19.23.0.0.0\r\n\r\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.23.0.0.0\r\n\r\nSQL&gt; alter session set container = PDB19C1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; SET SERVEROUTPUT ON\r\nSQL&gt; DECLARE\r\n  2      lDatMax DATE := (sysdate + 240\/1440);\r\n  3  BEGIN\r\n  4      WHILE (sysdate &lt;= (lDatMax)) LOOP\r\n  5          insert into simon.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 style=\"text-align: justify;\">The second is using EZCONNECT from a third machine that connects to the database using the scan. So, sometimes connection goes to instance 1, and others for instance 2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8rpn1-19c ~]$ date\r\nSun Oct 20 16:51:03 CEST 2024\r\n[oracle@o8rpn1-19c ~]$ for i in {1..1000000}\r\n&gt; do\r\n&gt; echo \"Insert Data $i \"`date +%d-%m-%Y-%H%M%S`\r\n&gt; sqlplus -s simon\/simon23ai@o23c1s2-scan.oralocal\/PDB19C1&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);\r\n&gt; commit;\r\n&gt; EOF\r\n&gt; done\r\nInsert Data 1 20-10-2024-165359\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 2 20-10-2024-165359\r\n\r\n1 row created.\r\n\u2026\r\n<\/pre>\n<h1 style=\"text-align: justify;\">ZDOGIP using GOLD IMAGE<\/h1>\n<p style=\"text-align: justify;\">Differently of the ZDOGIP for 21c and 19c, which we call the installation and patch at the same time, for 23c using the gold image, we need to do two steps. This is needed because the gold image already provides a complete and patched 23.6 image that can be installed directly.<\/p>\n<h2 style=\"text-align: justify;\">Step 01 \u2013 Installing the software<\/h2>\n<p style=\"text-align: justify;\">So, the first step is to call the <strong><em>gridSetup.sh<\/em><\/strong> script and select the option to just install the crs software:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[grid@o23c1n1s2 ~]$ export ORACLE_HOME=\/u01\/app\/23.6.0.0\/grid\r\n[grid@o23c1n1s2 ~]$ \/u01\/app\/23.6.0.0\/grid\/gridSetup.sh\r\nERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.\r\nLaunching Oracle Grid Infrastructure Setup Wizard...\r\n\r\nThe response file for this session can be found at:\r\n \/u01\/app\/23.6.0.0\/grid\/install\/response\/grid_2024-10-20_05-00-04PM.rsp\r\n\r\nYou can find the log of this install session at:\r\n \/u01\/app\/oraInventory\/logs\/GridSetupActions2024-10-20_05-00-04PM\/gridSetupActions2024-10-20_05-00-04PM.log\r\n[grid@o23c1n1s2 ~]$<\/pre>\n<p style=\"text-align: justify;\">The gallery below shows all the steps that you need to do using the GUI. It is a simple next, next-finish process.<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">This slideshow requires JavaScript.<\/p><div id=\"gallery-1091-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\\\/2024\\\/10\\\/GI236-01.jpg&quot;,&quot;id&quot;:&quot;1093&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-02.jpg&quot;,&quot;id&quot;:&quot;1094&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-03.jpg&quot;,&quot;id&quot;:&quot;1095&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-04.jpg&quot;,&quot;id&quot;:&quot;1096&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-05.jpg&quot;,&quot;id&quot;:&quot;1097&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-06.jpg&quot;,&quot;id&quot;:&quot;1098&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-07.jpg&quot;,&quot;id&quot;:&quot;1099&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-08.jpg&quot;,&quot;id&quot;:&quot;1100&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-09.jpg&quot;,&quot;id&quot;:&quot;1101&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-10.jpg&quot;,&quot;id&quot;:&quot;1102&quot;,&quot;title&quot;:&quot;GI236-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\\\/2024\\\/10\\\/GI236-11.jpg&quot;,&quot;id&quot;:&quot;1103&quot;,&quot;title&quot;:&quot;GI236-11&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\\\/2024\\\/10\\\/GI236-12.jpg&quot;,&quot;id&quot;:&quot;1104&quot;,&quot;title&quot;:&quot;GI236-12&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\\\/2024\\\/10\\\/GI236-13.jpg&quot;,&quot;id&quot;:&quot;1105&quot;,&quot;title&quot;:&quot;GI236-13&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\\\/2024\\\/10\\\/GI236-14.jpg&quot;,&quot;id&quot;:&quot;1106&quot;,&quot;title&quot;:&quot;GI236-14&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\\\/2024\\\/10\\\/GI236-15.jpg&quot;,&quot;id&quot;:&quot;1107&quot;,&quot;title&quot;:&quot;GI236-15&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\\\/2024\\\/10\\\/GI236-16.jpg&quot;,&quot;id&quot;:&quot;1108&quot;,&quot;title&quot;:&quot;GI236-16&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;\">At the end, is needed to call the <strong>root.sh<\/strong> in both nodes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">######################################\r\n#\r\n# Node 01\r\n#\r\n######################################\r\n[root@o23c1n1s2 ~]# \/u01\/app\/23.6.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\/23.6.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\n\r\nTo configure Grid Infrastructure for a Cluster execute the following command as grid user:\r\n\/u01\/app\/23.6.0.0\/grid\/gridSetup.sh\r\nThis command launches the Grid Infrastructure Setup Wizard. The wizard also supports silent operation, and the parameters can be passed through the response file that is available in the installation media.\r\n\r\n[root@o23c1n1s2 ~]#\r\n\r\n######################################\r\n#\r\n# Node 02\r\n#\r\n######################################\r\n[root@o23c1n2s2 ~]# \/u01\/app\/23.6.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\/23.6.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\n\r\nTo configure Grid Infrastructure for a Cluster execute the following command as grid user:\r\n\/u01\/app\/23.6.0.0\/grid\/gridSetup.sh\r\nThis command launches the Grid Infrastructure Setup Wizard. The wizard also supports silent operation, and the parameters can be passed through the response file that is available in the installation media.\r\n\r\n[root@o23c1n2s2 ~]#\r\n<\/pre>\n<p style=\"text-align: justify;\">An interesting detail here is why we can\u2019t call the installation and switch at the same time. This occurs because the unzipped gold image does not appear (in the oraInventory) as installed. It does not exist in both nodes and does not exist inside the inventory. And even if you try to call everything together, you will receive one error that your software is not installed:<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1109 size-full\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01.jpg\" alt=\"\" width=\"801\" height=\"600\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01.jpg 801w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01-300x225.jpg 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01-768x575.jpg 768w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-ERROR-01-624x467.jpg 624w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Looking for the running inserts, we noticed that everything was ok while the installation was happening:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n      4846 1          Loop - EZconnect     20\/10\/2024 17:11:15 20\/10\/2024 16:53:59\r\n       677 2          Loop - EZconnect     20\/10\/2024 17:11:12 20\/10\/2024 16:53:59\r\n      2078 1          Loop - Sqlplus       20\/10\/2024 17:11:15 20\/10\/2024 16:53:53\r\n\r\nSQL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">Step 02 \u2013 Doing the Home Switch<\/h2>\n<p style=\"text-align: justify;\">After the success of step 01, we can call the step 02. Here we will switch between the homes for the GI, and we will do this online. We will use the following parameters when calling the <strong>grtidSetup.sh<\/strong>:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>switchGridHome<\/strong>: This will tell the installer to switch between the old and new GI home.<\/li>\n<li><strong>zeroDowntimeGIPatching<\/strong>: This will tell you to do the switch online, without stopping any database that is running in the nodes.<\/li>\n<li><strong>skipDriverUpdate<\/strong>: This will not update the kernel drivers for the ACFS and AFD.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">So, we just call this (as grid user) in the first node of the cluster:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[grid@o23c1n1s2 ~]$ \/u01\/app\/23.6.0.0\/grid\/gridSetup.sh -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\nLaunching Oracle Grid Infrastructure Setup Wizard...\r\n\r\n[grid@o23c1n1s2 ~]$<\/pre>\n<p style=\"text-align: justify;\">The gallery below shows the GUI steps that are needed:<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">This slideshow requires JavaScript.<\/p><div id=\"gallery-1091-2-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\\\/2024\\\/10\\\/GI236-2-01.jpg&quot;,&quot;id&quot;:&quot;1110&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-02.jpg&quot;,&quot;id&quot;:&quot;1111&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-03.jpg&quot;,&quot;id&quot;:&quot;1112&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-04.jpg&quot;,&quot;id&quot;:&quot;1113&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-05.jpg&quot;,&quot;id&quot;:&quot;1114&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-06.jpg&quot;,&quot;id&quot;:&quot;1115&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-07.jpg&quot;,&quot;id&quot;:&quot;1116&quot;,&quot;title&quot;:&quot;GI236-2-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\\\/2024\\\/10\\\/GI236-2-08.jpg&quot;,&quot;id&quot;:&quot;1117&quot;,&quot;title&quot;:&quot;GI236-2-08&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;\">Near of the end of the GUI installation, the run for the root.sh script is needed in all nodes. And it is here where the switch will officially occur, and that it is done online. So, running the <strong>root.sh<\/strong> at the first node with root user:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@o23c1n1s2 ~]# \/u01\/app\/23.6.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\/23.6.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\nRAC option enabled on: Linux\r\nExecuting command '\/u01\/app\/23.6.0.0\/grid\/perl\/bin\/perl -I\/u01\/app\/23.6.0.0\/grid\/perl\/lib -I\/u01\/app\/23.6.0.0\/grid\/crs\/install \/u01\/app\/23.6.0.0\/grid\/crs\/install\/rootcrs.pl  -dstcrshome \/u01\/app\/23.6.0.0\/grid -transparent -nodriverupdate -prepatch'\r\nUsing configuration parameter file: \/u01\/app\/23.6.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/o23c1n1s2\/crsconfig\/crs_prepatch_apply_oop_o23c1n1s2_2024-10-20_05-36-08PM.log\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: o23c1n1s2:\/ ...PASSED\r\n   Software home: \/u01\/app\/23.5.0.0\/grid ...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:                         Oct 20, 2024, 5:36:38 PM\r\n CVU version:                  23.5.0.24.7 (070324x8664)\r\n Clusterware version:          23.0.0.0.0\r\n CVU home:                     \/u01\/app\/23.5.0.0\/grid\r\n Grid home:                    \/u01\/app\/23.5.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2136.324.5.3.el8uek.x86_64\r\n\r\n2024\/10\/20 17:37:03 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.\r\nExecuting command '\/u01\/app\/23.6.0.0\/grid\/perl\/bin\/perl -I\/u01\/app\/23.6.0.0\/grid\/perl\/lib -I\/u01\/app\/23.6.0.0\/grid\/crs\/install \/u01\/app\/23.6.0.0\/grid\/crs\/install\/rootcrs.pl  -dstcrshome \/u01\/app\/23.6.0.0\/grid -transparent -nodriverupdate -postpatch'\r\nUsing configuration parameter file: \/u01\/app\/23.6.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/o23c1n1s2\/crsconfig\/crs_postpatch_apply_oop_o23c1n1s2_2024-10-20_05-37-03PM.log\r\n2024\/10\/20 17:37:57 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd_dummy.service'\r\n2024\/10\/20 17:38:51 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'\r\n2024\/10\/20 17:40:04 CLSRSC-4015: Performing install or upgrade action for Oracle Autonomous Health Framework (AHF).\r\n2024\/10\/20 17:40:04 CLSRSC-4012: Shutting down Oracle Autonomous Health Framework (AHF).\r\n2024\/10\/20 17:41:27 CLSRSC-4013: Successfully shut down Oracle Autonomous Health Framework (AHF).\r\n2024\/10\/20 17:41:39 CLSRSC-672: Post-patch steps for patching GI home successfully completed.\r\n[root@o23c1n1s2 ~]#<\/pre>\n<p style=\"text-align: justify;\">We can see that between 2024\/10\/20 17:37:57 and 2024\/10\/20 17:41:39 the switch occurred. Looking for the log we can notice the stop and start of crs (and some interesting messages):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">2024-10-20 17:37:58:\r\n2024-10-20 17:37:58: Successfully removed file: \/etc\/systemd\/system\/oracle-ohasd.service.d\/00_oracle-ohasd.conf\r\n2024-10-20 17:37:58: Executing cmd: \/usr\/bin\/systemctl daemon-reload\r\n2024-10-20 17:38:00: zip: stopping Oracle Clusterware stack ...\r\n2024-10-20 17:38:00: Executing cmd: \/u01\/app\/23.5.0.0\/grid\/bin\/crsctl stop crs -tgip -f\r\n2024-10-20 17:38:51: Command output:\r\n&gt;  CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'o23c1n1s2'\r\n&gt;  CRS-2673: Attempting to stop 'ora.crsd' on 'o23c1n1s2'\r\n&gt;  CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'o23c1n1s2'\r\n\u2026\r\n\u2026\r\n&gt;  CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'o23c1n1s2' has completed\r\n&gt;  CRS-4133: Oracle High Availability Services has been stopped.\r\n&gt;End Command output\r\n2024-10-20 17:38:51: The return value of stop of CRS: 0\r\n2024-10-20 17:38:51: Executing cmd: \/u01\/app\/23.5.0.0\/grid\/bin\/crsctl check crs\r\n\u2026\r\n\u2026\r\n2024-10-20 17:38:51: no change to oracle ohasd service, skip installing it in systemd\r\n2024-10-20 17:38:51: zip: the oracle ohasd service, ohasd service, and slice files have not changed, skip daemon-reload but restart the service\r\n2024-10-20 17:38:51: zip: restart ohasd service by killing init ohasd pid=2595\r\n2024-10-20 17:38:51: Transparent GI patching, skip patching USM drivers\r\n2024-10-20 17:38:51: Updating OLR with the new Patch Level\r\n2024-10-20 17:38:51: Executing cmd: \/u01\/app\/23.6.0.0\/grid\/bin\/clscfg -localpatch\r\n2024-10-20 17:38:55: Command output:\r\n&gt;  clscfg: EXISTING configuration version 0 detected.\r\n&gt;  Creating OCR keys for user 'root', privgrp 'root'..\r\n&gt;  Operation successful.\r\n&gt;End Command output\r\n2024-10-20 17:38:55: Starting GI stack to set patch level in OCR and stop rolling patch\r\n2024-10-20 17:38:55: Executing cmd: \/u01\/app\/23.6.0.0\/grid\/bin\/crsctl start crs -wait -tgip\r\n2024-10-20 17:39:51: Command output:\r\n&gt;  CRS-4123: Starting Oracle High Availability Services-managed resources\r\n&gt;  CRS-2672: Attempting to start 'ora.cssd' on 'o23c1n1s2'\r\n\u2026\r\n\u2026<\/pre>\n<p style=\"text-align: justify;\"><strong>If you look the what was running during the patch we can notice that databases did not stopped, but ASM and listener were restarted<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@o23c1n1s2 ~]# ps -ef |grep smon\r\nroot        5770       1  1 15:14 ?        00:01:27 \/u01\/app\/23.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        6480       1  0 15:15 ?        00:00:00 asm_smon_+ASM1\r\noracle      7170       1  0 15:15 ?        00:00:00 ora_smon_o23ne1\r\noracle      7514       1  0 15:15 ?        00:00:00 ora_smon_o19c1\r\nroot      136141  134781  0 17:38 pts\/6    00:00:00 grep --color=auto smon\r\n[root@o23c1n1s2 ~]# ps -ef |grep lsnr\r\nroot        5872    5810  0 15:14 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/crfelsnr -n o23c1n1s2\r\ngrid        6209       1  0 15:15 ?        00:00:12 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid        6259       1  0 15:15 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid        9078       1  0 15:16 ?        00:00:03 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\ngrid        9084       1  0 15:16 ?        00:00:03 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\nroot      136164  134781  0 17:38 pts\/6    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n1s2 ~]#\r\n[root@o23c1n1s2 ~]# ps -ef |grep smon\r\noracle      7170       1  0 15:15 ?        00:00:00 ora_smon_o23ne1\r\noracle      7514       1  0 15:15 ?        00:00:00 ora_smon_o19c1\r\nroot      140246  134781  0 17:38 pts\/6    00:00:00 grep --color=auto smon\r\n[root@o23c1n1s2 ~]# ps -ef |grep lsnr\r\ngrid        6209       1  0 15:15 ?        00:00:13 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\nroot      140438  134781  0 17:38 pts\/6    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n1s2 ~]#\r\n[root@o23c1n1s2 ~]# ps -ef |grep smon\r\noracle      7170       1  0 15:15 ?        00:00:00 ora_smon_o23ne1\r\noracle      7514       1  0 15:15 ?        00:00:00 ora_smon_o19c1\r\nroot      142699       1  1 17:39 ?        00:00:03 \/u01\/app\/23.6.0.0\/grid\/bin\/osysmond.bin\r\ngrid      146818       1  0 17:39 ?        00:00:00 asm_smon_+ASM1\r\nroot      167971  134781  0 17:43 pts\/6    00:00:00 grep --color=auto smon\r\n[root@o23c1n1s2 ~]# ps -ef |grep lsnr\r\nroot      143127  142839  0 17:39 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/crfelsnr -n o23c1n1s2\r\ngrid      144540       1  0 17:39 ?        00:00:01 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid      144582       1  0 17:39 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\ngrid      144700       1  0 17:39 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\nroot      167992  134781  0 17:43 pts\/6    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n1s2 ~]#<\/pre>\n<p style=\"text-align: justify;\">And our insert continues to be running at the same time (compare the columns for date\/time with the log of the patch \u2013 stop, and start of crs):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n     11131 1          Loop - EZconnect     20\/10\/2024 17:38:06 20\/10\/2024 16:53:59\r\n      2248 2          Loop - EZconnect     20\/10\/2024 17:36:46 20\/10\/2024 16:53:59\r\n      5283 1          Loop - Sqlplus       20\/10\/2024 17:38:06 20\/10\/2024 16:53:53\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n     11222 1          Loop - EZconnect     20\/10\/2024 17:38:36 20\/10\/2024 16:53:59\r\n      2270 2          Loop - EZconnect     20\/10\/2024 17:38:32 20\/10\/2024 16:53:59\r\n      5343 1          Loop - Sqlplus       20\/10\/2024 17:38:36 20\/10\/2024 16:53:53\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n     11287 1          Loop - EZconnect     20\/10\/2024 17:39:14 20\/10\/2024 16:53:59\r\n      2370 2          Loop - EZconnect     20\/10\/2024 17:39:15 20\/10\/2024 16:53:59\r\n      5420 1          Loop - Sqlplus       20\/10\/2024 17:39:14 20\/10\/2024 16:53:53\r\n\r\nSQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n     11299 1          Loop - EZconnect     20\/10\/2024 17:39:21 20\/10\/2024 16:53:59\r\n      2375 2          Loop - EZconnect     20\/10\/2024 17:39:21 20\/10\/2024 16:53:59\r\n      5433 1          Loop - Sqlplus       20\/10\/2024 17:39:21 20\/10\/2024 16:53:53\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">And at the time for the end of the root.sh at the first node, we can see those databases were not restarted, but the listener and ASM were.<\/p>\n<p style=\"text-align: justify;\">When finished root.sh at node 01 is possible to execute in the remaining nodes (since it is two nodes, this is the last one and you can see that the checks were executed). Below you can see that I execute the <em>ps<\/em> to check the running services to pick up the time for the databases process, and after the patch finishes, I execute the same command to demonstrate that just crs services were restarted:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@o23c1n2s2 ~]# ps -ef |grep smon\r\nroot        4795       1  0 15:19 ?        00:01:20 \/u01\/app\/23.5.0.0\/grid\/bin\/osysmond.bin\r\ngrid        5727       1  0 15:19 ?        00:00:00 asm_smon_+ASM2\r\noracle      6300       1  0 15:20 ?        00:00:00 ora_smon_o23ne2\r\noracle      6679       1  0 15:20 ?        00:00:00 ora_smon_o19c2\r\nroot      121768  120925  0 17:45 pts\/3    00:00:00 grep --color=auto smon\r\n[root@o23c1n2s2 ~]# ps -ef |grep lsnr\r\nroot        4896    4838  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/crfelsnr -n o23c1n2s2\r\ngrid        5298       1  0 15:19 ?        00:00:03 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid        5329       1  0 15:19 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\ngrid      106916       1  0 17:38 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit\r\ngrid      106934       1  0 17:38 ?        00:00:00 \/u01\/app\/23.5.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit\r\nroot      121881  120925  0 17:45 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n2s2 ~]#\r\n[root@o23c1n2s2 ~]# \/u01\/app\/23.6.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\/23.6.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\nRAC option enabled on: Linux\r\nExecuting command '\/u01\/app\/23.6.0.0\/grid\/perl\/bin\/perl -I\/u01\/app\/23.6.0.0\/grid\/perl\/lib -I\/u01\/app\/23.6.0.0\/grid\/crs\/install \/u01\/app\/23.6.0.0\/grid\/crs\/install\/rootcrs.pl  -dstcrshome \/u01\/app\/23.6.0.0\/grid -transparent -nodriverupdate -prepatch'\r\nUsing configuration parameter file: \/u01\/app\/23.6.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/o23c1n2s2\/crsconfig\/crs_prepatch_apply_oop_o23c1n2s2_2024-10-20_05-44-11PM.log\r\n\r\n Initializing ...\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: o23c1n2s2:\/ ...PASSED\r\n   Software home: \/u01\/app\/23.5.0.0\/grid ...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:                         Oct 20, 2024, 5:44:42 PM\r\n CVU version:                  23.5.0.24.7 (070324x8664)\r\n Clusterware version:          23.0.0.0.0\r\n CVU home:                     \/u01\/app\/23.5.0.0\/grid\r\n Grid home:                    \/u01\/app\/23.5.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2136.324.5.3.el8uek.x86_64\r\n\r\n2024\/10\/20 17:45:32 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.\r\nExecuting command '\/u01\/app\/23.6.0.0\/grid\/perl\/bin\/perl -I\/u01\/app\/23.6.0.0\/grid\/perl\/lib -I\/u01\/app\/23.6.0.0\/grid\/crs\/install \/u01\/app\/23.6.0.0\/grid\/crs\/install\/rootcrs.pl  -dstcrshome \/u01\/app\/23.6.0.0\/grid -transparent -nodriverupdate -postpatch'\r\nUsing configuration parameter file: \/u01\/app\/23.6.0.0\/grid\/crs\/install\/crsconfig_params\r\nThe log of current session can be found at:\r\n  \/u01\/app\/grid\/crsdata\/o23c1n2s2\/crsconfig\/crs_postpatch_apply_oop_o23c1n2s2_2024-10-20_05-45-34PM.log\r\n2024\/10\/20 17:46:24 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd_dummy.service'\r\n2024\/10\/20 17:46:57 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'\r\n2024\/10\/20 17:48:03 CLSRSC-4015: Performing install or upgrade action for Oracle Autonomous Health Framework (AHF).\r\n2024\/10\/20 17:48:03 CLSRSC-4012: Shutting down Oracle Autonomous Health Framework (AHF).\r\n2024\/10\/20 17:49:24 CLSRSC-4013: Successfully shut down Oracle Autonomous Health Framework (AHF).\r\n\r\n Initializing ...\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:                         Oct 20, 2024, 5:49:55 PM\r\n CVU version:                  23.6.0.24.10 (100824x8664)\r\n Clusterware version:          23.0.0.0.0\r\n CVU home:                     \/u01\/app\/23.6.0.0\/grid\r\n Grid home:                    \/u01\/app\/23.6.0.0\/grid\r\n User:                         grid\r\n Operating system:             Linux5.4.17-2136.324.5.3.el8uek.x86_64\r\n\r\n2024\/10\/20 17:51:53 CLSRSC-672: Post-patch steps for patching GI home successfully completed.\r\n[root@o23c1n2s2 ~]# 2024\/10\/20 17:53:47 CLSRSC-4003: Successfully patched Oracle Autonomous Health Framework (AHF).\r\n[root@o23c1n2s2 ~]# ps -ef |grep smon\r\noracle      6300       1  0 15:20 ?        00:00:00 ora_smon_o23ne2\r\noracle      6679       1  0 15:20 ?        00:00:00 ora_smon_o19c2\r\nroot      129794       1  1 17:47 ?        00:00:04 \/u01\/app\/23.6.0.0\/grid\/bin\/osysmond.bin\r\ngrid      133450       1  0 17:47 ?        00:00:00 asm_smon_+ASM2\r\nroot      155777  120925  0 17:53 pts\/3    00:00:00 grep --color=auto smon\r\n[root@o23c1n2s2 ~]# ps -ef |grep lsnr\r\nroot      130215  129930  0 17:47 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/crfelsnr -n o23c1n2s2\r\ngrid      131655       1  0 17:47 ?        00:00:01 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr LISTENER -no_crs_notify -inherit\r\ngrid      131683       1  0 17:47 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit\r\ngrid      131854       1  0 17:47 ?        00:00:00 \/u01\/app\/23.6.0.0\/grid\/bin\/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit\r\nroot      155852  120925  0 17:53 pts\/3    00:00:00 grep --color=auto lsnr\r\n[root@o23c1n2s2 ~]#<\/pre>\n<p style=\"text-align: justify;\">So, is possible to see that databases were up and running for the whole time. Connections continue to insert data in both nodes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; \/\r\n\r\n  COUNT(*) C1         C2                   LAST_INS            FIRST_INS\r\n---------- ---------- -------------------- ------------------- -------------------\r\n     13117 1          Loop - EZconnect     20\/10\/2024 17:55:12 20\/10\/2024 16:53:59\r\n      4722 2          Loop - EZconnect     20\/10\/2024 17:54:35 20\/10\/2024 16:53:59\r\n      7328 1          Loop - Sqlplus       20\/10\/2024 17:55:12 20\/10\/2024 16:53:53\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/23ai-ZDOGIP-From-235-to-236-Log-SQLPLUS.txt\" target=\"_blank\" rel=\"noopener\">This file is the full output from the SQLPLUS and PLSQL execution<\/a>. You can notice that no downtime message was shown. Even the connected running session never stopped to insert.<\/p>\n<p style=\"text-align: justify;\">If you would like to understand why, this is basically because the database detected the missing instance and registered as Flex Client to the remaining ASM node. This is ASM Flex:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">2024-10-20T17:38:04.899942+02:00\r\nALTER SYSTEM SET _asm_asmb_rcvto=60 SCOPE=MEMORY;\r\n2024-10-20T17:38:04.924714+02:00\r\nALTER SYSTEM SET _asm_asmb_max_wait_timeout=60 SCOPE=MEMORY;\r\n2024-10-20T17:38:05.056174+02:00\r\nALTER SYSTEM RELOCATE CLIENT TO '+ASM2'\r\n2024-10-20T17:38:15.061808+02:00\r\nNOTE: ASMB (7543) relocating from ASM instance +ASM1 to +ASM2 (User initiated)\r\n2024-10-20T17:38:16.999014+02:00\r\nNOTE: ASMB (index:0) registering with ASM instance as Flex client 0xcde9b1707cdd5761 (reg:5540864) (startid:1182870941) (reconnect)\r\nNOTE: ASMB (index:0) (7543) connected to ASM instance +ASM2, osid: 106767 (Flex mode; client id 0xcde9b1707cdd5761)\r\nNOTE: ASMB (7543) rebuilding ASM server state for all pending groups\r\nNOTE: ASMB (7543) rebuilding ASM server state for group 1 (DATA)\r\n2024-10-20T17:38:18.189032+02:00\r\nNOTE: ASMB (7543) rebuilt 1 (of 1) groups\r\nNOTE: ASMB (7543) rebuilt 21 (of 26) allocated files\r\nNOTE: (7543) fetching new locked extents from server\r\nNOTE: ASMB (7543) 0 locks established; 0 pending writes sent to server\r\nSUCCESS: ASMB (7543) reconnected &amp; completed ASM server state for disk group 1\r\nNOTE: ASMB (7543) rebuilding ASM server state for group 2 (RECO)\r\nNOTE: ASMB (7543) rebuilt 1 (of 1) groups\r\nNOTE: ASMB (7543) rebuilt 5 (of 26) allocated files\r\nNOTE: (7543) fetching new locked extents from server\r\nNOTE: ASMB (7543) 0 locks established; 0 pending writes sent to server\r\nSUCCESS: ASMB (7543) reconnected &amp; completed ASM server state for disk group 2\r\n2024-10-20T17:39:21.216560+02:00\r\nALTER SYSTEM SET local_listener=' (ADDRESS=(PROTOCOL=TCP)(HOST=10.160.23.14)(PORT=1521))' SCOPE=MEMORY SID='o19c1';\r\n2024-10-20T17:39:21.434298+02:00\r\nALTER SYSTEM SET remote_listener=' o23c1s2-scan:1521' SCOPE=MEMORY SID='o19c1';\r\n2024-10-20T17:39:21.438054+02:00\r\nALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='o19c1';\r\n2024-10-20T17:39:22.740276+02:00\r\nALTER SYSTEM SET _asm_asmb_rcvto=10 SCOPE=MEMORY;\r\n2024-10-20T17:39:22.744926+02:00\r\nALTER SYSTEM SET _asm_asmb_max_wait_timeout=6 SCOPE=MEMORY;\r\n2024-10-20T17:39:28.603041+02:00\r\nALTER SYSTEM SET remote_listener=' o23c1s2-scan:1521' SCOPE=MEMORY SID='o19c1';\r\n2024-10-20T17:46:34.397059+02:00<\/pre>\n<h1 style=\"text-align: justify;\">State of ACFS and AFD drivers<\/h1>\n<p style=\"text-align: justify;\">After the installation, we noticed that the drivers were not updated. That was the requested option during the installation, but the new versions of the drivers are available but not active:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[root@o23c1n1s2 ~]# su - grid\r\n[grid@o23c1n1s2 ~]$\r\n[grid@o23c1n1s2 ~]$ echo $ORACLE_HOME\r\n\/u01\/app\/23.6.0.0\/grid\r\n[grid@o23c1n1s2 ~]$\r\n[grid@o23c1n1s2 ~]$ $ORACLE_HOME\/bin\/crsctl query driver activeversion -all\r\nNode Name : o23c1n1s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n1s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : ACFS\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : AFD\r\nBuildNumber : 240702.1\r\nBuildVersion : 23.0.0.0.0 (23.5.0.24.07)\r\n\r\n[grid@o23c1n1s2 ~]$ $ORACLE_HOME\/bin\/crsctl query driver softwareversion -all\r\nNode Name : o23c1n1s2\r\nDriver Name : ACFS\r\nBuildNumber : 241006\r\nBuildVersion : 23.0.0.0.0 (23.6.0.24.10)\r\n\r\nNode Name : o23c1n1s2\r\nDriver Name : AFD\r\nBuildNumber : 241006\r\nBuildVersion : 23.0.0.0.0 (23.6.0.24.10)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : ACFS\r\nBuildNumber : 241006\r\nBuildVersion : 23.0.0.0.0 (23.6.0.24.10)\r\n\r\nNode Name : o23c1n2s2\r\nDriver Name : AFD\r\nBuildNumber : 241006\r\nBuildVersion : 23.0.0.0.0 (23.6.0.24.10)\r\n\r\n[grid@o23c1n1s2 ~]$ \r\n[grid@o23c1n1s2 ~]$ $ORACLE_HOME\/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 = 240702.1.\r\nACFS-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nACFS-9547:     Driver available build number = 241006.\r\nACFS-9232:     Driver available build version = 23.0.0.0.0 (23.6.0.24.10).\r\n[grid@o23c1n1s2 ~]$ $ORACLE_HOME\/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 = 240702.1.\r\nAFD-9231:     Driver build version = 23.0.0.0.0 (23.5.0.24.07).\r\nAFD-9547:     Driver available build number = 241006.\r\nAFD-9232:     Driver available build version = 23.0.0.0.0 (23.6.0.24.10).\r\n[grid@o23c1n1s2 ~]$\r\n<\/pre>\n<p style=\"text-align: justify;\">In one dedicated post, I will show how to update the drivers. It is only one step executed in each node, but this requires downtime since it will stop all resources running in the node. Even I recommend restarting of machine to have a clean kernel start with the new drivers.<\/p>\n<h1 style=\"text-align: justify;\">Conclusion<\/h1>\n<p style=\"text-align: justify;\">The patching using the Zero-Downtime Oracle Grid Infrastructure Patching (ZDOGIP) with the Gold Image still allows the upgrade of the GI without interruption at databases. This is important for environments where the remaining nodes can\u2019t absorb the whole load of the database instance running in the patched node.<\/p>\n<p style=\"text-align: justify;\">The important detail is linked with the AFD and ACFS kernel drivers. If the <em>skipDriverUpdate<\/em> is not specified, the <em>root.sh<\/em> will execute and shutdown all the databases, causing downtime. You need to be aware of the compatibility matrix between the new GI version and the OS kernel.<\/p>\n<p style=\"text-align: justify;\">For the last, is important to notice that when using Gold Image we need two steps. The first is the installation, and the second is the switch. But this is good because allows us to prepare the installation without any impact on the running databases, and later do the switch in a maintenance window. This can reduce even more the possibility of impact on the environment.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Disclaimer<\/strong>: \u201c<em>The 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 purposes, and specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.<\/em>\u201d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you know, the 23ai was released for Cloud and Engineered Systems (Exadata and ExaCC) first, I already explored these in previous posts as well. And since the patches already started to be released, now with the patch for 23.6, we can re-test the feature Zero-Downtime Oracle Grid Infrastructure Patching (ZDOGIP). The steps here are [&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_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},"jetpack_post_was_ever_published":false},"categories":[179,29,77,6,56,141,5,152,42,14,12],"tags":[180,80,165,75,65,135,124,169],"class_list":["post-1091","post","type-post","status-publish","format-standard","hentry","category-23ai","category-database","category-engineeredsystems","category-exadata","category-grid-infrastructure","category-maa","category-oracle","category-patch","category-rac","category-update","category-upgrade","tag-23ai","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 v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon<\/title>\n<meta name=\"description\" content=\"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.\" \/>\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\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-30T22:46:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"801\" \/>\n\t<meta property=\"og:image:height\" content=\"601\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE\",\"datePublished\":\"2024-10-30T22:46:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/\"},\"wordCount\":1766,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/GI236-2-02.jpg\",\"keywords\":[\"23ai\",\"ASM\",\"Grid Infrastructure\",\"MAA\",\"Oracle\",\"Patch\",\"Upgrade\",\"Zero-Downtime\"],\"articleSection\":[\"23ai\",\"Database\",\"Engineered Systems\",\"Exadata\",\"Grid Infrastructure\",\"MAA\",\"Oracle\",\"Patch\",\"RAC\",\"Update\",\"Upgrade\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/\",\"name\":\"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/GI236-2-02.jpg\",\"datePublished\":\"2024-10-30T22:46:58+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/GI236-2-02.jpg\",\"contentUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/GI236-2-02.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE\"}]},{\"@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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"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":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon","description":"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.","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\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/","og_locale":"en_US","og_type":"article","og_title":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon","og_description":"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.","og_url":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/","og_site_name":"Fernando Simon","article_published_time":"2024-10-30T22:46:58+00:00","og_image":[{"width":801,"height":601,"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg","type":"image\/jpeg"}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE","datePublished":"2024-10-30T22:46:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/"},"wordCount":1766,"commentCount":3,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg","keywords":["23ai","ASM","Grid Infrastructure","MAA","Oracle","Patch","Upgrade","Zero-Downtime"],"articleSection":["23ai","Database","Engineered Systems","Exadata","Grid Infrastructure","MAA","Oracle","Patch","RAC","Update","Upgrade"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/","url":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/","name":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg","datePublished":"2024-10-30T22:46:58+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"How to use the Zero-Downtime Patch (zeroDowntimeGIPatching) for Oracle Grid Infrastructure 23ai using Gold Image. All the steps covered.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/10\/GI236-2-02.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-zero-downtime-oracle-grid-infrastructure-patching-gold-image\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"23ai, Zero-Downtime Oracle Grid Infrastructure Patching \u2013 GOLD IMAGE"}]},{"@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:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","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-hB","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1091","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=1091"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1091\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=1091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=1091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=1091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}