{"id":450,"date":"2021-12-22T09:32:57","date_gmt":"2021-12-22T08:32:57","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/2021\/12\/22\/upgrade-ahf-and-tfa-on-an-oda\/"},"modified":"2022-04-06T08:26:14","modified_gmt":"2022-04-06T06:26:14","slug":"upgrade-ahf-and-tfa-on-an-oda","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/","title":{"rendered":"Upgrade AHF and TFA on an ODA"},"content":{"rendered":"<p>TFA (Trace File Analyzer) is part of AHF (Autonomous Health Framework). Those tools are preinstalled and part of ODA (Oracle Database Appliance). As you might know patching and upgrading are normally always going through ODA global Bundle patches. AHF can, without any problem, be upgraded independently. In this blog I wanted to share with you how I upgraded TFA with latest v21.4 version. The upgrade is performed with root user. This version addresses CVE-2021-45105\/CVE-2021-44228\/CVE-2021-45046. For reminder Apache Log4j Vulnerabilities are covered by CVE-2021-44228 and CVE-2021-45046.<\/p>\n<p><!--more--><\/p>\n<h3>Check current version of TFA<\/h3>\n<p>First we can check if TFA is up and running and which version is currrently used.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 ~]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/tfactl status\nWARNING - TFA Software is older than 180 days. Please consider upgrading TFA to the latest version.\n\n.------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID  | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 5388 | 5000 | 20.1.3.0.0 | 20130020200429161658 | COMPLETE         |\n'-----------+---------------+------+------+------------+----------------------+------------------'\n<\/pre>\n<p><\/br><\/p>\n<p>As we can see we are currently running TFA\/AHF 20.1.3.0.0 version.<\/p>\n<h3>Check running processes<\/h3>\n<p>We can check as well the TFA running processes.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 ~]# ps -ef | grep -i tfa | grep -v grep\nroot      4536     1  0 Oct18 ?        00:18:06 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\nroot      5388     1  0 Oct18 ?        02:55:07 \/opt\/oracle\/dcs\/oracle.ahf\/jre\/bin\/java -server -Xms512m -Xmx1024m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:HeapDumpPath=\/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/tfa -XX:ParallelGCThreads=5 oracle.rat.tfa.TFAMain \/opt\/oracle\/dcs\/oracle.ahf\/tfa\n[root@ODA01 ~]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Check the location of AHF<\/h3>\n<p>It is important to check in which directory AHF is currently installed in order to provide appropriate directory in the upgrade command option. Thus the setup script will be able to see that there is a current version installed and will suggest to upgrade it. Otherwise another new AHF installation will be performed.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 ~]# cat \/etc\/oracle.ahf.loc\n\/opt\/oracle\/dcs\/oracle.ahf\n<\/pre>\n<p><\/br><\/p>\n<p>AHF is installed on the ODA in the \/opt\/oracle\/dcs\/oracle.ahf directory.<\/p>\n<h3>Backup of the current AHF version<\/h3>\n<p>Before doing any modification it is important to backup current AHF version for fallback if needed. I have been doing a tar of the currrent installation directory.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,17,26,28,30]\">\n[root@ODA01 ~]# cd \/opt\/oracle\/dcs\n\n[root@ODA01 dcs]# ls -ltrh\ntotal 25M\ndrwxr-xr-x.  3 root   root     4.0K Jul  2  2019 rdbaas\ndrwxr-xr-x.  3 root   root     4.0K Jul  2  2019 scratch\ndrwx------   2 root   root     4.0K Jul  2  2019 dcsagent_wallet\ndrwxr-xr-x   2 root   root     4.0K Jul  4  2019 ft\ndrwxr-xr-x   2 root   root     4.0K Aug 11  2019 Inventory\ndrwxr-xr-x   4 root   root     4.0K May 17  2020 dcs-ui\n-rwxr-xr-x   1 root   root     6.8K May 21  2020 configuredcs.pl\n-rw-r--r--   1 root   root      25M May 21  2020 dcs-ui.zip\ndrwxr-xr-x   4 root   root     4.0K Sep  2  2020 repo\n-rw-r--r--   1 root   root        0 Sep  2  2020 dcscontroller-stderr.log\n-rw-r--r--   1 root   root     6.7K Sep  3  2020 dcscontroller-stdout.log\ndrwxr-xr-x   6 oracle oinstall  32K Sep  3  2020 commonstore\ndrwxr-xr-x  12 root   root     4.0K Sep  3  2020 oracle.ahf\ndrwxr-xr-x.  2 root   root     4.0K Sep  3  2020 agent\ndrwxr-xr-x.  2 root   root     4.0K Sep  3  2020 sample\ndrwxr-xr-x   4 root   root     4.0K Sep  3  2020 java\ndrwxr-xr-x.  3 root   root     4.0K Sep  3  2020 conf\ndrwxr-xr-x.  3 root   root     4.0K Sep  3  2020 dcscli\ndrwxr-xr-x.  2 root   root     4.0K Sep  3  2020 bin\ndrwx------.  5 root   root      20K Dec 21 00:00 log\n\n[root@ODA01 dcs]# mkdir \/root\/backup_ahf_for_upgrade\/\n\n[root@ODA01 dcs]# tar -czf \/root\/backup_ahf_for_upgrade\/oracle.ahf.20.1.3.0.0.tar .\/oracle.ahf\n\n[root@ODA01 dcs]# ls -ltrh \/root\/backup_ahf_for_upgrade\ntotal 1.3G\n-rw-r--r-- 1 root root 1.3G Dec 21 14:26 oracle.ahf.20.1.3.0.0.tar\n<\/pre>\n<p><\/br><\/p>\n<h3>Download new AHF version<\/h3>\n<p>You can download latest AHF version through my oracle support portal. Download patch 30166242 :<br \/>\n<em><strong>Patch 30166242: PLACEHOLDER &#8211; DOWNLOAD LATEST AHF (TFA and ORACHK\/EXACHK)<\/strong><\/em><\/p>\n<p>I have created a directory on the ODA to upload the patch :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 dcs]# mkdir \/u01\/app\/patch\/TFA\n<\/pre>\n<p><\/br><\/p>\n<h3>Upgrade AHF on the ODA<\/h3>\n<p>In this part we will see the procedure to upgrade AHF on the ODA. We first need to unzip the AHF-LINUX_v21.4.0.zip file and run ahf_setup. The installation script will recognise the existing 20.1.3 version and suggest to upgrade it.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,7,9,17,31,56]\">\nroot@ODA01 dcs]# cd \/u01\/app\/patch\/TFA\n\n[root@ODA01 TFA]# ls -ltrh\ntotal 394M\n-rw-r--r-- 1 root root 393M Dec 21 10:16 AHF-LINUX_v21.4.0.zip\n\n[root@ODA01 TFA]# unzip -q AHF-LINUX_v21.4.0.zip\n\n[root@ODA01 TFA]# ls -ltrh\ntotal 792M\n-r-xr-xr-x 1 root root 398M Dec 20 19:28 ahf_setup\n-rw-r--r-- 1 root root  384 Dec 20 19:30 ahf_setup.dat\n-rw-r--r-- 1 root root 1.5K Dec 20 19:31 README.txt\n-rw-r--r-- 1 root root  625 Dec 20 19:31 oracle-tfa.pub\n-rw-r--r-- 1 root root 393M Dec 21 10:16 AHF-LINUX_v21.4.0.zip\n\n[root@ODA01 TFA]# .\/ahf_setup -ahf_loc \/opt\/oracle\/dcs -data_dir \/opt\/oracle\/dcs\n\nAHF Installer for Platform Linux Architecture x86_64\n\nAHF Installation Log : \/tmp\/ahf_install_214000_58089_2021_12_21-14_30_06.log\n\nStarting Autonomous Health Framework (AHF) Installation\n\nAHF Version: 21.4.0 Build Date: 202112200745\n\nAHF is already installed at \/opt\/oracle\/dcs\/oracle.ahf\n\nInstalled AHF Version: 20.1.3 Build Date: 202004291616\n\nDo you want to upgrade AHF [Y]|N : Y\n\nUpgrading \/opt\/oracle\/dcs\/oracle.ahf\n\nShutting down AHF Services\nStopped OSWatcher\nNothing to do !\nShutting down TFA\n\/etc\/init.d\/init.tfa: line 661: \/sbin\/stop: No such file or directory\n. . . . .\nKilling TFA running with pid 5388\n. . .\nSuccessfully shutdown TFA..\n\nStarting AHF Services\nStarting TFA..\nWaiting up to 100 seconds for TFA to be started..\n. . . . .\n. . . . .\n. . . . .\nSuccessfully started TFA Process..\n. . . . .\nTFA Started and listening for commands\n\n\nDo you want AHF to store your My Oracle Support Credentials for Automatic Upload ? Y|[N] : N\n\nAHF is successfully upgraded to latest version\n\n.-----------------------------------------------------------------.\n| Host      | TFA Version | TFA Build ID         | Upgrade Status |\n+-----------+-------------+----------------------+----------------+\n| ODA01     |  21.4.0.0.0 | 21400020211220074549 | UPGRADED       |\n'-----------+-------------+----------------------+----------------'\n\nMoving \/tmp\/ahf_install_214000_58089_2021_12_21-14_30_06.log to \/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/ahf\/\n\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Check new AHF version<\/h3>\n<p>We can check that the new version of AHF is 21.4.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl version\n\nAHF version: 21.4.0\n<\/pre>\n<p><\/br><\/p>\n<h3>Check TFA running processes<\/h3>\n<p>We can check that TFA is up and running.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# ps -ef | grep -i tfa | grep -v grep\nroot      4536     1  0 Oct18 ?        00:18:06 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\nroot     61938     1 62 14:31 ?        00:01:36 \/opt\/oracle\/dcs\/oracle.ahf\/jre\/bin\/java -server -Xms512m -Xmx1024m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:HeapDumpPath=\/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/tfa -XX:ParallelGCThreads=5 oracle.rat.tfa.TFAMain \/opt\/oracle\/dcs\/oracle.ahf\/tfa\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<p>After the upgrade script is completed there might still be some TFA processes running in order to rebuild the inventory :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nroot     15469 15077  0 14:58 ?        00:00:00 sh -c \/opt\/oracle\/dcs\/oracle.ahf\/tfa\/bin\/tfactl rediscover -mode full &gt; \/dev\/null 2&gt;&amp;1\nroot     15470 15469  0 14:58 ?        00:00:00 \/bin\/sh \/opt\/oracle\/dcs\/oracle.ahf\/tfa\/bin\/tfactl rediscover -mode full\nroot     15505 15500  0 14:58 ?        00:00:00 \/bin\/sh \/opt\/oracle\/dcs\/oracle.ahf\/tfa\/bin\/tfactl.tfa rediscover -mode full\nroot     15524 15505  1 14:58 ?        00:00:00 \/u01\/app\/19.0.0.0\/grid\/perl\/bin\/perl \/opt\/oracle\/dcs\/oracle.ahf\/tfa\/bin\/tfactl.pl rediscover -mode full\n<\/pre>\n<p><\/br><\/p>\n<p>Make sure all those processes are completed successfully (not existing any more) before stopping AHF. Otherwise your inventory status will end with a STOPPED status.<\/p>\n<h3>Check status of AHF<\/h3>\n<p>We can check AHF status.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl statusahf\n\n\n.-------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID   | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+-------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 61938 | 5000 | 21.4.0.0.0 | 21400020211220074549 | COMPLETE         |\n'-----------+---------------+-------+------+------------+----------------------+------------------'\n\n\nNo scheduler for any ID\n\norachk daemon is not running\n\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<p>TFA is running. No AHF scheduler. No orachk daemon.<\/p>\n<h3>Stop AHF and TFA<\/h3>\n<p>To check all is working as expected, let&#8217;s stop AHF.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl stopahf\n\nStopping TFA from the Command Line\nStopped OSWatcher\nNothing to do !\nPlease wait while TFA stops\nPlease wait while TFA stops\nTFA-00002 Oracle Trace File Analyzer (TFA) is not running\nTFA Stopped Successfully\nSuccessfully stopped TFA..\n\norachk scheduler is not running\n<\/pre>\n<p><\/br><\/p>\n<p>There is still one process for TFA, the one from init.d :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# ps -ef | grep -i tfa | grep -v grep\nroot      4536     1  0 Oct18 ?        00:18:06 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<p>We are going to stop it :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/etc\/init.d\/init.tfa stop\nStopping TFA from init for shutdown\/reboot\nNothing to do !\nTFA Stopped Successfully\nSuccessfully stopped TFA..\n<\/pre>\n<p><\/br><\/p>\n<p>And there is no more TFA processes up and running :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# ps -ef | grep -i tfa | grep -v grep\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Start AHF<\/h3>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl startahf\n\nStarting TFA..\nWaiting up to 100 seconds for TFA to be started..\n. . . . .\n. . . . .\nSuccessfully started TFA Process..\n. . . . .\nTFA Started and listening for commands\n\nINFO: Starting orachk scheduler in background. Details for the process can be found at \/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/orachk\/compliance_start_211221_143845.log\n<\/pre>\n<p><\/br><\/p>\n<p>We can check TFA status :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/tfactl status\n\n.-------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID   | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+-------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 87371 | 5000 | 21.4.0.0.0 | 21400020211220074549 | COMPLETE         |\n'-----------+---------------+-------+------+------------+----------------------+------------------'\n<\/pre>\n<p><\/br><\/p>\n<p>We can check AHF status as well and see that we have now scheduler and orachk daemon up and running :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl statusahf\n\n\n.-------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID   | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+-------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 87371 | 5000 | 21.4.0.0.0 | 21400020211220074549 | COMPLETE         |\n'-----------+---------------+-------+------+------------+----------------------+------------------'\n\n------------------------------------------------------------\n\nMaster node = ODA01\n\norachk daemon version = 21.4.0\n\nInstall location = \/opt\/oracle\/dcs\/oracle.ahf\/orachk\n\nStarted at = Tue Dec 21 14:38:57 CET 2021\n\nScheduler type = TFA Scheduler\n\nScheduler PID:  87371\n\n------------------------------------------------------------\nID: orachk.autostart_client_oratier1\n------------------------------------------------------------\nAUTORUN_FLAGS  =  -usediscovery -profile oratier1 -dball -showpass -tag autostart_client_oratier1 -readenvconfig\nCOLLECTION_RETENTION  =  7\nAUTORUN_SCHEDULE  =  3 2 * * 1,2,3,4,5,6\n------------------------------------------------------------\n------------------------------------------------------------\nID: orachk.autostart_client\n------------------------------------------------------------\nAUTORUN_FLAGS  =  -usediscovery -tag autostart_client -readenvconfig\nCOLLECTION_RETENTION  =  14\nAUTORUN_SCHEDULE  =  3 3 * * 0\n------------------------------------------------------------\n\nNext auto run starts on Dec 22, 2021 02:03:00\n\nID:orachk.AUTOSTART_CLIENT_ORATIER1\n<\/pre>\n<p><\/br><\/p>\n<p>We can also check TFA processes :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]#  ps -ef | grep -i tfa | grep -v grep\nroot     86989     1  0 14:38 ?        00:00:00 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\nroot     87371     1 19 14:38 ?        00:00:13 \/opt\/oracle\/dcs\/oracle.ahf\/jre\/bin\/java -server -Xms512m -Xmx1024m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:HeapDumpPath=\/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/tfa -XX:ParallelGCThreads=5 oracle.rat.tfa.TFAMain \/opt\/oracle\/dcs\/oracle.ahf\/tfa\nroot     92789 87371 38 14:39 ?        00:00:00 \/u01\/app\/19.0.0.0\/grid\/perl\/bin\/perl \/opt\/oracle\/dcs\/oracle.ahf\/tfa\/bin\/tfactl.pl availability product Europe\/Zurich\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Stop AHF and TFA<\/h3>\n<p>We will stop AHF and TFA again.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl stopahf\n\nStopping TFA from the Command Line\nNothing to do !\nPlease wait while TFA stops\nPlease wait while TFA stops\nTFA-00002 Oracle Trace File Analyzer (TFA) is not running\nTFA Stopped Successfully\nSuccessfully stopped TFA..\n\nStopping orachk scheduler ...\nRemoving orachk cache discovery....\nNo orachk cache discovery found.\n\n\n\nUnable to send message to TFA\n\n\n\nRemoved orachk from inittab\n\n\nStopped orachk\n<\/pre>\n<p><\/br><\/p>\n<p>AHF status checks :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl statusahf\n\nTFA-00002 Oracle Trace File Analyzer (TFA) is not running\n\n\nNo scheduler for any ID\n\norachk daemon is not running\n<\/pre>\n<p><\/br><\/p>\n<p>TFA status checks :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/tfactl status\nTFA-00002 Oracle Trace File Analyzer (TFA) is not running\n<\/pre>\n<p><\/br><\/p>\n<p>Check processes and stop TFA init.d :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,10]\">\n[root@ODA01 TFA]#  ps -ef | grep -i tfa | grep -v grep\nroot     86989     1  0 14:38 ?        00:00:00 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\n\n[root@ODA01 TFA]# \/etc\/init.d\/init.tfa stop\nStopping TFA from init for shutdown\/reboot\nNothing to do !\nTFA Stopped Successfully\nSuccessfully stopped TFA..\n\n[root@ODA01 TFA]#  ps -ef | grep -i tfa | grep -v grep\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Restart only TFA<\/h3>\n<p>Finally we only want to keep TFA up and running. No AHF scheduling or orachk daemon. So we are only going to start TFA.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/etc\/init.d\/init.tfa start\nStarting TFA..\nWaiting up to 100 seconds for TFA to be started..\n. . . . .\nSuccessfully started TFA Process..\n. . . . .\nTFA Started and listening for commands\n<\/pre>\n<p><\/br><\/p>\n<h3>Final checks<\/h3>\n<p>TFA running processes :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]#  ps -ef | grep -i tfa | grep -v grep\nroot      5344     1  0 14:43 ?        00:00:00 \/bin\/sh \/etc\/init.d\/init.tfa run &gt;\/dev\/null 2&gt;&amp;1 &lt;\/dev\/null\nroot      5732     1 77 14:43 ?        00:00:11 \/opt\/oracle\/dcs\/oracle.ahf\/jre\/bin\/java -server -Xms512m -Xmx1024m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:HeapDumpPath=\/opt\/oracle\/dcs\/oracle.ahf\/data\/ODA01\/diag\/tfa -XX:ParallelGCThreads=5 oracle.rat.tfa.TFAMain \/opt\/oracle\/dcs\/oracle.ahf\/tfa\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<p>TFA status :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/tfactl status\n\n.------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID  | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 5732 | 5000 | 21.4.0.0.0 | 21400020211220074549 | COMPLETE         |\n'-----------+---------------+------+------+------------+----------------------+------------------'\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<p>AHF status :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[root@ODA01 TFA]# \/opt\/oracle\/dcs\/oracle.ahf\/bin\/ahfctl statusahf\n\n\n.------------------------------------------------------------------------------------------------.\n| Host      | Status of TFA | PID  | Port | Version    | Build ID             | Inventory Status |\n+-----------+---------------+------+------+------------+----------------------+------------------+\n| ODA01     | RUNNING       | 5732 | 5000 | 21.4.0.0.0 | 21400020211220074549 | COMPLETE         |\n'-----------+---------------+------+------+------------+----------------------+------------------'\n\n\nNo scheduler for any ID\n\norachk daemon is not running\n\n[root@ODA01 TFA]#\n<\/pre>\n<p><\/br><\/p>\n<h3>Cleanup<\/h3>\n<p>We can still keep previous AHF version backup a few days just in case and remove it later.<\/p>\n<p>The AHF installation files can be deleted :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,11,13]\">\n[root@ODA01 ~]# cd \/u01\/app\/patch\/\n\n[root@ODA01 patch]# ls -l TFA\ntotal 810144\n-rw-r--r-- 1 root root 411836201 Dec 21 10:16 AHF-LINUX_v21.4.0.zip\n-r-xr-xr-x 1 root root 416913901 Dec 20 19:28 ahf_setup\n-rw-r--r-- 1 root root       384 Dec 20 19:30 ahf_setup.dat\n-rw-r--r-- 1 root root       625 Dec 20 19:31 oracle-tfa.pub\n-rw-r--r-- 1 root root      1525 Dec 20 19:31 README.txt\n\n[root@ODA01 patch]# rm -rf TFA\n\n[root@ODA01 patch]# ls\n[root@ODA01 patch]#\n<\/pre>\n<p><\/br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TFA (Trace File Analyzer) is part of AHF (Autonomous Health Framework). Those tools are preinstalled and part of ODA (Oracle Database Appliance). As you might know patching and upgrading are normally always going through ODA global Bundle patches. AHF can, without any problem, be upgraded independently. In this blog I wanted to share with you [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[94,95,79,96,97],"type_dbi":[],"class_list":["post-450","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-ahf","tag-log4shell","tag-oda","tag-oracle","tag-tfa"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Upgrade AHF and TFA on an ODA - dbi Blog<\/title>\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.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Upgrade AHF and TFA on an ODA\" \/>\n<meta property=\"og:description\" content=\"TFA (Trace File Analyzer) is part of AHF (Autonomous Health Framework). Those tools are preinstalled and part of ODA (Oracle Database Appliance). As you might know patching and upgrading are normally always going through ODA global Bundle patches. AHF can, without any problem, be upgraded independently. In this blog I wanted to share with you [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-22T08:32:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-06T06:26:14+00:00\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"Upgrade AHF and TFA on an ODA\",\"datePublished\":\"2021-12-22T08:32:57+00:00\",\"dateModified\":\"2022-04-06T06:26:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\"},\"wordCount\":586,\"commentCount\":0,\"keywords\":[\"AHF\",\"log4shell\",\"ODA\",\"Oracle\",\"tfa\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\",\"name\":\"Upgrade AHF and TFA on an ODA - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2021-12-22T08:32:57+00:00\",\"dateModified\":\"2022-04-06T06:26:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upgrade AHF and TFA on an ODA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Upgrade AHF and TFA on an ODA - dbi Blog","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.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/","og_locale":"en_US","og_type":"article","og_title":"Upgrade AHF and TFA on an ODA","og_description":"TFA (Trace File Analyzer) is part of AHF (Autonomous Health Framework). Those tools are preinstalled and part of ODA (Oracle Database Appliance). As you might know patching and upgrading are normally always going through ODA global Bundle patches. AHF can, without any problem, be upgraded independently. In this blog I wanted to share with you [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/","og_site_name":"dbi Blog","article_published_time":"2021-12-22T08:32:57+00:00","article_modified_time":"2022-04-06T06:26:14+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"Upgrade AHF and TFA on an ODA","datePublished":"2021-12-22T08:32:57+00:00","dateModified":"2022-04-06T06:26:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/"},"wordCount":586,"commentCount":0,"keywords":["AHF","log4shell","ODA","Oracle","tfa"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/","url":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/","name":"Upgrade AHF and TFA on an ODA - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2021-12-22T08:32:57+00:00","dateModified":"2022-04-06T06:26:14+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/upgrade-ahf-and-tfa-on-an-oda\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Upgrade AHF and TFA on an ODA"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=450"}],"version-history":[{"count":2,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions"}],"predecessor-version":[{"id":641,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions\/641"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=450"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}