{"id":14784,"date":"2022-04-27T10:12:18","date_gmt":"2022-04-27T13:12:18","guid":{"rendered":"https:\/\/www.dbarj.com.br\/?p=14784"},"modified":"2022-04-27T10:13:30","modified_gmt":"2022-04-27T13:13:30","slug":"using-rest-api-with-oracle-autoupgrade-utility","status":"publish","type":"post","link":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/","title":{"rendered":"Using REST API with Oracle AutoUpgrade utility"},"content":{"rendered":"<p>Oracle AutoUpgrade utility, since version 22, is compatible with RESTful API. This brings all the advantages of using that interface that I won&#8217;t mention here, but the most important is that is no longer needed to SSH or create a shellscript to perform a database upgrade. Now all can be done simply by reaching the HTTP(S) endpoint exposed.<\/p>\n<p>In this post, I will show how to setup AutoUpgrade utility to work with REST.<\/p>\n<h4>Download JARs<\/h4>\n<p>First of all, you need to download the latest utilities:<\/p>\n<ul>\n<li>Latest <span id=\"kmPgTpl:r1:0:ol22\" class=\"xq\">AutoUpgrade Tool (<a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=2485457.1\" target=\"_blank\" rel=\"noopener\">Doc ID 2485457.1<\/a>)<\/span><\/li>\n<li>Latest Oracle REST Data Services (ORDS) (<a href=\"https:\/\/www.oracle.com\/database\/technologies\/appdev\/rest-data-services-downloads.html\" target=\"_blank\" rel=\"noopener\">here<\/a>)<\/li>\n<\/ul>\n<p>Now that you have all of them let&#8217;s start it. For this demo, I will be using the <a href=\"https:\/\/www.oracle.com\/downloads\/community\/vts-hands-on-labs-downloads.html\" target=\"_blank\" rel=\"noopener\">Hands-On Lab VirtualBox<\/a>.<\/p>\n<p>All the files above are placed on the <span style=\"font-family: courier new, courier, monospace;\"><strong>\/home\/oracle\/AU_REST <\/strong><\/span>folder of the VirtualBox.<\/p>\n<h4>Starting ORDS<\/h4>\n<p>First, connect to the host to install ORDS.<\/p>\n<p>In this tutorial, I will deploy ORDS in standalone mode, making it straightforward.<\/p>\n<p>For more details, check the <a href=\"https:\/\/docs.oracle.com\/cd\/E56351_01\/doc.30\/e87809\/installing-REST-data-services.htm#AELIG7026\" target=\"_blank\" rel=\"noopener\">official doc<\/a>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[oracle@hol ~]$ cd AU_REST\/\r\n[oracle@hol AU_REST]$ ls -l\r\ntotal 84448\r\n-rwxrwx---. 1 oracle dba  4798426 Apr 18 16:35 autoupgrade.jar\r\n-rwxr-x---. 1 oracle dba 81622442 Apr 18 16:34 ords-21.4.2.062.1806.zip\r\n[oracle@hol AU_REST]$ mkdir ords_install\r\n[oracle@hol AU_REST]$ unzip -q -d ords_install\/ ords-21.4.2.062.1806.zip\r\n[oracle@hol AU_REST]$ cd ords_install\/\r\n[oracle@hol ords_install]$ ls -l\r\ntotal 77548\r\ndrwxr-xr-x. 3 oracle dba       21 Mar  3 19:10 docs\r\ndrwxrwxrwx. 7 oracle dba       93 Mar  3 18:05 examples\r\n-rw-rw-rw-. 1 oracle dba     5744 Mar  3 18:05 FUTC.txt\r\n-rw-rw-rw-. 1 oracle dba    58565 Mar  3 18:05 index.html\r\n-rw-rw-rw-. 1 oracle dba     5744 Mar  3 18:05 license.txt\r\n-rw-r--r--. 1 oracle dba 79327439 Mar  3 19:10 ords.war\r\ndrwxrwxrwx. 2 oracle dba       36 Mar  3 18:05 params\r\ndrwxrwxrwx. 4 oracle dba       38 Mar  3 18:05 scripts\r\n[oracle@hol ords_install]$ java -jar ords.war standalone\r\nThis Oracle REST Data Services instance has not yet been configured.\r\nPlease complete the following prompts\r\n\r\n\r\nEnter the location to store configuration data: \/home\/oracle\/AU_REST\/conf\/\r\nEnter 1 if using HTTP or 2 if using HTTPS [1]:2\r\nEnter the HTTPS port [8443]:8443\r\nEnter the SSL hostname:hol\r\nEnter 1 to use the self-signed certificate or 2 if you will provide the SSL certificate [1]:1\r\n2022-04-18T14:46:40.536Z INFO        HTTPS listening on host: localhost port: 8443\r\n2022-04-18T14:46:40.565Z INFO        Disabling document root because the specified folder does not exist: \/home\/oracle\/AU_REST\/conf\/ords\/standalone\/doc_root\r\n2022-04-18T14:46:41.534Z INFO        No pools configured yet\r\n2022-04-18T14:46:42.603Z INFO        Oracle REST Data Services initialized\r\nOracle REST Data Services version : 21.4.2.r0621806\r\nOracle REST Data Services server info: jetty\/9.4.44.v20210927<\/pre>\n<p>Note I&#8217;ve placed the ORDS files under the <span style=\"font-family: courier new, courier, monospace;\">\/home\/oracle\/AU_REST\/conf\/<\/span> folder as this will be temporary. If you want to put it in a more permanent location, you can use something like <span style=\"font-family: courier new, courier, monospace;\">\/u01\/ords\/conf.<\/span><\/p>\n<p>I&#8217;ve also started the service using HTTPS to encrypt the network traffic and avoid connection sniffing.<\/p>\n<p><strong><span style=\"color: #800000;\">PS: Note that the AU API will be exposed to anyone with access to this endpoint (IP and Port) without authentication. You need to have a firewall on top of that.<br \/>\n<\/span><\/strong><\/p>\n<p>Now that the ORDS service is up and running, keep that window open and start another terminal to deploy the AutoUpgrade RESTful API. If you close or stop the ORDS, you can simply restart it by rerunning the same command:<\/p>\n<pre>$ java -jar ords.war standalone<\/pre>\n<h4>Check if ORDS is running<\/h4>\n<p>In another window, try to run the CURL command to ORDS endpoint and check if you get a &#8220;NotFound&#8221; response:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[oracle@hol ords_install]$ curl -k https:\/\/localhost:8443\/ords\/\r\n\r\n{\r\n    \"code\": \"NotFound\",\r\n    \"title\": \"Not Found\",\r\n    \"message\": \"The request could not be mapped to any database. Check the request URL is correct, and that URL to database mappings have been correctly configured\",\r\n    \"type\": \"tag:oracle.com,2020:error\/NotFound\",\r\n    \"instance\": \"tag:oracle.com,2020:ecid\/ANdQt15fgkopV7ppyPBnug\"\r\n}<\/pre>\n<p>Please note that receiving this &#8220;NotFound&#8221; return code is OK, as ORDS is still not fully configured. The problem will be if you get:<\/p>\n<pre>curl: (7) Failed connect to localhost:8443; Connection refused<\/pre>\n<p>In this case, you need to double-check your network and firewall.<\/p>\n<h4>Enabling AU REST<\/h4>\n<p>In the next step, we will enable the AutoUpgrade API in ORDS. For this, the following properties must be set:<\/p>\n<div>\n<pre>java -jar ords.war set-property autoupgrade.api.enabled true\r\n\r\njava -jar ords.war set-property autoupgrade.api.loglocation \/home\/oracle\/AU_REST\/autoupgrade_logs\r\n\r\njava -jar ords.war set-property autoupgrade.api.aulocation \/home\/oracle\/AU_REST\/autoupgrade.jar\r\n\r\njava -jar ords.war set-property autoupgrade.api.jvmlocation \/bin\/java<\/pre>\n<div><\/div>\n<\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[oracle@hol AU_REST]$ mkdir \/home\/oracle\/AU_REST\/autoupgrade_logs\r\n[oracle@hol AU_REST]$ ls -l\r\ntotal 84452\r\n-rwxrwx---. 1 oracle dba  4798426 Apr 18 16:35 autoupgrade.jar\r\ndrwxr-xr-x. 2 oracle dba        6 Apr 18 20:33 autoupgrade_logs\r\ndrwxr-xr-x. 3 oracle dba       18 Apr 18 20:31 conf\r\n-rwxr-x---. 1 oracle dba 81622442 Apr 18 16:34 ords-21.4.2.062.1806.zip\r\ndrwxr-xr-x. 6 oracle dba     4096 Apr 18 20:31 ords_install\r\n[oracle@hol AU_REST]$ cd ords_install\r\n[oracle@hol ords_install]$ java -jar ords.war set-property autoupgrade.api.enabled true\r\n2022-04-18T18:33:27.661Z INFO        Modified: \/home\/oracle\/AU_REST\/conf\/ords\/defaults.xml, setting: autoupgrade.api.enabled = true\r\n[oracle@hol ords_install]$ java -jar ords.war set-property autoupgrade.api.loglocation \/home\/oracle\/AU_REST\/autoupgrade_logs\r\n2022-04-18T18:33:48.282Z INFO        Modified: \/home\/oracle\/AU_REST\/conf\/ords\/defaults.xml, setting: autoupgrade.api.loglocation = \/home\/oracle\/AU_REST\/autoupgrade_logs\r\n[oracle@hol ords_install]$ java -jar ords.war set-property autoupgrade.api.aulocation \/home\/oracle\/AU_REST\/autoupgrade.jar\r\n2022-04-18T18:34:05.322Z INFO        Modified: \/home\/oracle\/AU_REST\/conf\/ords\/defaults.xml, setting: autoupgrade.api.aulocation = \/home\/oracle\/AU_REST\/autoupgrade.jar\r\n[oracle@hol ords_install]$ java -jar ords.war set-property autoupgrade.api.jvmlocation \/bin\/java\r\n2022-04-18T18:34:20.434Z INFO        Modified: \/home\/oracle\/AU_REST\/conf\/ords\/defaults.xml, setting: autoupgrade.api.jvmlocation = \/bin\/java\r\n[oracle@hol ords_install]$<\/pre>\n<p>Finally, check in the ORDS XML if all the settings are correct:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[oracle@hol ords_install]$ cat \/home\/oracle\/AU_REST\/conf\/ords\/defaults.xml\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?&gt;\r\n&lt;!DOCTYPE properties SYSTEM \"http:\/\/java.sun.com\/dtd\/properties.dtd\"&gt;\r\n&lt;properties&gt;\r\n&lt;comment&gt;Saved on Mon Apr 18 20:34:20 CEST 2022&lt;\/comment&gt;\r\n&lt;entry key=\"autoupgrade.api.aulocation\"&gt;\/home\/oracle\/AU_REST\/autoupgrade.jar&lt;\/entry&gt;\r\n&lt;entry key=\"autoupgrade.api.enabled\"&gt;true&lt;\/entry&gt;\r\n&lt;entry key=\"autoupgrade.api.jvmlocation\"&gt;\/bin\/java&lt;\/entry&gt;\r\n&lt;entry key=\"autoupgrade.api.loglocation\"&gt;\/home\/oracle\/AU_REST\/autoupgrade_logs&lt;\/entry&gt;\r\n&lt;entry key=\"cache.caching\"&gt;false&lt;\/entry&gt;\r\n&lt;entry key=\"cache.directory\"&gt;\/tmp\/apex\/cache&lt;\/entry&gt;\r\n&lt;entry key=\"cache.duration\"&gt;days&lt;\/entry&gt;\r\n&lt;entry key=\"cache.expiration\"&gt;7&lt;\/entry&gt;\r\n&lt;entry key=\"cache.maxEntries\"&gt;500&lt;\/entry&gt;\r\n&lt;entry key=\"cache.monitorInterval\"&gt;60&lt;\/entry&gt;\r\n&lt;entry key=\"cache.procedureNameList\"\/&gt;\r\n&lt;entry key=\"cache.type\"&gt;lru&lt;\/entry&gt;\r\n&lt;entry key=\"debug.debugger\"&gt;false&lt;\/entry&gt;\r\n&lt;entry key=\"debug.printDebugToScreen\"&gt;false&lt;\/entry&gt;\r\n&lt;entry key=\"error.keepErrorMessages\"&gt;true&lt;\/entry&gt;\r\n&lt;entry key=\"error.maxEntries\"&gt;50&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.DriverType\"&gt;thin&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.InactivityTimeout\"&gt;1800&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.InitialLimit\"&gt;3&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.MaxConnectionReuseCount\"&gt;1000&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.MaxLimit\"&gt;10&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.MaxStatementsLimit\"&gt;10&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.MinLimit\"&gt;1&lt;\/entry&gt;\r\n&lt;entry key=\"jdbc.statementTimeout\"&gt;900&lt;\/entry&gt;\r\n&lt;entry key=\"log.logging\"&gt;false&lt;\/entry&gt;\r\n&lt;entry key=\"log.maxEntries\"&gt;50&lt;\/entry&gt;\r\n&lt;entry key=\"misc.compress\"\/&gt;\r\n&lt;entry key=\"misc.defaultPage\"&gt;apex&lt;\/entry&gt;\r\n&lt;entry key=\"security.disableDefaultExclusionList\"&gt;false&lt;\/entry&gt;\r\n&lt;entry key=\"security.maxEntries\"&gt;2000&lt;\/entry&gt;\r\n&lt;\/properties&gt;\r\n[oracle@hol ords_install]$<\/pre>\n<p>Now, go back to the other terminal and restart the ORDS standalone service by pressing CTRL-C and rerunning the command of the previous step:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">2022-04-18T14:59:23.485Z INFO        Oracle REST Data Services initialized\r\nOracle REST Data Services version : 21.4.2.r0621806\r\nOracle REST Data Services server info: jetty\/9.4.44.v20210927\r\n\r\n^C\r\n[oracle@hol ords_install]$ java -jar ords.war standalone\r\n2022-04-18T15:02:41.067Z INFO        HTTPS listening on host: localhost port: 8443\r\n2022-04-18T15:02:41.095Z INFO        Disabling document root because the specified folder does not exist: \/home\/oracle\/AU_REST\/conf\/ords\/standalone\/doc_root\r\n2022-04-18T15:02:42.292Z INFO        No pools configured yet\r\n2022-04-18T15:02:43.456Z INFO        Oracle REST Data Services initialized\r\nOracle REST Data Services version : 21.4.2.r0621806\r\nOracle REST Data Services server info: jetty\/9.4.44.v20210927<\/pre>\n<h4>Running AutoUpgrade<\/h4>\n<p>Finally, let&#8217;s try to upgrade a database using the REST API.<\/p>\n<p>When running AutoUpgrade using the command line, we create a config.cfg file with the needed parameters. For REST, the idea is the same, but using the JSON notation instead of the parameter\/value pair.<\/p>\n<p>So, for a UPGR.cfg like this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\">global.autoupg_log_dir=\/home\/oracle\/logs\r\n\r\nupg1.source_home=\/u01\/app\/oracle\/product\/11.2.0.4\r\nupg1.target_home=\/u01\/app\/oracle\/product\/19\r\nupg1.sid=UPGR\r\nupg1.log_dir=\/home\/oracle\/logs\r\nupg1.restoration=no<\/pre>\n<p>We would need to create a UPGR.json like that:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n\"global\": {\r\n        \"autoupg_log_dir\": \"\/home\/oracle\/logs\"\r\n    },\r\n    \"jobs\": [{\r\n        \"source_home\": \"\/u01\/app\/oracle\/product\/11.2.0.4\",\r\n        \"target_home\": \"\/u01\/app\/oracle\/product\/19\",\r\n        \"sid\": \"UPGR\",\r\n        \"log_dir\": \"\/home\/oracle\/logs\",\r\n        \"restoration\": \"no\"\r\n    }]\r\n}<\/pre>\n<p>Now, let&#8217;s start playing with the REST API.<\/p>\n<h4>Using the REST API<\/h4>\n<p>It&#8217;s pretty simple. For the list of the available APIs, check the Official Doc here:<a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/upgrd\/autoupgrade-rest-apis.html\" target=\"_blank\" rel=\"noopener\"> https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/upgrd\/autoupgrade-rest-apis.html<\/a><\/p>\n<p>There are 6 APIs:<\/p>\n<ul>\n<li class=\"ulchildlink\"><code class=\"codeph\">task<\/code> (GET\/POST)\n<ul>\n<li>POST &#8211; Create or resubmit an AutoUpgrade task through the REST API, either with or without a JSON configuration file.<\/li>\n<li>GET &#8211; Get AutoUpgrade task details for the task specified by the <code class=\"codeph\">taskid<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li class=\"ulchildlink\"><code class=\"codeph\">status<\/code> (GET)\n<ul>\n<li class=\"ulchildlink\">Get a status report of an AutoUpgrade task specified by the <code class=\"codeph\">taskid<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li class=\"ulchildlink\"><code class=\"codeph\">log<\/code> (GET)\n<ul>\n<li class=\"ulchildlink\">Open a log, or to get a log list of a task specified by <code class=\"codeph\">taskid<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li class=\"ulchildlink\"><code class=\"codeph\">console<\/code> (GET)\n<ul>\n<li>Get a console for the AutoUpgrade task specified by the <code class=\"codeph\">taskid<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li class=\"ulchildlink\"><code class=\"codeph\">progress<\/code> (GET)\n<ul>\n<li>Get a progress report of an AutoUpgrade task specified by the <code class=\"codeph\">taskid<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li class=\"ulchildlink\"><code class=\"codeph\">tasks<\/code> (GET)\n<ul>\n<li>Get an AutoUpgrade task list.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>First, I will start the analyze of my database (<em><strong>task<\/strong><\/em> endpoint with <strong>POST<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k --data-binary \"@UPGR.json\" -X POST --header \"Content-Type:application\/json\" 'https:\/\/localhost:8443\/ords\/autoupgrade\/task?mode=analyze'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"submitted\",\r\n    \"message\": \"\",\r\n    \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2\",\r\n    \"config\": {\r\n        \"global\": {\r\n            \"autoupg_log_dir\": \"\/home\/oracle\/logs\"\r\n        },\r\n        \"jobs\": [\r\n            {\r\n                \"source_home\": \"\/u01\/app\/oracle\/product\/11.2.0.4\",\r\n                \"target_home\": \"\/u01\/app\/oracle\/product\/19\",\r\n                \"sid\": \"UPGR\",\r\n                \"log_dir\": \"\/home\/oracle\/logs\",\r\n                \"restoration\": \"no\"\r\n            }\r\n        ]\r\n    }\r\n}<\/pre>\n<p>Job was submitted. A new <em>taskid<\/em> <strong>job_2022_04_19_19.07.20.26_2<\/strong> was created. We will use this ID whenever we want to check or work with this job from this point onwards. You can see that the returned body has a link to check the task status.<\/p>\n<p>Checking the status (<em><strong>task<\/strong><\/em> API with <strong>GET<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"finished\",\r\n    \"message\": \"\",\r\n    \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2\",\r\n    \"config\": {\r\n        \"global\": {\r\n            \"autoupg_log_dir\": \"\/home\/oracle\/logs\"\r\n        },\r\n        \"jobs\": [\r\n            {\r\n                \"source_home\": \"\/u01\/app\/oracle\/product\/11.2.0.4\",\r\n                \"target_home\": \"\/u01\/app\/oracle\/product\/19\",\r\n                \"sid\": \"UPGR\",\r\n                \"log_dir\": \"\/home\/oracle\/logs\",\r\n                \"restoration\": \"no\"\r\n            }\r\n        ]\r\n    }\r\n}<\/pre>\n<p>It shows as finished. If we want to check how the output would show in the AutoUpgrade console window, is it also possible (<strong><em>console<\/em><\/strong> API with <strong>GET<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/console?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">AutoUpgrade is not fully tested on OpenJDK 64-Bit Server VM, Oracle recommends to use Java HotSpot(TM)\r\nAutoUpgrade 22.2.220324 launched with default internal options\r\nProcessing config file ...\r\n------------ ERROR ------------\r\nError Cause: Database UPGR shutdown or open with incorrect binaries for ANALYZE. Ensure it is open with \/u01\/app\/oracle\/product\/11.2.0.4\r\n\r\n------------ ERROR ------------\r\nError Cause: Database UPGR currently has a status of CLOSED.  For ANALYZE mode, open it with one of the following: [OPEN].\r\n\r\nUnable to connect to database UPGR for entry job_0<\/pre>\n<p>So clearly, the problem here is that I forgot to startup the source database before running AutoUpgrade. I will restart the database and try the analyze mode again:<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X POST 'https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2&amp;mode=analyze'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"submitted\",\r\n    \"message\": \"\",\r\n    \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2\",\r\n    \"config\": {\r\n        \"global\": {\r\n            \"autoupg_log_dir\": \"\/home\/oracle\/logs\"\r\n        },\r\n        \"jobs\": [\r\n            {\r\n                \"source_home\": \"\/u01\/app\/oracle\/product\/11.2.0.4\",\r\n                \"target_home\": \"\/u01\/app\/oracle\/product\/19\",\r\n                \"sid\": \"UPGR\",\r\n                \"log_dir\": \"\/home\/oracle\/logs\",\r\n                \"restoration\": \"no\"\r\n            }\r\n        ]\r\n    }\r\n}\r\n<\/pre>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/console?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">AutoUpgrade is not fully tested on OpenJDK 64-Bit Server VM, Oracle recommends to use Java HotSpot(TM)\r\nAutoUpgrade 22.2.220324 launched with default internal options\r\nProcessing config file ...\r\n+--------------------------------+\r\n| Starting AutoUpgrade execution |\r\n+--------------------------------+\r\n1 Non-CDB(s) will be analyzed\r\nJob 100 database upgr<\/pre>\n<p>( Rerunning the same command after a while&#8230; )<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">AutoUpgrade is not fully tested on OpenJDK 64-Bit Server VM, Oracle recommends to use Java HotSpot(TM)\r\nAutoUpgrade 22.2.220324 launched with default internal options\r\nProcessing config file ...\r\n+--------------------------------+\r\n| Starting AutoUpgrade execution |\r\n+--------------------------------+\r\n1 Non-CDB(s) will be analyzed\r\nJob 100 database upgr\r\nJob 100 completed\r\n------------------- Final Summary --------------------\r\nNumber of databases            [ 1 ]\r\n\r\nJobs finished                  [1]\r\nJobs failed                    [0]\r\n\r\nPlease check the summary report at:\r\n\/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/cfgtoollogs\/upgrade\/auto\/status\/status.html\r\n\/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/cfgtoollogs\/upgrade\/auto\/status\/status.log<\/pre>\n<p>Getting the status (<strong><em>status<\/em><\/strong> API with <strong>GET<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/status?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"successful\",\r\n    \"message\": \"\",\r\n    \"autoupgrade_status\": {\r\n        \"totalJobs\": 1,\r\n        \"lastUpdateTime\": \"2022-04-19 19:39:14\",\r\n        \"jobs\": [\r\n            {\r\n                \"sid\": \"UPGR\",\r\n                \"jobNo\": 101,\r\n                \"logDirectory\": \"\/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/UPGR\/101\",\r\n                \"conNumber\": 1,\r\n                \"lastUpdateTime\": \"2022-04-19 19:39:14\",\r\n                \"modules\": [\r\n                    {\r\n                        \"moduleName\": \"PRECHECKS\",\r\n                        \"status\": 0,\r\n                        \"errors\": [\r\n                        ],\r\n                        \"lastUpdateTime\": \"2022-04-19 19:39:14\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>I can also get the list of log files created (<strong><em>log<\/em><\/strong> API with <strong>GET<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"logs\": [\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/autoupgrade.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/autoupgrade.log\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/autoupgrade_user.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/autoupgrade_user.log\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/autoupgrade_err.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/autoupgrade_err.log\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/status\/status.json\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/status\/status.json\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/status\/status.html\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/status\/status.html\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/status\/status.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/status\/status.log\"\r\n        },\r\n        {\r\n            \"filename\": \"cfgtoollogs\/upgrade\/auto\/status\/progress.json\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/status\/progress.json\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/autoupgrade_20220419.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/autoupgrade_20220419.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/autoupgrade_20220419_user.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/autoupgrade_20220419_user.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/autoupgrade_err.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/autoupgrade_err.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/prechecks_upgr.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/prechecks_upgr.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/upgr_checklist.xml\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/upgr_checklist.xml\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/upgr_checklist.json\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/upgr_checklist.json\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/upgr_preupgrade.html\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/upgr_preupgrade.html\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/upgrade.xml\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/upgrade.xml\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/100\/prechecks\/upgr_preupgrade.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/100\/prechecks\/upgr_preupgrade.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/autoupgrade_20220419.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/autoupgrade_20220419.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/autoupgrade_20220419_user.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/autoupgrade_20220419_user.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/autoupgrade_err.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/autoupgrade_err.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/prechecks_upgr.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/prechecks_upgr.log\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/upgr_checklist.xml\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/upgr_checklist.xml\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/upgr_checklist.json\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/upgr_checklist.json\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/upgr_preupgrade.html\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/upgr_preupgrade.html\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/upgrade.xml\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/upgrade.xml\"\r\n        },\r\n        {\r\n            \"filename\": \"UPGR\/101\/prechecks\/upgr_preupgrade.log\",\r\n            \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=UPGR\/101\/prechecks\/upgr_preupgrade.log\"\r\n        }\r\n    ]\r\n}<\/pre>\n<p>If we want to get the file contents, we can use the link URL that is provided on the JSON body output:<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/log?taskid=job_2022_04_19_19.07.20.26_2&amp;name=cfgtoollogs\/upgrade\/auto\/status\/status.log'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">==========================================\r\n          Autoupgrade Summary Report\r\n==========================================\r\n[Date]           Tue Apr 19 19:39:14 CEST 2022\r\n[Number of Jobs] 1\r\n==========================================\r\n[Job ID] 101\r\n==========================================\r\n[DB Name]                UPGR\r\n[Version Before Upgrade] 11.2.0.4.0\r\n[Version After Upgrade]  19.14.0.0.0\r\n------------------------------------------\r\n[Stage Name]    PRECHECKS\r\n[Status]        SUCCESS\r\n[Start Time]    2022-04-19 19:39:08\r\n[Duration]\r\n[Log Directory] \/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/UPGR\/101\/prechecks\r\n[Detail]        \/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/UPGR\/101\/prechecks\/upgr_preupgrade.log\r\n                Check passed and no manual intervention needed\r\n------------------------------------------<\/pre>\n<p>Or even open it straight from a browser:<\/p>\n<p id=\"knyNxDd\"><img loading=\"lazy\" decoding=\"async\" width=\"3296\" height=\"1958\" class=\"alignnone size-full wp-image-14802 \" src=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png\" alt=\"\" srcset=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png 3296w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-300x178.png 300w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-1024x608.png 1024w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-768x456.png 768w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-1536x912.png 1536w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-2048x1217.png 2048w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8-870x517.png 870w\" sizes=\"auto, (max-width: 3296px) 100vw, 3296px\" \/><\/p>\n<p id=\"HUHfgIK\"><img loading=\"lazy\" decoding=\"async\" width=\"3296\" height=\"1958\" class=\"alignnone size-full wp-image-14800 \" src=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b.png\" alt=\"\" srcset=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b.png 3296w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-300x178.png 300w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-1024x608.png 1024w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-768x456.png 768w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-1536x912.png 1536w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-2048x1217.png 2048w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef2a88649b-870x517.png 870w\" sizes=\"auto, (max-width: 3296px) 100vw, 3296px\" \/><\/p>\n<p>Now that I&#8217;m good with the prechecks, I can run my task in <strong>deploy<\/strong> mode.<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X POST 'https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2&amp;mode=deploy'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"submitted\",\r\n    \"message\": \"\",\r\n    \"link\": \"https:\/\/localhost:8443\/ords\/autoupgrade\/task?taskid=job_2022_04_19_19.07.20.26_2\",\r\n    \"config\": {\r\n        \"global\": {\r\n            \"autoupg_log_dir\": \"\/home\/oracle\/logs\"\r\n        },\r\n        \"jobs\": [\r\n            {\r\n                \"source_home\": \"\/u01\/app\/oracle\/product\/11.2.0.4\",\r\n                \"target_home\": \"\/u01\/app\/oracle\/product\/19\",\r\n                \"sid\": \"UPGR\",\r\n                \"log_dir\": \"\/home\/oracle\/logs\",\r\n                \"restoration\": \"no\"\r\n            }\r\n        ]\r\n    }\r\n}<\/pre>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/console?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">AutoUpgrade is not fully tested on OpenJDK 64-Bit Server VM, Oracle recommends to use Java HotSpot(TM)\r\nAutoUpgrade 22.2.220324 launched with default internal options\r\nProcessing config file ...\r\n+--------------------------------+\r\n| Starting AutoUpgrade execution |\r\n+--------------------------------+\r\n1 Non-CDB(s) will be processed\r\nJob 102 database upgr\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|MESSAGE|\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n| 102|   UPGR|PREFIXUPS|EXECUTING|RUNNING|  19:46:33|21s ago|       |\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\nTotal jobs 1\r\n\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|MESSAGE|\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n| 102|   UPGR|PREFIXUPS|EXECUTING|RUNNING|  19:46:33|27s ago|       |\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\nTotal jobs 1\r\n\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|MESSAGE|\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\n| 102|   UPGR|DBUPGRADE|EXECUTING|RUNNING|  19:46:33|12s ago|Running|\r\n+----+-------+---------+---------+-------+----------+-------+-------+\r\nTotal jobs 1\r\n\r\n+----+-------+---------+---------+-------+----------+-------+-----------+\r\n|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|    MESSAGE|\r\n+----+-------+---------+---------+-------+----------+-------+-----------+\r\n| 102|   UPGR|DBUPGRADE|EXECUTING|RUNNING|  19:46:33|15s ago|0%Upgraded |\r\n+----+-------+---------+---------+-------+----------+-------+-----------+\r\nTotal jobs 1<\/pre>\n<p>If you now connect on the compute with a terminal, you will see that the REST started a AutoUpgrade process:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[oracle@hol ~]$ ps -ef | grep java\r\noracle    1524 24550  0 19:59 pts\/3    00:00:00 grep --color=auto java\r\noracle   30255 30253  1 19:46 pts\/2    00:00:10 \/bin\/java -jar \/home\/oracle\/AU_REST\/autoupgrade.jar -config \/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/config.cfg -noconsole -mode DEPLOY\r\n[oracle@hol ~]$ cat \/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\/config.cfg\r\nglobal.autoupg_log_dir=\/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\r\n\r\njob_0.log_dir=\/home\/oracle\/AU_REST\/autoupgrade_logs\/job_2022_04_19_19.07.20.26_2\r\njob_0.target_home=\/u01\/app\/oracle\/product\/19\r\njob_0.source_home=\/u01\/app\/oracle\/product\/11.2.0.4\r\njob_0.restoration=no\r\njob_0.sid=UPGR<\/pre>\n<p>&nbsp;<\/p>\n<p>We can also check the progress of the process (<strong><em>progress<\/em><\/strong> API with <strong>GET<\/strong>):<\/p>\n<p><code>[oracle@hol ~]$ curl -k -X GET 'https:\/\/localhost:8443\/ords\/autoupgrade\/progress?taskid=job_2022_04_19_19.07.20.26_2'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n    \"taskid\": \"job_2022_04_19_19.07.20.26_2\",\r\n    \"status\": \"successful\",\r\n    \"message\": \"\",\r\n    \"autoupgrade_progress\": {\r\n        \"totalJobs\": 1,\r\n        \"totalFinishedJobs\": 0,\r\n        \"startTime\": \"2022-04-19 19:46:33\",\r\n        \"lastUpdateTime\": \"2022-04-19 19:50:18\",\r\n        \"jobs\": [\r\n            {\r\n                \"sid\": \"UPGR\",\r\n                \"jobNo\": 102,\r\n                \"isCDB\": false,\r\n                \"totalPercentCompleted\": 75,\r\n                \"totalContainers\": 1,\r\n                \"totalStages\": 8,\r\n                \"additionalInfo\": \"\",\r\n                \"lastUpdateTime\": \"2022-04-19 19:50:18\",\r\n                \"stages\": [ ... ],\r\n                \"summary\": [\r\n                    {\r\n                        \"stage\": \"PREUPGRADE\",\r\n                        \"complete\": \"Yes\",\r\n                        \"duration\": \"0.038S\"\r\n                    },\r\n                    {\r\n                        \"stage\": \"PRECHECKS\",\r\n                        \"complete\": \"Yes\",\r\n                        \"duration\": \"6.5S\"\r\n                    },\r\n                    {\r\n                        \"stage\": \"PREFIXUPS\",\r\n                        \"complete\": \"Yes\",\r\n                        \"duration\": \"1M0.216S\"\r\n                    },\r\n                    {\r\n                        \"stage\": \"DRAIN\",\r\n                        \"complete\": \"Yes\",\r\n                        \"duration\": \"10.216S\"\r\n                    },\r\n                    {\r\n                        \"stage\": \"DBUPGRADE\",\r\n                        \"complete\": \"No\",\r\n                        \"duration\": \"2M28.395S\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h4>Postman<\/h4>\n<p>One easy way to play and test with REST is using Postman instead of CURL. It provides you with a graphical interface where it is easy to parse the input and output.<\/p>\n<p>Postman is available here. If you use a self-signed certificate in ORDS as I did in this tutorial, you will need to disable the SSL certificate verification:<em> Postman Settings &gt; General &gt; turn <strong>OFF<\/strong> SSL certificate verification<\/em>.<\/p>\n<p id=\"zrupAMr\"><img loading=\"lazy\" decoding=\"async\" width=\"1924\" height=\"1354\" class=\"alignnone size-full wp-image-14791 \" src=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd.png\" alt=\"\" srcset=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd.png 1924w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd-300x211.png 300w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd-1024x721.png 1024w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd-768x540.png 768w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd-1536x1081.png 1536w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625db507177bd-870x612.png 870w\" sizes=\"auto, (max-width: 1924px) 100vw, 1924px\" \/><\/p>\n<b>Have you enjoyed? Please leave a comment or give a \ud83d\udc4d!<\/b>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style2 like-14784 jlk' href='javascript:void(0)' data-task='like' data-post_id='14784' data-nonce='de4404f630' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.dbarj.com.br\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-14784 lc'>0<\/span><\/a><\/div><\/div> <div class='status-14784 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Oracle AutoUpgrade utility, since version 22, is compatible with RESTful API. This brings all the advantages of using that interface that I won&#8217;t mention here, but the most important is that is no longer needed to SSH or create a shellscript to perform a database upgrade. Now all can be done simply by reaching the &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-14784","post","type-post","status-publish","format-standard","hentry","category-database-en","item-wrap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using REST API with Oracle AutoUpgrade utility - DBA - Rodrigo Jorge - Oracle Tips and Guides<\/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.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DBA RJ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/\"},\"author\":{\"name\":\"DBA RJ\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"headline\":\"Using REST API with Oracle AutoUpgrade utility\",\"datePublished\":\"2022-04-27T13:12:18+00:00\",\"dateModified\":\"2022-04-27T13:13:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/\"},\"wordCount\":920,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/img_625ef555573f8.png\",\"articleSection\":[\"Oracle Database General\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/\",\"name\":\"Using REST API with Oracle AutoUpgrade utility - DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/img_625ef555573f8.png\",\"datePublished\":\"2022-04-27T13:12:18+00:00\",\"dateModified\":\"2022-04-27T13:13:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/img_625ef555573f8.png\",\"contentUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/img_625ef555573f8.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2022\\\/04\\\/using-rest-api-with-oracle-autoupgrade-utility\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using REST API with Oracle AutoUpgrade utility\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/\",\"name\":\"DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"description\":\"Blog about Databases, Security and High Availability\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\",\"name\":\"DBA RJ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"contentUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"width\":712,\"height\":712,\"caption\":\"DBA RJ\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using REST API with Oracle AutoUpgrade utility - DBA - Rodrigo Jorge - Oracle Tips and Guides","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.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/","twitter_misc":{"Written by":"DBA RJ","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#article","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/"},"author":{"name":"DBA RJ","@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"headline":"Using REST API with Oracle AutoUpgrade utility","datePublished":"2022-04-27T13:12:18+00:00","dateModified":"2022-04-27T13:13:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/"},"wordCount":920,"commentCount":1,"publisher":{"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"image":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png","articleSection":["Oracle Database General"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/","url":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/","name":"Using REST API with Oracle AutoUpgrade utility - DBA - Rodrigo Jorge - Oracle Tips and Guides","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#primaryimage"},"image":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png","datePublished":"2022-04-27T13:12:18+00:00","dateModified":"2022-04-27T13:13:30+00:00","breadcrumb":{"@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#primaryimage","url":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png","contentUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2022\/04\/img_625ef555573f8.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbarj.com.br\/en\/2022\/04\/using-rest-api-with-oracle-autoupgrade-utility\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dbarj.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Using REST API with Oracle AutoUpgrade utility"}]},{"@type":"WebSite","@id":"https:\/\/www.dbarj.com.br\/en\/#website","url":"https:\/\/www.dbarj.com.br\/en\/","name":"DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Blog about Databases, Security and High Availability","publisher":{"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbarj.com.br\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9","name":"DBA RJ","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","url":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","contentUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","width":712,"height":712,"caption":"DBA RJ"},"logo":{"@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png"}}]}},"_links":{"self":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/14784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/comments?post=14784"}],"version-history":[{"count":5,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/14784\/revisions"}],"predecessor-version":[{"id":14811,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/14784\/revisions\/14811"}],"wp:attachment":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/media?parent=14784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/categories?post=14784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/tags?post=14784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}