Some customers prefer to install Oracle homes in a path that indicates the patch level, like:
/u01/app/oracle/dbhome_1928
1928 indicates this is Oracle Database 19c with Release Update 28. If you use AutoUpgrade to create your Oracle home, you can specify that path in your config file:
patch1.target_home=/u01/app/oracle/dbhome_1928
To ease automation, AutoUpgrade can dynamically determine the target Oracle home using placeholders. After downloading the patches, it checks which Release Update it will apply.
patch1.target_home=/u01/app/oracle/dbhome_%RELEASE%%UPDATE%
Easier Patching
Take a look at this config file
global.global_log_dir=/home/oracle/autoupgrade-patching/log
global.keystore=/home/oracle/autoupgrade-patching/keystore
global.folder=/home/oracle/patch-repo
patch1.source_home=/u01/app/oracle/product/dbhome_1927
patch1.target_home=/u01/app/oracle/product/dbhome_%RELEASE%%UPDATE%
patch1.sid=FTEX
patch1.patch=RECOMMENDED
patch=RECOMMENDEDor evenpatch=RUwould always get the latest Release Update. At time of writing, that would be 19.28.target_homecontains the placeholders. After AutoUpgrade determined that 19.28 is the latest Release Update, it would dynamically determine the Oracle home path.- You would still need to update
source_homein the config file. It will change after each run because you use out-of-place patching.
Now, you can just start AutoUpgrade every quarter:
java -jar autoupgrade.jar \
-config FTEX.cfg \
-patch \
-mode deploy
- AutoUpgrade downloads the latest Release Update and builds a new Oracle home for your – with a dynamically created path reflecting the Release Update.
Ain’t that easy?
Other Release Updates
What if you want to install an older Release Update. That works too:
patch1.target_home=/u01/app/oracle/product/dbhome_%RELEASE%_%UPDATE%
patch1.patch=RU:19.27,OPATCH
This will install the Oracle home in:
/u01/app/oracle/product/dbhome_19_27
Even Easier
Here’s another way. It requires that the environment is set correctly and works entirely without a config file.
export ORACLE_SID=FTEX
export ORACLE_HOME=/u01/app/oracle/product/19
export AU_LOG_DIR="/home/oracle/autoupgrade-patching/log_"`date +%Y%m%d_%H%M%S`
java -jar autoupgrade.jar \
-config_values "global.global_log_dir=$AU_LOG_DIR,global.folder=/home/oracle/patch-repo,download=no,target_home=/u01/app/oracle/product/dbhome_%RELEASE%%UPDATE%,patch=RECOMMENDED" \
-patch \
-mode deploy
- AutoUpgrade takes
sidandsource_homefrom the environment variablesORACLE_SIDandORACLE_HOME. - Then you specify other parameters as a comma-separated list using
-config_values. - Notice the
target_homewith placeholders in the long list of parameters. - The AutoUpgrade logging directory uses a timestamp to ensure a new one is used on each invocation.
Final Words
It’s now easier to automate creation of Oracle homes using AutoUpgrade.
Do you think this feature is useful? Do you need other replacement variables?
Leave a comment below and let me know.
Dear Daniel,
Good update – thank You.
Is it possible to use a configuration file (for static variables that do not change or are provided by variables like: %RELEASE%, %UPDATE%) and for other variables parameter (like source_home) use: -config_values and than use environment variables? Or can we use environment variables (like
ORACLE_HOME,ORACLE_sid) in config file?Regards,
Michał
LikeLike
Hi Michał,
You can’t use environment variables inside the config file. The only substitution variables are those defined in the blog post (RELEASE and UPDATE).
If you wan’t to use -config_values you can have environment variables and all other must be specified in the -config_values parameter.
Regards,
Daniel
LikeLike