You can use AutoUpgrade to upgrade a database using only a single command line. No config file is needed!
Whenever we talk about AutoUpgrade, we also mention the config file. The file that contains information about what has to be upgraded. A very simple version of such a config file could look like this:
upg1.sid=DB12
upg1.source_home=/u01/app/oracle/product/12.2.0.1
upg1.target_home=/u01/app/oracle/product/19
This is the preferred and recommended way of using AutoUpgrade. But you can actually specify everything on the command line.
Upgrade in One Line
By using the command line option config_values
you can now specify the config file entries on the command line. Instead of using the above config file you could execute:
java -jar autoupgrade.jar \
-config_values "sid=DB12,source_home=/u01/app/oracle/product/12.2.0.1,target_home=/u01/app/oracle/product/19" \
-mode analyze
Notice how I used config_values
to specify the contents of the config file. The prefix that you have to use in the config file (in this case upg1) is not used here (only for global entries, like global.autoupg_log_dir
).
If you have several databases to upgrade, you separate them with as asterisk (*):
-config_values "sid=DB1,...,*,sid=DB2,...,*,sid=DB3,..."
Using Environment Variables
A few of the config file entries can be specified as environment variables instead:
Config file entry | Environment variable |
---|---|
sid | $ORACLE_SID |
source_home | $ORACLE_HOME |
target_home | $ORACLE_TARGET_HOME |
target_version | $ORACLE_TARGET_VERSION |
So, you can start AutoUpgrade like this as well:
export ORACLE_SID=DB12
export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1
export ORACLE_TARGET_HOME=/u01/app/oracle/product/19
java -jar autoupgrade.jar -config_values -mode analyze
And it works fine on Windows as well. Just use set
instead of export
.
What Happens
AutoUpgrade first needs to determine the global logging directory (global.autoupg_log_dir
).
- If you specify the global logging directory it will be used.
- If you do not specify the global logging directory one of the following will be used:
- Linux/Unix: /tmp/autoupgrade
- Windows: C:\Users\name\AppData\Local\Temp\autoupgrade
Next, AutoUpgrade will create a config file using the information supplied either using config_values
or from the environment.
From here on AutoUpgrade behaves as usual.
Conclusion
If needed, you can provide all input to AutoUpgrade in one command line. This is useful if you are using AutoUpgrade in scripts or from Ansible or similar orchestration tools.
I would still recommend the use of a config file. It is easier to read and write the options in a nice formatted text file. Further, you avoid the potential trouble of escaping characters on the command line. And, finally, you avoid having a very long an unreadable command line. These arguments are, by the way, the same we use when we recommend using a parameter file (.par) for Data Pump.
Further Reading
- AutoUpgrade Command-Line Parameters – Oracle Database 21c Upgrade Guide