When I worked on Oracle Cloud 20c for my Data Dictionary Changes post, I ran into a problem with DST difference. Oracle 20c (20.2) is coming with DST V34 while Oracle 19c has V32 so I got ORA-39405 when I tried to import a table with data from 20c to 19c (see Mike’s post about this).
Luckily, sometime after Mike published his blog Oracle released a DST V34 patch for 19c, so I installed it and continued. But in the meantime, when I looked for some information about DST patch I found interesting info about DST patches in multitenant environments.
This is how you install DST patch (assuming you use the utltz scripts):
- Download and unzip the DST patch
- Use opatch utility to install the patch
- Run the utltz_upg_check.sql script
- Run the utltz_upg_apply.sql script (which will restart the database a couple of time automatically)
There are a few different options and consideration, so please review the documentation before updating the DST information.
When working with a multitenant environment, there are some important things to know:
- You should run the scripts for each PDB as well
- Updating the DST info at the CDB level does not affect the PDBs and updating the DST info at a PDB level does not affect other PDBs
- A new PDB will get the DST information from PDB$SEED
- Since PDB$SEED is read-only, you cannot update its DST information (so it will contain the DST information that the database had at time of creation)
It’s very important to know that each time you provision a new PDB after installing DST patch, you should update its DST information before starting to work with it.