Monitoring catctl.pl progress during upgrades

The parallel upgrade catctl.pl can resume once an upgrade has stopped for unexpected reasons. Before Oracle 12.2 you can restart it with the -p option specifying the phase it stopped. And since Oracle 12.2 you can only use the -R option to resume it. This blog post will give you a bit more insights in monitoring catctl.pl progress during upgrades.

Monitoring catctl.pl progress during upgrades

Monitoring catctl.pl progress during upgrades

I blogged about the resume options for catctl.pl a while ago:

But you may ask yourself: How does the tool know where to resume? And do you need to keep the logfiles in order to allow it to resume correctly?

Actually the parallel upgrade creates two tables during an upgrade:

  • REGISTRY$UPG_RESUME
  • REGISTRY$UPG_SUMMARY

These two tables are used to keep track of the upgrade process.

A closer look into REGISTRY$UPG_RESUME

The table REGISTRY$UPG_RESUME gets only create during a database upgrade. You can monitor the phases with this query:

column MIN format 999
column SEC format 999
column PHASENO format 99999

select phaseno,
       extract( minute from diff ) MIN,
       extract( second from diff ) SEC
  from
    (select phaseno, (endtime-starttime) diff from registry$upg_resume);

This will give you for instance the following result:

PHASENO  MIN  SEC
------- ---- ----
      0    1   52
      1    0   57
      3    0   24
      5    0   18
      6    0   14
      7    0   12
      9    0   41
     11    0   47
     13    0   10
     15    0   21
     17    0    3
     19    0   37
     21    0    9
...

You may recognize that not every phase gets an entry into the REGISTRY$UPG_RESUME table. The simple reason is that for instance phases 2 and 4 are so called RESTART phases were we clean-out worker processes and start a new workers set. Those don’t need to be recorded.

But what happens when you’d like to resume an upgrade from let’s say phase 20? Then it will be resumed from the previous phase, i.e. 19 in this case.

And REGISTRY$UPG_SUMMARY?

The table REGISTRY$UPG_SUMMARY simply holds the information where the upg_summary.log gets written to and stored in. In addition it holds the upgrade start and end times and a potential error count.

select REPORTNAME from REGISTRY$UPG_SUMMARY;

REPORTNAME
-------------------------------------------
/home/oracle/upg_summary.log

The upg_summary.log holds information mainly about how long each component has taken to upgrade – and of course the summary information, e.g.:

Oracle Database 12.2 Post-Upgrade Status Tool           04-13-2018 06:59:49

Component                               Current         Version  Elapsed Time
Name                                    Status          Number   HH:MM:SS

Oracle Server                          UPGRADED      12.2.0.1.0  00:14:28
Oracle Workspace Manager               UPGRADED      12.2.0.1.0  00:01:02
Oracle Label Security                  UPGRADED      12.2.0.1.0  00:00:10
Oracle XML Database                    UPGRADED      12.2.0.1.0  00:03:03
Final Actions                                                    00:03:15
Post Upgrade                                                     00:01:28

Total Upgrade Time: 00:23:26

Database time zone version is 14. It is older than current release time
zone version 26. Time zone upgrade is needed using the DBMS_DST package.

Grand Total Upgrade Time:    [0d:0h:23m:26s]

–Mike

Leave a Reply

Your email address will not be published. Required fields are marked *