tag:blogger.com,1999:blog-70333649754471676072024-03-29T03:29:58.297+00:00Oracle EPM, Analytics, Hyperion and other stuff.Guillaume Slee's EPM/BI blog. Does exactly what it says on the tin.Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.comBlogger36125tag:blogger.com,1999:blog-7033364975447167607.post-88328487222450759082022-04-01T10:47:00.002+01:002022-04-07T16:56:11.294+01:00How to Create an Oracle Wallet SSL Certificate Request Containing Subject Alternative Name?<h2 style="text-align: left;">Certificate Problem</h2><div style="text-align: left;">I recently had an issue after configuring Oracle HTTP Server SSL for a customer. The customer was using self-signed certificates which they managed and created themselves. I created the certificate request using the Oracle Wallet Manager as per usual and they then sent me the certificates to import into the wallet. Unfortunately the users were seeing this error when they connected to the EPM Workspace, even though the certificates were imported successfully:</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpHUmM5MRCf1o4vmQruQkqRVIYO0wIYGjYrDDmJpfGnFuH40BAD1gF6HpnFj05g4fM-2iTurSHlrAFyG6f1efx9ct2wXI3rm7OCfj49VtII3CS7Rgjvh0zjxrvsNAELQmSr2YR5RvpRq0hTXgCtXv70xGjQf6MHINCtyNfpomLr-CHxZ7QbhwBzkf81Q/s692/ERR_CERT_COMMON_NAME_INVALID.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="692" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpHUmM5MRCf1o4vmQruQkqRVIYO0wIYGjYrDDmJpfGnFuH40BAD1gF6HpnFj05g4fM-2iTurSHlrAFyG6f1efx9ct2wXI3rm7OCfj49VtII3CS7Rgjvh0zjxrvsNAELQmSr2YR5RvpRq0hTXgCtXv70xGjQf6MHINCtyNfpomLr-CHxZ7QbhwBzkf81Q/s16000/ERR_CERT_COMMON_NAME_INVALID.png" /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Your connection is not private.</div><div style="text-align: left;">Attackers might be trying to steal your information...</div><div style="text-align: left;">NET::ERR_CERT_COMMON_NAME_INVALID</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The customer determined that the issue was because the certificate didn't contain a SAN or subjectAltName (Subject Alternative Name) field. Unfortunately, the Oracle Wallet Manager UI doesn't contain a field for the SAN when you create your certificate request:</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIfDZUvnOnIsfgldvSiGvkxQ3dfKPrwwgj80Tx17j5rgVmboV62XGIjCOdrZPhmvbVIBHEin6emIJJKE4MMnGK6ehRr4pIa9nSLZ7tuCYzfkxD1F1dfIo-sniZTyZeaattKJ1piVSilbv5qZf2cT5UGv5PpKCXHqg990XMSWVBsUx2fsVbe4gAnAN9vA/s522/Oracle%20Certificate%20Request.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIfDZUvnOnIsfgldvSiGvkxQ3dfKPrwwgj80Tx17j5rgVmboV62XGIjCOdrZPhmvbVIBHEin6emIJJKE4MMnGK6ehRr4pIa9nSLZ7tuCYzfkxD1F1dfIo-sniZTyZeaattKJ1piVSilbv5qZf2cT5UGv5PpKCXHqg990XMSWVBsUx2fsVbe4gAnAN9vA/s16000/Oracle%20Certificate%20Request.png" /></a></div><br /><div style="text-align: left;">The Subject Alternative Name (SAN) is an extension to the X. 509 specification that allows users to specify additional host names for a single SSL certificate. The use of the SAN extension is standard practice for SSL certificates, and it's on its way to replacing the use of the common name. </div><div style="text-align: left;"><br /></div><h2 style="text-align: left;">So, how do we create a certificate request which includes the subjectAltName parameter? </h2><div style="text-align: left;">Windows Command Line to the rescue! Fortunately orakpi, the command line utility for the Oracle Wallet supports the additional subjectAltName parameter. For a Oracle EPM Hyperion 11.2.x installation it can be found in the bin folder of your Oracle Client install e.g. Oracle\Middleware\dbclient64\bin</div><div style="text-align: left;"><br /></div><h2 style="text-align: left;">Create the Wallet Using ORAKPI</h2><div style="text-align: left;">You will need to set the JAVA_HOME in your command line session before you run the command. To create the wallet using orakpi run the following command:</div><div style="text-align: left;"><br /></div><div style="text-align: left;">orapki wallet create -wallet D:\Oracle\SSL -pwd Password -auto_login</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzgBWkU9aLu_fnmV--4WqUsGY6QO_ilSUw_-0WnGHnwHluhNHRv2uw17s-VD_8EIv8lJ1iyONh6O738Qg6-W1f64lJi53Fa-o3sL_Ari-vf_QpgL2cklfUehxjVyH_jOWltuYrtiPD0CW40ZGGlczePsCt0oOyXu8IPWR6kDl_og4zX8Io6f_HTqiu8Q/s937/Create%20oracle%20wallet.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="181" data-original-width="937" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzgBWkU9aLu_fnmV--4WqUsGY6QO_ilSUw_-0WnGHnwHluhNHRv2uw17s-VD_8EIv8lJ1iyONh6O738Qg6-W1f64lJi53Fa-o3sL_Ari-vf_QpgL2cklfUehxjVyH_jOWltuYrtiPD0CW40ZGGlczePsCt0oOyXu8IPWR6kDl_og4zX8Io6f_HTqiu8Q/s16000/Create%20oracle%20wallet.png" /></a></div><br /><div style="text-align: left;"><br /></div><h2 style="text-align: left;">Create the Certificate Request Using ORAKPI</h2><div style="text-align: left;">We can now use orakpi to create the certificate request which includes the subjectAltName parameter. First we need to get the main body of the distinguished name (DN) of the certificate request. We can use the Oracle Wallet Manager to create this for us by entering the information in a dummy certificate request and then just copying the DN string (close and don't save afterwards):</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEzNFKGVTiz9Wo46QjPx4jo5xp0-ksyIMFAc4FbqHtg1_ruHPNf7C0nu7Lhoe3zZ7PRYnW3C7AXGbAsmJPpGWJHI8kxG3cZEHvlFMrjLUZ42B_jTOZZiVZBnhsiFSw1ykx8O2ZyhzcF8gqNaSSjst8wudyVV2HUKpRDMnT-WLwFGduQvdzsz3l9FPloA/s521/Oracle%20Certificate%20Request%20DN.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="311" data-original-width="521" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEzNFKGVTiz9Wo46QjPx4jo5xp0-ksyIMFAc4FbqHtg1_ruHPNf7C0nu7Lhoe3zZ7PRYnW3C7AXGbAsmJPpGWJHI8kxG3cZEHvlFMrjLUZ42B_jTOZZiVZBnhsiFSw1ykx8O2ZyhzcF8gqNaSSjst8wudyVV2HUKpRDMnT-WLwFGduQvdzsz3l9FPloA/s16000/Oracle%20Certificate%20Request%20DN.png" /></a></div><br /><div style="text-align: left;">Copy the DN entry and you can paste this into your command line entry.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div>orapki wallet add -wallet D:\Oracle\SSL -dn "CN=hyperion.brovanture.com, OU=IT Services, O=Brovanture Ltd, L=Manchester, ST=Manchester, C=GB" -keysize 2048 <b>-addext_san DNS:hyperion.brovanture.com</b></div><div><br /></div><div>Notice the last part of the command. This is where we have added our SAN parameter, the one we couldn't add when generating using the Oracle Wallet Manager UI.</div></div><div style="text-align: left;"><br /></div><div style="text-align: left;">You can now go back to using the Oracle Wallet Manager UI to manage the export of the certificate request containing the SAN and import of the new certificates once you receive them. You won't be able to see the SAN entry in the UI but don't worry, it's there just not displayed.</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi60hEBg9KSIb5ZFnP8UpL8kSAwCPZjHbiBHswqj-RfAR_uPFc6T8sUZIZTfD3tVcMpDoEOmY27_1Vlw8WOpZc4Q6p_eHyIaoTmzEXByVrCcYWKuWpP3y5kgY3dLbQ5HN0oNKZkX8UDNnd5eQzypbmP-HWxcWPq9FmO-yRk97CBop5mkkkHc47jHHsDFw/s724/oracle%20wallet%20requested%20cert%20SAN.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="327" data-original-width="724" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi60hEBg9KSIb5ZFnP8UpL8kSAwCPZjHbiBHswqj-RfAR_uPFc6T8sUZIZTfD3tVcMpDoEOmY27_1Vlw8WOpZc4Q6p_eHyIaoTmzEXByVrCcYWKuWpP3y5kgY3dLbQ5HN0oNKZkX8UDNnd5eQzypbmP-HWxcWPq9FmO-yRk97CBop5mkkkHc47jHHsDFw/s16000/oracle%20wallet%20requested%20cert%20SAN.png" /></a></div><br /><div style="text-align: left;"><br /></div>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-85628489049037778892022-03-15T13:02:00.004+00:002022-04-07T16:55:54.639+01:00EPM 11.2.8 FDMEE ODI Upgrade Issue<p>I encountered an issue this week when upgrading an 11.2.2 EPM environment to version 11.2.8. </p><p><i>Note that is is only an issue when using an Oracle database and when upgrading from a version older than 11.2.5.</i></p><p>The problem occurred at the "Manual Configuration Tasks for FDMEE" task where you run the RCU Upgrade Assistant (UA.bat) to manually upgrade the version of ODI used by your FDMEE instance. I got the following errors:</p><p></p><ul style="text-align: left;"><li>The specified database does not contain any schemas for Oracle Data Integrator or the database user lacks privilege to view the schemas.</li><li>Cause: The database you have specified does not contain any schemas registered as belonging to the component you are upgrading, or else the current database user lacks privilege to query the contents of the schema version registry.</li><li>Action: Verify that the database contains schema entries in schema version registry. If it does not, specify a different database. Verify that the user has DBA privilege. Connect to the database as DBA.</li></ul><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4U5tNUF6XQ8K0CuFUBSONipPKmCqE48BvO6kXag_qHWGabLwwBiT77hm6P3K-UHqNuOTCEI-9DK1wqnnQaHFbzANd3BYWc0_tH2O-Q7_gWcGSPhSdl7nCMUoOXx9FCt_nvN8RtlfHj_w-Qv98xcHXaSVBYXEqeFYuWFBvt_w7pYXWtmSaUABDSFxGuQ=s788" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="330" data-original-width="788" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4U5tNUF6XQ8K0CuFUBSONipPKmCqE48BvO6kXag_qHWGabLwwBiT77hm6P3K-UHqNuOTCEI-9DK1wqnnQaHFbzANd3BYWc0_tH2O-Q7_gWcGSPhSdl7nCMUoOXx9FCt_nvN8RtlfHj_w-Qv98xcHXaSVBYXEqeFYuWFBvt_w7pYXWtmSaUABDSFxGuQ=s16000" /></a></div><br /><div><br /></div><div>The problem is that the UA assumes that we used the RCU to create our ODI repository which is not the case. In the EPM world your ODI repository is created inside your FDMEE repository when you configure FDMEE. </div><div><br /></div><div>The UA will look at the SYSTEM.schema_version_registry table to check the version of ODI but it is missing from our table:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhxMhscowwIvon4MAlmXGkMtmTTb1BIl9k5HcguMgTm981-c5ir7g-K_u8JkXfFUauICeF-1A7E8BwWtl-WfTwXYHMgvMraayZsH6a8XldtutM99c6YnCv0LvcCHyB49vsqbAuC8Oi5xdqRx5SKPhpIQKUyCR1DAUmeIKk19SurnbuQ5_vr__rNynY-dg=s857" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="181" data-original-width="857" src="https://blogger.googleusercontent.com/img/a/AVvXsEhxMhscowwIvon4MAlmXGkMtmTTb1BIl9k5HcguMgTm981-c5ir7g-K_u8JkXfFUauICeF-1A7E8BwWtl-WfTwXYHMgvMraayZsH6a8XldtutM99c6YnCv0LvcCHyB49vsqbAuC8Oi5xdqRx5SKPhpIQKUyCR1DAUmeIKk19SurnbuQ5_vr__rNynY-dg=s16000" /></a></div><div><br /></div><div>So the UA errors with the messages listed above.</div><div><br /></div><div>You also see the following error message if you try and connect to the ODI repository using the ODI Studio:</div><div><br /></div><div><ul style="text-align: left;"><li>ODI-10179 / ODI-26168: Client requires a repository with version 05.02.02.09 but the repository version found is 05.02.02.07</li></ul></div><div><br /></div><div>There's a support document (2699076.1) which explains how the ODI version matches with the schema version. We'll use this in our hack later:</div><div><div><ul style="text-align: left;"><li>The "05.02.02.07" corresponds to ODI Version 12.2.1.3.0.</li><li>And "05.02.02.09" is for Versions 12.2.1.3.190708, 12.2.1.4.0 and 12.2.1.4.200123.</li></ul></div></div><div><br /></div><div>To get around the issue I ran the RCU to create a bogus ODI repository. This also creates the entry in the SYSTEM.schema_version_registry table necessary for me to run the upgrade assistant:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgRlv3P_dRqMiQicx-iaI0cK5WvdaBAQGZvESdGfP9xcoP_8wIsM6wmsOaLjqz4aLs722Ec7E1i0-22TMoN_VTB4ZAFIbv07IGTin_3KnS_VS8p-UsDaLTdGYml5orL_Qmz0GPe8j_agk4ZIOd19Tn30s4vU-UAKnqXTna0zn6RZ5MsU4AiDzYYml0ALQ=s787" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="420" data-original-width="787" src="https://blogger.googleusercontent.com/img/a/AVvXsEgRlv3P_dRqMiQicx-iaI0cK5WvdaBAQGZvESdGfP9xcoP_8wIsM6wmsOaLjqz4aLs722Ec7E1i0-22TMoN_VTB4ZAFIbv07IGTin_3KnS_VS8p-UsDaLTdGYml5orL_Qmz0GPe8j_agk4ZIOd19Tn30s4vU-UAKnqXTna0zn6RZ5MsU4AiDzYYml0ALQ=s16000" /></a></div><br /><div>This creates the entry for ODI in my SYSTEM.schema_version_registry:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhy0d1cf0SxuH3Th0dVx8fkuYL-S329DX_ZApEEXF_A267GsW5j9BSsg_qFEdX84ZZwMYnS9waGk9BRgbhLYJFzlWMQ1ZCrNNepg8tQdbk4sKdaT9_Ju8iHkcQI6p36PmkecLlT5LurEBQqexwm5W94FFIpJbQhdPzKX3Y-UUbzSVdH83DCReQNLCTATA=s853" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="853" src="https://blogger.googleusercontent.com/img/a/AVvXsEhy0d1cf0SxuH3Th0dVx8fkuYL-S329DX_ZApEEXF_A267GsW5j9BSsg_qFEdX84ZZwMYnS9waGk9BRgbhLYJFzlWMQ1ZCrNNepg8tQdbk4sKdaT9_Ju8iHkcQI6p36PmkecLlT5LurEBQqexwm5W94FFIpJbQhdPzKX3Y-UUbzSVdH83DCReQNLCTATA=s16000" /></a></div><br /><div>However, as you can see above it is pointing to the new bogus ODI repository and the version is incorrect because I used the upgraded EPM 11.2.8 version of the RCU (12.2.1.4.0) to create the entry.</div><div><br /></div><div>I ran the following SQL to change the schema from EPM_ODI_REPO to my FDMEE schema EPM_FDMEE and changed the version from 12.2.1.4.0 to 12.2.1.3.0:</div><div><br /></div><div><div><span style="font-family: courier;">update system.schema_version_registry set OWNER='EPM_FDMEE', VERSION='12.2.1.3.0' where COMP_ID='ODI';</span></div><div><span style="font-family: courier;">commit;</span></div></div><div><br /></div><div>Now you can see the schema and version are correct:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQXZCLL8B6e9Xkcdhgfc_yg1GhxKNI_w5d9jBlWGhtD1giDAP9FllVzFucbpZEBAYSBp5C_6wvBenWkUDIPgm0lLYeDwi1mUaFJyQ2RDDT3EhrVEVhmNhho138ISgvqYMSFSeJ3S9JpC668z-8xzwQH3fZlZGgWV_uLIasctjl5yMnDMZ2Rk43RqO3dg=s891" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="198" data-original-width="891" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQXZCLL8B6e9Xkcdhgfc_yg1GhxKNI_w5d9jBlWGhtD1giDAP9FllVzFucbpZEBAYSBp5C_6wvBenWkUDIPgm0lLYeDwi1mUaFJyQ2RDDT3EhrVEVhmNhho138ISgvqYMSFSeJ3S9JpC668z-8xzwQH3fZlZGgWV_uLIasctjl5yMnDMZ2Rk43RqO3dg=s16000" /></a></div><br /><div>I was then able to run the UA successfully:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQrEai35s4FvO_QBFqOdr5zN7B1TR7R8y54XkfdQpYKMAGYdk5XVW9JMqlFS48nQqaIBPGFyy4zNsNKg8Q3jTQoUq7fTUXOlFHh4zq9bldkDWEKivDn4-aflBakik9NPJB63sN2TdkwzCwg_4ylQSuDAbXj7pgrYwhF-Ukh3jgQ4L9vIXcUzGErnuC7g=s790" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="790" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQrEai35s4FvO_QBFqOdr5zN7B1TR7R8y54XkfdQpYKMAGYdk5XVW9JMqlFS48nQqaIBPGFyy4zNsNKg8Q3jTQoUq7fTUXOlFHh4zq9bldkDWEKivDn4-aflBakik9NPJB63sN2TdkwzCwg_4ylQSuDAbXj7pgrYwhF-Ukh3jgQ4L9vIXcUzGErnuC7g=s16000" /></a></div><br /><div>The SYSTEM.schema_version_registry is then updated with the upgraded information:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJeWdMp7HmpGrdjvYwAMVKlcwb8w4sKsStiMqMGd5kTjrvs2cBXi08rYdUVFUp-ngRSyg3n8vFl7ZWHyuZuY4kN-PJW1G13Qi7fZx7bnNDFUs8E4b19GCzwq50sxIdlmS8sQ5U9olEEAcuwj_1b_ciBDIngcZJszsWnIzgn7_O7J5By6YqOjEcsWONSA=s945" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="205" data-original-width="945" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJeWdMp7HmpGrdjvYwAMVKlcwb8w4sKsStiMqMGd5kTjrvs2cBXi08rYdUVFUp-ngRSyg3n8vFl7ZWHyuZuY4kN-PJW1G13Qi7fZx7bnNDFUs8E4b19GCzwq50sxIdlmS8sQ5U9olEEAcuwj_1b_ciBDIngcZJszsWnIzgn7_O7J5By6YqOjEcsWONSA=s16000" /></a></div><br /><div><br /></div><div>The upgrade was successful and I was also able to login to ODI using the ODI Studio as there was no longer a mismatch between client and repository versions.</div><div><br /></div><div>If I were to run into this again I would just insert the ODI row into the SYSTEM.schema_version_registry table directly using SQL with the correct schema and version rather than running the RCU and then editing.</div><div><br /></div><div>Happy upgrading!</div><div><br /></div><div><br /></div>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com2tag:blogger.com,1999:blog-7033364975447167607.post-21079757402335449452021-12-01T12:49:00.007+00:002022-04-07T16:55:08.783+01:00OAC - Using CLI to Automate Starting-Stopping of Instances<p>A couple of years ago I blogged on how to start and stop Oracle Analytics instances using the REST API. This enabled you to schedule scripts to manage the uptime of your instances so you can save those valuable oracle credits. This worked well for the old Autonomous instances but those scripts no longer work with the newer Gen2 OAC architecture. In this blog I’ll show how to use the Oracle CLI (Command Line Interface) to control your instances. </p><p>The Oracle CLI is very simple to use, requires no coding skills and has the added bonus of being able to manage most of your Oracle Cloud Infrastructure tasks (e.g. managing DBaaS instances or virtual machines etc).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5wfQqcbvcu59NLZRmGcfN_lwV3fRd7q0gw7F40Qv2KZ87TivFe9IRs0aFIQMsGcjnnKSZakI_JsBB1-9I51GTPQgKk6Db05V6LVLwxlt4pRX1kcM6RjjCz2oS8EzH58_XLAI_BeFwPHDq/s225/automate.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="205" data-original-width="225" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5wfQqcbvcu59NLZRmGcfN_lwV3fRd7q0gw7F40Qv2KZ87TivFe9IRs0aFIQMsGcjnnKSZakI_JsBB1-9I51GTPQgKk6Db05V6LVLwxlt4pRX1kcM6RjjCz2oS8EzH58_XLAI_BeFwPHDq/s0/automate.png" width="225" /></a></div><h1 style="text-align: left;">Pre-Requisites</h1><div>You will require an IAM user account (non-IDCS) in your Oracle tenancy to run the CLI commands. You will need the OCID value for this user:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnlRZErjyQY5QkrsMnNVId1xDjU6SOnLYO-j264L5k5hxIhutiBnToi-PQusFLoi9RDRSRWDBMYzYwxTfRgDbtpRuawa19FlUEkJRSdQ1LtKx7xvxQDmv5BJwHJK8x_PxOHVIWycrYVvKW/s969/OCI+User+OCID.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="415" data-original-width="969" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnlRZErjyQY5QkrsMnNVId1xDjU6SOnLYO-j264L5k5hxIhutiBnToi-PQusFLoi9RDRSRWDBMYzYwxTfRgDbtpRuawa19FlUEkJRSdQ1LtKx7xvxQDmv5BJwHJK8x_PxOHVIWycrYVvKW/w640-h274/OCI+User+OCID.png" width="640" /></a></div><br /><div><br /></div><div>You also need the OCID value of your Oracle tenancy:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv6KYKmtKGO_ggVPdrEPd4ZJdPz0Lab6JUM241d5vcQOKVZ3dqkEfnRPNKQ9R_KgaSykUxF8aCDyyCufiwuHzyasOGpcv6HgxiPYsC3nxGPo7SoNFJU2rzJX3Tf9lclPlQads5bm9HFOFI/s1012/OCI+Tenancy+OCID.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="396" data-original-width="1012" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv6KYKmtKGO_ggVPdrEPd4ZJdPz0Lab6JUM241d5vcQOKVZ3dqkEfnRPNKQ9R_KgaSykUxF8aCDyyCufiwuHzyasOGpcv6HgxiPYsC3nxGPo7SoNFJU2rzJX3Tf9lclPlQads5bm9HFOFI/w640-h250/OCI+Tenancy+OCID.png" width="640" /></a></div><br /><div><br /></div><h1 style="text-align: left;">Installing the Oracle CLI on Windows</h1><div><br /></div><div>You can install on either Linux or Windows. I've chosen Windows as it's what most of our customers use. </div><div><br /></div><div><div>I followed the Oracle documentation on how to install CLI on Windows here: <a href="https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm" target="_blank">https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm</a> </div><div><br /></div><div>Here is the process in a nutshell:</div><div><ul style="text-align: left;"><li>Download a powershell script</li><li>Run the powershell script. </li><ul><li>This will download the Python and install it.</li><li>It will also download the CLI and install it.</li></ul></ul></div><div><br /></div><div>Initially, I installed Python manually but the auto-installer kept failing on the import ssl statement. I ended up deinstalling Python and getting the installation utility to install python for me.</div><div>This version of python is older (3.6) than the one I installed (failed with both 3.9 and 3.8).</div><div><br /></div><div>Here are the commands you need to run:</div><div><br /></div><div style="text-align: left;">Start Powershell as an administrator.</div><div><br /></div><div><b>Set-ExecutionPolicy RemoteSigned </b></div><div>(allow the script to run).</div><div><br /></div><div><b>[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" </b></div><div>(enable tls otherwise it won’t be able to download the install files).</div><div><br /></div><div><b>Invoke-WebRequest https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1 -OutFile install.ps1</b></div><div>(download the script).</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbbUfetMmoxvng3jZQhj-GmRWjGVXRjYpVQ7DqgkOMR4CQ6VUvPBNWNdjE_MkN-F5dLMw_TfRgPlf9bO4BcoBPwLQ5vIRjtEElUnG71GVT9gnxlP43DaJfKVEV__3Ka5D2dluc8UJ4QLQ/s971/windows+oracle+CLI+install+1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="230" data-original-width="971" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbbUfetMmoxvng3jZQhj-GmRWjGVXRjYpVQ7DqgkOMR4CQ6VUvPBNWNdjE_MkN-F5dLMw_TfRgPlf9bO4BcoBPwLQ5vIRjtEElUnG71GVT9gnxlP43DaJfKVEV__3Ka5D2dluc8UJ4QLQ/w640-h152/windows+oracle+CLI+install+1.png" width="640" /></a></div><br /><div><div><b>iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))</b></div><div>(run the installer with prompts)</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiAjdRb0gBG8ziVW09GtVVxAEG2dHIG9Mce4jDbX1_PMVljK8MCr0NvTGGKDP7RKg6J5eDtKA0UtKkhfEWXW51SelxF3nHkiZSyVrvAO6sGZzkAtEsskfNCyRyg23VBVLwNDdQTX-_fvF1/s957/windows+oracle+CLI+install+2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="287" data-original-width="957" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiAjdRb0gBG8ziVW09GtVVxAEG2dHIG9Mce4jDbX1_PMVljK8MCr0NvTGGKDP7RKg6J5eDtKA0UtKkhfEWXW51SelxF3nHkiZSyVrvAO6sGZzkAtEsskfNCyRyg23VBVLwNDdQTX-_fvF1/w640-h192/windows+oracle+CLI+install+2.png" width="640" /></a></div><br /><div><div>Here is the rest of the input/output:</div><div><br /></div><div><span style="font-family: courier;">===> In what directory would you like to place the install? (leave blank to use 'C:\Users\Administrator\lib\oracle-cli')</span></div><div><span style="font-family: courier;">: <span style="background-color: #fcff01;">E:\oracle-cli</span></span></div><div><span style="font-family: courier;">-- Creating directory 'E:\oracle-cli'.</span></div><div><span style="font-family: courier;">-- We will install at 'E:\oracle-cli'.</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;">===> In what directory would you like to place the 'oci.exe' executable? (leave blank to use 'C:\Users\Administrator\bin</span></div><div><span style="font-family: courier;">'): <span style="background-color: #fcff01;">E:\oracle-cli\bin</span></span></div><div><span style="font-family: courier;">-- Creating directory 'E:\oracle-cli\bin'.</span></div><div><span style="font-family: courier;">-- The executable will be in 'E:\oracle-cli\bin'.</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;">===> In what directory would you like to place the OCI scripts? (leave blank to use 'C:\Users\Administrator\bin\oci-cli-</span></div><div><span style="font-family: courier;">scripts'): <span style="background-color: #fcff01;">E:\oracle-cli\scripts</span></span></div><div><span style="font-family: courier;">-- Creating directory 'E:\oracle-cli\scripts'.</span></div><div><span style="font-family: courier;">-- The scripts will be in 'E:\oracle-cli\scripts'.</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;">===> Currently supported optional packages are: ['db (will install cx_Oracle)']</span></div><div><span style="font-family: courier;">What optional CLI packages would you like to be installed (comma separated names; press enter if you don't need any opti</span></div><div><span style="font-family: courier;">onal packages)?:</span></div><div><span style="font-family: courier;">-- The optional packages installed will be ''.</span></div><div><span style="font-family: courier;">-- Trying to use python3 venv.</span></div><div><span style="font-family: courier;">-- Executing: ['C:\\Users\\Administrator\\Python\\python.exe', '-m', 'venv', 'E:\\oracle-cli']</span></div><div><span style="font-family: courier;">-- Executing: ['E:\\oracle-cli\\Scripts\\python.exe', '-m', 'pip', 'install', '--upgrade', 'pip']</span></div><div><span style="font-family: courier;">Collecting pip</span></div><div><span style="font-family: courier;"> Downloading https://files.pythonhosted.org/packages/47/ca/f0d790b6e18b3a6f3bd5e80c2ee4edbb5807286c21cdd0862ca933f751dd</span></div><div><span style="font-family: courier;">/pip-21.1.3-py3-none-any.whl (1.5MB)</span></div></div><div><br /></div><div><br /></div><div>There was an error at the end but it seemed to install successfully:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge1RVpvVKUTJ0FUUgZ1JwljVgXXBgRA8c7gnwA1xGO6k3kDMaiwMmn5c47yJ4BDmLKWaEIePFx6Afj6wgicEAelH4fqaLuGleYiLuAXep_aHv6jKAYjUpWoIuOAcZSDPMg9-SsSLZ7dI9e/s847/windows+oracle+CLI+install+3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="509" data-original-width="847" height="384" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge1RVpvVKUTJ0FUUgZ1JwljVgXXBgRA8c7gnwA1xGO6k3kDMaiwMmn5c47yJ4BDmLKWaEIePFx6Afj6wgicEAelH4fqaLuGleYiLuAXep_aHv6jKAYjUpWoIuOAcZSDPMg9-SsSLZ7dI9e/w640-h384/windows+oracle+CLI+install+3.png" width="640" /></a></div><br /><div>Test the oci.exe by running the oci –version command:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqL3QEdGxxCIboZNFAan8JNpaDf3RIBVnjP5rNDABTQaVRWcVNKjtS9JPKcnGAux2rAuFyEHhMmrdi-2vZGzrl-rwoAxl_oLymS-I47GtogGmuEL28z23YcteqQhTUcwg01FVZrcJ3omZu/s416/oracle+CLI+version.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="121" data-original-width="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqL3QEdGxxCIboZNFAan8JNpaDf3RIBVnjP5rNDABTQaVRWcVNKjtS9JPKcnGAux2rAuFyEHhMmrdi-2vZGzrl-rwoAxl_oLymS-I47GtogGmuEL28z23YcteqQhTUcwg01FVZrcJ3omZu/s16000/oracle+CLI+version.png" /></a></div><br /><div><br /></div><h1 style="text-align: left;">OCI CLI Setup</h1><div>Run the oci <b>setup config</b> command to configure the OCI CLI. This will prompt you to input your User and Tenancy OCID values. It will also prompt whether you want to create the API RSA key pair which I will do in this example:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoWoXV8e9tNVZU6dzkxFWTkE84CZHZAsYVDAiH8-QtxCL2SO_jSe7JtRBoVFGw6nYxmiRuVIrWeDvGYiyqHw-PilNEbORHFeMthpgQ16VWZxEF5XPjgWRnnItmTT6Glr4swNCYQSEd0DLt/s739/OCI+CLI+Setup.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="473" data-original-width="739" height="410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoWoXV8e9tNVZU6dzkxFWTkE84CZHZAsYVDAiH8-QtxCL2SO_jSe7JtRBoVFGw6nYxmiRuVIrWeDvGYiyqHw-PilNEbORHFeMthpgQ16VWZxEF5XPjgWRnnItmTT6Glr4swNCYQSEd0DLt/w640-h410/OCI+CLI+Setup.png" width="640" /></a></div><br /><div><br /></div><div><div>Here is the rest of the input/output:</div><div><br /></div><div><span style="font-family: courier;">Enter a user OCID:</span></div><div><span style="font-family: courier;">Enter a user OCID: <span style="background-color: #fcff01;">ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span></span></div><div><span style="font-family: courier;">Enter a tenancy OCID: <span style="background-color: #fcff01;">ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span></span></div><div><span style="font-family: courier;">Enter a region by index or name(e.g.</span></div><div><span style="font-family: courier;">1: ap-chiyoda-1, 2: ap-chuncheon-1, 3: ap-hyderabad-1, 4: ap-melbourne-1, 5: ap-</span></div><div><span style="font-family: courier;">mumbai-1,</span></div><div><span style="font-family: courier;">6: ap-osaka-1, 7: ap-seoul-1, 8: ap-sydney-1, 9: ap-tokyo-1, 10: ca-montreal-1,</span></div><div><span style="font-family: courier;">11: ca-toronto-1, 12: eu-amsterdam-1, 13: eu-frankfurt-1, 14: eu-zurich-1, 15: m</span></div><div><span style="font-family: courier;">e-dubai-1,</span></div><div><span style="font-family: courier;">16: me-jeddah-1, 17: sa-santiago-1, 18: sa-saopaulo-1, 19: sa-vinhedo-1, 20: uk-</span></div><div><span style="font-family: courier;">cardiff-1,</span></div><div><span style="font-family: courier;">21: uk-gov-cardiff-1, 22: uk-gov-london-1, 23: uk-london-1, 24: us-ashburn-1, 25</span></div><div><span style="font-family: courier;">: us-gov-ashburn-1,</span></div><div><span style="font-family: courier;">26: us-gov-chicago-1, 27: us-gov-phoenix-1, 28: us-langley-1, 29: us-luke-1, 30:</span></div><div><span style="font-family: courier;"> us-phoenix-1,</span></div><div><span style="font-family: courier;">31: us-sanjose-1): <span style="background-color: #fcff01;">23</span></span></div><div><span style="font-family: courier;">Do you want to generate a new API Signing RSA key pair? (If you decline you will</span></div><div><span style="font-family: courier;"> be asked to supply the path to an existing key.) [Y/n]: <span style="background-color: #fcff01;">Y</span></span></div><div><span style="font-family: courier;">Enter a directory for your keys to be created [C:\Users\Administrator\.oci]: <span style="background-color: #fcff01;">E:\</span></span><span style="background-color: #fcff01; font-family: courier;">oracle-cli\keys</span></div><div><span style="font-family: courier;">Enter a name for your key [oci_api_key]: <span style="background-color: #fcff01;">oci_api_key</span></span></div><div><span style="font-family: courier;">Public key written to: E:\oracle-cli\keys\oci_api_key_public.pem</span></div><div><span style="font-family: courier;">Enter a passphrase for your private key (empty for no passphrase):</span></div><div><span style="font-family: courier;">Private key written to: E:\oracle-cli\keys\oci_api_key.pem</span></div><div><span style="font-family: courier;">Fingerprint: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx</span></div><div><span style="font-family: courier;">Config written to c:\oracle-cli\bin</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;"> If you haven't already uploaded your API Signing public key through the</span></div><div><span style="font-family: courier;"> console, follow the instructions on the page linked below in the section</span></div><div><span style="font-family: courier;"> 'How to upload the public key':</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;"> https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How</span></div><div><span style="font-family: courier;">2</span></div><div><br /></div><div><br /></div><div>The keys were generated here:</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfMgZ4O7ZrSYt1-vaTW1WmwnodO0B7mdkDta9S1_WTu3NJckVeh0ApJDR4BeFA3QE8IN4kr5vo1ljV1iOySnZ6a21TuH6qLxhp91xYCxy75eEcOA3XPlhfDvcUjkDYfmJM0tkZ34wmyUIL/s602/CLI+keys.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="162" data-original-width="602" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfMgZ4O7ZrSYt1-vaTW1WmwnodO0B7mdkDta9S1_WTu3NJckVeh0ApJDR4BeFA3QE8IN4kr5vo1ljV1iOySnZ6a21TuH6qLxhp91xYCxy75eEcOA3XPlhfDvcUjkDYfmJM0tkZ34wmyUIL/w640-h172/CLI+keys.png" width="640" /></a></div><br /><div><br /></div><div><br /></div><div><div>Note that I got the config location wrong when I ran this first time (C:\oracle-cli\bin instead of E:). I'm not sure if the CLI doesn't let you use another folder than the default one but I had to create the config file in C:\Users\Administrator\.oci\config.</div><div><br /></div><div>I just copied the contents of the file which got created by the config command earlier and created a new file called config in C:\Users\Administrator\.oci\config. I had to use the cmd mkdir command to create the folder because it starts with a full-stop.</div></div><div><br /></div><h1 style="text-align: left;">Add the Keys to your IAM User Account</h1><div><div>Next we need to associate the public key we created earlier with our IAM user account.</div><div><br /></div><div>Open the oci_api_key_public.pem file and copy the entire contents (including the -----BEGIN PUBLIC KEY----- and -----END PUBLIC KEY-----).</div><div><br /></div><div>Login to OCI and go to your IAM user account.</div><div><br /></div><div>In the bottom left of the screen click on API Keys and then Add API Key:</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrx8FCAjg7qegvyxkw0oFkzubCdZ6c9KnEsIvq4jqfZQ0AYum0_o4h8cdHFfYsrHnuf8FquIdhyWCS-ZPtS1kdJ3vtyG7BfTqTNKCzGuAqO-1HvxKMXHv2tkikAKMfNXMzRfCbbPFMTXjd/s589/Oracle+CLI+add+API+key.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="206" data-original-width="589" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrx8FCAjg7qegvyxkw0oFkzubCdZ6c9KnEsIvq4jqfZQ0AYum0_o4h8cdHFfYsrHnuf8FquIdhyWCS-ZPtS1kdJ3vtyG7BfTqTNKCzGuAqO-1HvxKMXHv2tkikAKMfNXMzRfCbbPFMTXjd/w400-h140/Oracle+CLI+add+API+key.png" width="400" /></a></div><br /><div><br /></div><div>Copy the contents of the public key and paste into the box:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfz9wS9HKdUpzjdQtsrqQVtWwNcl3kaePRvCuOKUSTxywXRHS8_RpZw3a6MHJkZFa9HB6LoEySgkmRID17cAGA4wg856Fzd7kJcoK7YZeu9Y0HjBjA29PXtil0l21f8_WxIWO73TjuJXQ9/s884/Oracle+CLI+add+API+key+2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="684" data-original-width="884" height="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfz9wS9HKdUpzjdQtsrqQVtWwNcl3kaePRvCuOKUSTxywXRHS8_RpZw3a6MHJkZFa9HB6LoEySgkmRID17cAGA4wg856Fzd7kJcoK7YZeu9Y0HjBjA29PXtil0l21f8_WxIWO73TjuJXQ9/w640-h496/Oracle+CLI+add+API+key+2.png" width="640" /></a></div><br /><div><br /></div><div>You should then see the fingerprint and the contents which should match the config file you have on the oracle-CLI install:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh622vjw6g4iUSv6r2-RaTEp-DcfWEapV719uYh1OHehRaL4OefUyrAPdw6t7ZqaeVSLdSlaSUdqBmEReQ9mV63i651uxcp74KRfAnHnURSKMGmAV8kSTeER8ZARKHRqLNAfKZ3wTXiUIn7/s901/Oracle+CLI+add+API+key+3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="635" data-original-width="901" height="452" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh622vjw6g4iUSv6r2-RaTEp-DcfWEapV719uYh1OHehRaL4OefUyrAPdw6t7ZqaeVSLdSlaSUdqBmEReQ9mV63i651uxcp74KRfAnHnURSKMGmAV8kSTeER8ZARKHRqLNAfKZ3wTXiUIn7/w640-h452/Oracle+CLI+add+API+key+3.png" width="640" /></a></div><br /><div><br /></div><h1 style="text-align: left;">Stopping and Starting OAC using the CLI Command Line</h1><div>Finally we get to the nitty gritty!</div><div><br /></div><div><div>Once you have configured the Oracle CLI and you have imported the keys to your IAM user account you should be able to use CLI to manage your Oracle Analytics instances (and other OCI services).</div><div><br /></div><div>To stop OAC using CLI you run this command: </div><div><b>oci analytics analytics-instance stop --analytics-instance-id <OAC instance ID></b></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHuaY5sZIflHaNlDxxKknXRme8UMbRtqehrA2fllcv1X25Qq7USsgjeMmn9K1Zu1hoHcRkQfycZsxUBPz_1a3zHnnZ1dYwm-e-8dQkkUNAgf-TLkRGuHykyI0O7gQM-xnY3kWRBqICMv5l/s966/CLI+stop+OAC.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="158" data-original-width="966" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHuaY5sZIflHaNlDxxKknXRme8UMbRtqehrA2fllcv1X25Qq7USsgjeMmn9K1Zu1hoHcRkQfycZsxUBPz_1a3zHnnZ1dYwm-e-8dQkkUNAgf-TLkRGuHykyI0O7gQM-xnY3kWRBqICMv5l/w640-h104/CLI+stop+OAC.png" width="640" /></a></div><br /><div>To start OAC you run this command:</div><div><b>oci analytics analytics-instance start --analytics-instance-id <OAC instance ID></b></div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjmDjKhNxGAZZ_6yvCi3xB33Sr8eHufrfhy8fw-CkukSrSy8rv_2gWdGjqgTU342CjwndBstEas_L2BFgJ8EoXDoujZRr99nmulwENM7UMtqlujyvNmX9zKe_YNts9liVfuH4UTdBtayow/s962/CLI+start+OAC.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="150" data-original-width="962" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjmDjKhNxGAZZ_6yvCi3xB33Sr8eHufrfhy8fw-CkukSrSy8rv_2gWdGjqgTU342CjwndBstEas_L2BFgJ8EoXDoujZRr99nmulwENM7UMtqlujyvNmX9zKe_YNts9liVfuH4UTdBtayow/w640-h100/CLI+start+OAC.png" width="640" /></a></div><br /><div>You can see the commands are successful in the OAC activity log:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3PiOQUfk79o3sRb7nO17jgw7l49p9GHvpfz9cqdWJ6Y59EQu_Icuo6ATF54KeReNKy263aeQqoGkIHpDI5jxI8slGApsGOdcaQc8gRxNmriTDBu_2DYPHEcO4QN0SjIWXh_YzYjE8Gt5P/s1009/OAC+Activity+Log.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="211" data-original-width="1009" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3PiOQUfk79o3sRb7nO17jgw7l49p9GHvpfz9cqdWJ6Y59EQu_Icuo6ATF54KeReNKy263aeQqoGkIHpDI5jxI8slGApsGOdcaQc8gRxNmriTDBu_2DYPHEcO4QN0SjIWXh_YzYjE8Gt5P/w640-h134/OAC+Activity+Log.png" width="640" /></a></div><br /><div><div>You can also use the GET command to get the status of the instruction:</div><div><br /></div><div><b>oci analytics analytics-instance get --analytics-instance-id <OAC instance ID></b></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ZkE-zByyxo5WRRkVoIMIm6FcDbeS5DJisCod8rAeaVmeJS1ranHJi1o25mtxSp05AcNNnFT1HA-0TXutYR6OCGGcwCt8sXcHVJQlLxtkpLJQq_75p3UvWrwsSxFmB_jkPzQrs8gSsWGa/s959/CLI+get+OAC+1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="708" data-original-width="959" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ZkE-zByyxo5WRRkVoIMIm6FcDbeS5DJisCod8rAeaVmeJS1ranHJi1o25mtxSp05AcNNnFT1HA-0TXutYR6OCGGcwCt8sXcHVJQlLxtkpLJQq_75p3UvWrwsSxFmB_jkPzQrs8gSsWGa/w640-h472/CLI+get+OAC+1.png" width="640" /></a></div><br /><div>Once it is complete the lifecycle-state changes:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPNVoC2ditqQ1cV-v4jquWqPwIHypuZ_Rm3nCZRr41P2JhHas-9fJsi50khG6tSDXILTZbo3RYc8JVRSrUXLqvrMmI63uKizCnBW8wDU5Pdo_FmN9MCx_5Pa1LudRBOTBbjMBHzXScYcYM/s959/CLI+get+OAC+2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="708" data-original-width="959" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPNVoC2ditqQ1cV-v4jquWqPwIHypuZ_Rm3nCZRr41P2JhHas-9fJsi50khG6tSDXILTZbo3RYc8JVRSrUXLqvrMmI63uKizCnBW8wDU5Pdo_FmN9MCx_5Pa1LudRBOTBbjMBHzXScYcYM/w640-h472/CLI+get+OAC+2.png" width="640" /></a></div><div><br /></div><div><br /></div>All that remains is to save your script as a batch file and schedule it using the standard Windows scheduler.<br /><div><h1 style="text-align: left;">Other Oracle CLI Commands</h1><div>There are other useful commands such as <b><a href="https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.3.2/oci_cli_docs/cmdref/analytics/analytics-instance/scale.html" target="_blank">scale </a></b>which allows you to scale your instance up or down.</div><div><br /></div><div>You can find all CLI commands in the OCI CLI Command Reference guide here:</div><div><a href="https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.3.2/oci_cli_docs/cmdref/analytics.html" target="_blank">https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.3.2/oci_cli_docs/cmdref/analytics.html</a></div></div><div><br /></div>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-91461802759094871212021-10-27T11:09:00.002+01:002022-04-07T16:54:41.388+01:00EPM Cloud - Import Hybrid Snapshot into Non-Hybrid Pod<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbPHDKZwx7nAM4RoiHS1EegK8N13u4iLFo_42veID4Y8ttYqnNRKKXnL6gr6zag2Uslls5uVTRpiwSbk8RQ54WgADZfH5eTBplOOCY8cvV1bLYFy7autSx6wEcnCX3nk7uF6vGLeWktSc2/s314/Migration+Status+Report+Failed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="49" data-original-width="314" height="49" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbPHDKZwx7nAM4RoiHS1EegK8N13u4iLFo_42veID4Y8ttYqnNRKKXnL6gr6zag2Uslls5uVTRpiwSbk8RQ54WgADZfH5eTBplOOCY8cvV1bLYFy7autSx6wEcnCX3nk7uF6vGLeWktSc2/s0/Migration+Status+Report+Failed.png" width="314" /></a></div><br /><p>If you’ve ever tried to import a EPM Planning hybrid-enabled application snapshot into a non-hybrid EPM pod you will have seen this error:</p><p><b>EPMLCM-14000: Error reported from Core Platform.</b></p><p><b>Unsupported migration of artifacts and snapshots for Hybrid PBCS application from (Service Type ENTERPRISE with Hybrid support) to (Service Type LEGACY without Hybrid support).</b></p><div><div>The import will fail completely and you won’t be able to pull in any artefacts.</div><div><br /></div><div>Here is a simple hack which will enable you import the entire snapshot (excluding data of course).</div><div><br /></div><h2 style="text-align: left;">Download the Snapshot</h2><div><br /></div><div>Download the Hybrid snapshot to your local machine and unzip the snapshot.</div><div><br /></div><div>You’ll need to make changes to the 'Application Definition.xpad' and 'Application Settings.xml' files:</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5e5nOMWZ5txCALOO0RsUp9hlrafqunDFabtmaxna5OoS1ee_56ga7p1GJ82l33fAYIWQUFwMLGO85N2Opi5YF8eJzSO-lOmjtldbLC5dW-FUqgh1wyegIsipzLq3DXe8MfRDFkm4bvU0D/s641/Application+Definition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="124" data-original-width="641" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5e5nOMWZ5txCALOO0RsUp9hlrafqunDFabtmaxna5OoS1ee_56ga7p1GJ82l33fAYIWQUFwMLGO85N2Opi5YF8eJzSO-lOmjtldbLC5dW-FUqgh1wyegIsipzLq3DXe8MfRDFkm4bvU0D/s16000/Application+Definition.png" /></a></div><br /><div><br /></div><h2 style="text-align: left;">Edit the Application Definition.xpad File</h2><div><br /></div><div>File before changes:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjAe-AU8FN45ExOVKuim5rLLLLi5EqRILU8-23-YVjziEsCuyGbgcXlQpf3t-i9kGVXjPthqG6c6lskRKxN6f5YrDW0wCqTqRTl_Xkk4IHWIFK3zFBXv669niaTiAQeeAA-Vp3zDtLjdcB/s1399/Application+Definition+before.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="125" data-original-width="1399" height="58" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjAe-AU8FN45ExOVKuim5rLLLLi5EqRILU8-23-YVjziEsCuyGbgcXlQpf3t-i9kGVXjPthqG6c6lskRKxN6f5YrDW0wCqTqRTl_Xkk4IHWIFK3zFBXv669niaTiAQeeAA-Vp3zDtLjdcB/w640-h58/Application+Definition+before.png" width="640" /></a></div><br /><div>File after changes:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvSwYXCOR9UlNXvEiJ6-CkbLSWkiEq9t_YiEEBU1jkVld5BD_okGxx1ZLORUKp3abbTCtmtpvRmMw2aO-GGM4bv0CGXZ_mwptGpoaZyLEpg2mQjuvQizn7JgSu9rvPk2sQCkL1rUOec8k5/s1374/Application+Definition+After.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="106" data-original-width="1374" height="49" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvSwYXCOR9UlNXvEiJ6-CkbLSWkiEq9t_YiEEBU1jkVld5BD_okGxx1ZLORUKp3abbTCtmtpvRmMw2aO-GGM4bv0CGXZ_mwptGpoaZyLEpg2mQjuvQizn7JgSu9rvPk2sQCkL1rUOec8k5/w640-h49/Application+Definition+After.png" width="640" /></a></div><br /><div><br /></div><div><br /></div><h2 style="text-align: left;">Edit the Application Settings.xml File</h2><div><br /></div><div>File before changes:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf9ARhaapuliI1J3NUogCH4gTY5fBTip7G-kXQOf90klaAFK62EwOzqDqWL2oHLirQV9u-A7GGpo89U17piZABvwN-zbtI77lKhLt7qhJnC0aP65GTxP2ZvnoRD2v0uZWda8MB00yaVnqo/s728/Application+Settings+Before.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="288" data-original-width="728" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf9ARhaapuliI1J3NUogCH4gTY5fBTip7G-kXQOf90klaAFK62EwOzqDqWL2oHLirQV9u-A7GGpo89U17piZABvwN-zbtI77lKhLt7qhJnC0aP65GTxP2ZvnoRD2v0uZWda8MB00yaVnqo/s16000/Application+Settings+Before.png" /></a></div><br /><div><br /></div><div>File after changes:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVKnkSMBTdH8wgtREifV4ikPRai6VvNSZJ1VhfDDe5-svEP8KjhkdQvWrz7dbbfIEOHbT3WrY83BWie0JQb8FeSg3VRqjrGi-uqQAuiE4A_oApbxUiFaV9rSpUvUa3UH0wqFcAD6sJhaE2/s666/Application+Settings+After.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="229" data-original-width="666" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVKnkSMBTdH8wgtREifV4ikPRai6VvNSZJ1VhfDDe5-svEP8KjhkdQvWrz7dbbfIEOHbT3WrY83BWie0JQb8FeSg3VRqjrGi-uqQAuiE4A_oApbxUiFaV9rSpUvUa3UH0wqFcAD6sJhaE2/s16000/Application+Settings+After.png" /></a></div><br /><div><br /></div><div>Once you have made these changes zip up the folders of the snapshot. Zip up the files at this level:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcIbELBKqyPZGuK_peJHOtSDSEWfPg4terQTrqAWrke9aotvSCsKUq3lf0jkaRyoEaI28wiijIzIaAQGKRULAL7sKWpjR8H44dKlPlusFdpjdC-jFP2CWOY-Qf0dZezavyWg1wKpF2TwPj/s564/zip+folder+level.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="564" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcIbELBKqyPZGuK_peJHOtSDSEWfPg4terQTrqAWrke9aotvSCsKUq3lf0jkaRyoEaI28wiijIzIaAQGKRULAL7sKWpjR8H44dKlPlusFdpjdC-jFP2CWOY-Qf0dZezavyWg1wKpF2TwPj/s16000/zip+folder+level.png" /></a></div><br /><div><br /></div><div>You can now upload the modified snapshot and import the entire application (excluding data).</div><div><br /></div><div>To load the data into your non-hybrid pod you will need to export the data to a text file on the Hybrid environment and then import into the non-hybrid pod.</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-79909257176967702892021-08-23T10:17:00.003+01:002022-04-07T16:54:33.327+01:00EPM Cloud - Make the User Experience Simple & Intuitive with Direct Links<p>One great new feature which came out recently in the Oracle EPM Cloud is the ability to download direct links to any EPM Cloud navigation flow card or cluster. This includes links to both the default cards and custom cards and clusters which you have created. Task lists can now be super simple for the end user. Instead of a War and Peace list of instructions on how to navigate to User Preferences or how to open up Data Integration just give them a direct link!</p><h1 style="text-align: left;">How to access the EPM Cloud direct links?</h1><p>Login to your EPM Cloud instance. In the top-right click on the down arrow next to your username and click on ‘Export URLs’:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CDZ6-L8DN33fn8ZoswHkmhk1AN-FqhtbHN_M1nP2VZgifDumgj3hOB-_YZDszbjwdiq9Cv6H-H9P8aY2s7dm-h9XFnCF6a_XOy29L_wvxvzvnjdyQlevci77Aky2NqJzFsVOhIJfeGNv/s404/Export+URLs.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="176" data-original-width="404" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CDZ6-L8DN33fn8ZoswHkmhk1AN-FqhtbHN_M1nP2VZgifDumgj3hOB-_YZDszbjwdiq9Cv6H-H9P8aY2s7dm-h9XFnCF6a_XOy29L_wvxvzvnjdyQlevci77Aky2NqJzFsVOhIJfeGNv/s16000/Export+URLs.png" /></a></div><br /><p>This will download a .CSV file which is pipe delimited:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbrRKcnAy82_HJgnqu8GxsxIud9I4Lbq2lSLWIX3pPlPq2mS7eCpzmwe4r3-pJg1IdfNwe8wDoYC0_cTqWdmbX2w9Spj-Og-c5zxVJl2cPrVozS5WJEsesll2wJeuN9jp6rMC0INDaEqTv/s602/EPM+CLoud+Navigation+Flow+URLs.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="103" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbrRKcnAy82_HJgnqu8GxsxIud9I4Lbq2lSLWIX3pPlPq2mS7eCpzmwe4r3-pJg1IdfNwe8wDoYC0_cTqWdmbX2w9Spj-Og-c5zxVJl2cPrVozS5WJEsesll2wJeuN9jp6rMC0INDaEqTv/s16000/EPM+CLoud+Navigation+Flow+URLs.png" /></a></div><br /><h1 style="text-align: left;">Adding the URL to a Task List</h1><p>You can add any number of task list URL links to aid the end users. Some very useful ones could be User Preferences and Variables for a brand-new roll-out.</p><p>You can copy the URL and paste it into a URL type task list, here I’ll use the User Preferences card:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1EpY0AjmZDPYHHUuhHJaXzDX23F9ZcfPhuXdBJoEc-ulxbZ772VDeY5A_aYMW6NInVOZ2OcfClxGQnPaYSJcjFuJz5Q8_9hlRg4h-MwCWM9oaifQYWVs6jfdYOQTNVw_1H6O3sAze6Aqd/s386/EPM+CLoud+URL+Task+List.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1EpY0AjmZDPYHHUuhHJaXzDX23F9ZcfPhuXdBJoEc-ulxbZ772VDeY5A_aYMW6NInVOZ2OcfClxGQnPaYSJcjFuJz5Q8_9hlRg4h-MwCWM9oaifQYWVs6jfdYOQTNVw_1H6O3sAze6Aqd/s16000/EPM+CLoud+URL+Task+List.png" /></a></div><br /><p>The task will look like this in their Task List:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVujLg1p2Kk3VbLXXBA1XmLSEQ87-M0GxkyzmLMHtayKqc_c_BSMz07_lbGzsIIfWOUj06t9lURHywo-W_Elyp6SS813kEaHMVdwGJgGdFF06arnwNRPzvM9t5WGR-SmW6lKsmD7e_bZXz/s319/EPM+CLoud+User+Prefs+Task+List.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="136" data-original-width="319" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVujLg1p2Kk3VbLXXBA1XmLSEQ87-M0GxkyzmLMHtayKqc_c_BSMz07_lbGzsIIfWOUj06t9lURHywo-W_Elyp6SS813kEaHMVdwGJgGdFF06arnwNRPzvM9t5WGR-SmW6lKsmD7e_bZXz/s16000/EPM+CLoud+User+Prefs+Task+List.png" /></a></div><br /><p>Clicking on the task list will open up the cluster/card/tab in a new browser tab:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3M8Fc4gCnDdAZWDC_PBeRbno5Ov3bbSQrfErbE9fCWGDszeTeakkNL8J9EvmZFb6EHJf2LPw0Dtg3E23VubtJUkiS2dvU1CgrSKvR-4qz_hp6f0hmGS3y8wWHRR1rLeTQ0hui2Ezey5K3/s602/EPM+CLoud+Open+User+Prefs.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3M8Fc4gCnDdAZWDC_PBeRbno5Ov3bbSQrfErbE9fCWGDszeTeakkNL8J9EvmZFb6EHJf2LPw0Dtg3E23VubtJUkiS2dvU1CgrSKvR-4qz_hp6f0hmGS3y8wWHRR1rLeTQ0hui2Ezey5K3/s16000/EPM+CLoud+Open+User+Prefs.png" /></a></div><br /><p>Here’s another example with Data Integration. Copy the Data Integration URL from the downloaded file:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlPRIh679e5oYmCo0nD9O-AFbqUPqNDCZ6sFHdt4uUrPJxV7NudeFkfZL_YDO6yJb8Pp-TApPQfFTRAy9d3G_zgaQwdnz4pSnMkJUF1v2kf2dG12Vsi7wP7k6jC35eFQG-sPUIAgTP7UBf/s602/EPM+CLoud+Navigation+Flow+URLs2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="59" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlPRIh679e5oYmCo0nD9O-AFbqUPqNDCZ6sFHdt4uUrPJxV7NudeFkfZL_YDO6yJb8Pp-TApPQfFTRAy9d3G_zgaQwdnz4pSnMkJUF1v2kf2dG12Vsi7wP7k6jC35eFQG-sPUIAgTP7UBf/s16000/EPM+CLoud+Navigation+Flow+URLs2.png" /></a></div><br /><p>Create your task list item:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRsMEt5ku8r3K0Fk5vEbe-mf3MHAS4jDB8YqnUIdpWg7zpUYeNDXvps8DU85aq4gAb5nqroTsFgywGxxcyGRMpXD0pweVSb3MgHpYzIdFl-X8tmGKPFOE2IjtIaIY5nXGn1jndBdfyQJH/s602/EPM+CLoud+Load+Actuals+Task+List.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="136" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRsMEt5ku8r3K0Fk5vEbe-mf3MHAS4jDB8YqnUIdpWg7zpUYeNDXvps8DU85aq4gAb5nqroTsFgywGxxcyGRMpXD0pweVSb3MgHpYzIdFl-X8tmGKPFOE2IjtIaIY5nXGn1jndBdfyQJH/s16000/EPM+CLoud+Load+Actuals+Task+List.png" /></a></div><br /><p>Click on the task list and the Data Integration card opens up directly in a new browser tab. If you added instructions to the task list it also means the user can navigate back and forth between the tabs to read the instructions associated with the task.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRINFZjfYrfwVD251g0MTmB3AqxCWTWRhI0m4AYyNc8AZdJFfjtfRTflf6CjIms6dwp0ZYrgk3ZFF0lxJq6gsw9Imour90PTG3GXc-nB84kIwKNCImE3vL3x40hBKDqL0TxYBJhvpOYQ3m/s566/EPM+CLoud+Open+Data+Integration.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="566" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRINFZjfYrfwVD251g0MTmB3AqxCWTWRhI0m4AYyNc8AZdJFfjtfRTflf6CjIms6dwp0ZYrgk3ZFF0lxJq6gsw9Imour90PTG3GXc-nB84kIwKNCImE3vL3x40hBKDqL0TxYBJhvpOYQ3m/s16000/EPM+CLoud+Open+Data+Integration.png" /></a></div><br /><p>Here is a link from the EPM Cloud youtube channel which demos how this functionality can also be used to streamline the user experience across the Oracle suite by embedding EPM content into Oracle ERP and Oracle NetSuite: <a href="https://www.youtube.com/watch?v=qJirlSZpTq4">https://www.youtube.com/watch?v=qJirlSZpTq4</a></p><p>In the next post we'll make things even slicker with a little touch of Groovy and the REST API.</p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-67962231753690234702021-02-04T16:26:00.001+00:002022-04-07T16:54:17.145+01:00EPM Integration Agent - MS SQL Server Windows Authentication<p>If you have tried to use Windows authentication in the database connection details for your Oracle EPM Integration Agent on-premises data source you may have come across these errors:</p><p><span style="font-family: courier;">Error: com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication</span></p><p><span style="font-family: courier;">com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user</span></p><p>So, how <b>DO </b>you use a Windows username and password with an EPM Integration Agent target?</p><h1 style="text-align: left;">mssql-jdbc_auth-9.2.0.x64.dll</h1><p>You need to add the mssql-jdbc_auth-9.2.0.x64.dll to your JRE\bin and JRE\lib folder. This is the library used by the MS SQL jdbc driver for Windows authentication. </p><p>You should be able to find the library in the .zip file you downloaded containing the MS SQL jdbc driver (sqljdbc_9.2.0.0_enu.zip\sqljdbc_9.2\enu\auth\x64).</p><p>Restart the agent and it should now be ready to use Windows authentication. But <b>WAIT</b>, there's one additional step...</p><h1 style="text-align: left;">integratedSecurity=true</h1><p>You'll need to add an additional parameter to your jdbc connection string to let the driver know that you are using Windows authentication and not native MS SQL authentication:</p><p><span style="font-family: courier;">jdbc:sqlserver://server:port;databaseName=dbname;<b>integratedSecurity=true</b></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOrEKfdMtZnIiGHIZ2QYneXXiYgurXFtVpbMZ1z9GxKz-_cVfF1qxspwAiTO0tRSz7kgsXjNPk6EsjqzEz8qg4hlYjpSV_nPrjvEIGPLM_k7LnC3ZgquCiO9wwFXGF5IS5Sne8gZWbCLXG/s481/EPM+Agent+Windows+Authentication.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="130" data-original-width="481" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOrEKfdMtZnIiGHIZ2QYneXXiYgurXFtVpbMZ1z9GxKz-_cVfF1qxspwAiTO0tRSz7kgsXjNPk6EsjqzEz8qg4hlYjpSV_nPrjvEIGPLM_k7LnC3ZgquCiO9wwFXGF5IS5Sne8gZWbCLXG/s16000/EPM+Agent+Windows+Authentication.png" /></a></div><br /><p><br /></p><p>Et voilà! The EPM Agent will now login to your MS SQL Server database using a Windows user account for authentication. </p><p>Happy integrating :)</p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-29448837291408439822020-12-16T13:47:00.005+00:002022-04-07T16:57:04.227+01:00EPM 11.2 - How to Start OHS Remotely?<p>In the on-prem Hyperion EPM world it’s common to have one script sitting on your primary Foundation server which can start and stop all the services across all of the host machines in your environment. In 11.1.2.x this was simple because every process had a Windows service associated with it and we could use the Windows SC command to start a Windows Service remotely on another machine.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zWgTB4icXGG3_SW0LpFYK8gEP6gP35LpkZ-CR1ibSXtyDE7sTki05DfgbOG-VGpC2cwsymdo1V4QbEV4AydiUJq4cVoA12dv4RW73T4NsyGrQ4KZj1OFE8F7hgvXvBM9uJ_EzpmZ2OFV/s514/OHS+Servers.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="297" data-original-width="514" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zWgTB4icXGG3_SW0LpFYK8gEP6gP35LpkZ-CR1ibSXtyDE7sTki05DfgbOG-VGpC2cwsymdo1V4QbEV4AydiUJq4cVoA12dv4RW73T4NsyGrQ4KZj1OFE8F7hgvXvBM9uJ_EzpmZ2OFV/s16000/OHS+Servers.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p>In 11.2.x there is no Windows service for the OHS component which needs to be started via the command line. <a href="http://hyperipwn.blogspot.com/2020/01/ohs-service-wrapper.html" target="_blank">ThatEPMBloke </a>wrote a service wrapper to create a service but some customers don’t allow custom code in their environments. So in a clustered EPM 11.2.x environment how can we start our second instance of OHS from our primary Foundation server?</p><h1 style="text-align: left;">OHS Node Manager to the Rescue!</h1><h3 style="text-align: left;">TLDR;</h3><p>To put it simply we use the weblogic scripting tool wlst.cmd on the primary OHS server to connect to the node manager on the second OHS server and start OHS remotely.</p><h3 style="text-align: left;">Detail:</h3><p>When you install OHS with the EPM installer it configures OHS as a standalone node. OHS needs the local OHS Node manager service running in order to start. By default each node manager instance only listens on localhost (you can’t connect to it remotely) but we can tweak the node manager Windows service to listen externally which enables us to connect from the primary node to the secondary node manager and start OHS on the secondary node.</p><h3 style="text-align: left;">Alter the Node Manager Listen Address</h3><p>On the second OHS server:</p><p></p><ul style="text-align: left;"><li>Stop OHS using the command line command stopComponent.cmd ohs_component</li><li>Stop the OHS Node Manager Windows service</li><li>Open up the Windows registry at: </li></ul><p></p><p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Oracle Weblogic ohs NodeManager (E_Oracle_Middleware_ohs_wlserver)\Parameters</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_os2RvA3AsRdM1mbFNOWQ3Fe5dbxRZ3B6h9cEgX9WpUOHzX4_L7qxHVwQ-GCxeFgat1UOuIF1BTmwpvshnXvPUdYNoF6RlzjuM3ciaMRfOGB77_xFtsm7yLNPG17NOLuLx5Pwiy2wZTJ-/s1027/NodeManager+Windows+Registry.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="340" data-original-width="1027" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_os2RvA3AsRdM1mbFNOWQ3Fe5dbxRZ3B6h9cEgX9WpUOHzX4_L7qxHVwQ-GCxeFgat1UOuIF1BTmwpvshnXvPUdYNoF6RlzjuM3ciaMRfOGB77_xFtsm7yLNPG17NOLuLx5Pwiy2wZTJ-/w640-h212/NodeManager+Windows+Registry.png" width="640" /></a></div><p><br /></p><p></p><ul style="text-align: left;"><li>Edit the CmdLine parameter and find the -DListenAddress='localhost' in the string</li><li>Change the ListenAddress so that it listens on the hostname rather than localhost e.g. -DListenAddress='Hostname2' This enables us to connect to the node manager remotely.</li><li>Start the Node manager Windows service on the second OHS server</li></ul><p></p><h3 style="text-align: left;">Create a Super Simple Python Script to Start OHS on Server2</h3><p>We can now write a simple python script on the primary OHS server to start OHS on the secondary OHS Server.</p><p><b>startOHS2.py:</b></p><div style="text-align: left;"><b><span style="font-family: courier;">nmConnect('epm_admin', 'password', 'hostname2', '5557', 'ohs', 'E:/Oracle/Middleware/user_projects/EPMFDN2/httpConfig/ohs','ssl')<br /></span><span style="font-family: courier;">nmStart(serverName='ohs_component', serverType='OHS')<br /></span><span style="font-family: courier;">nmDisconnect()</span></b></div><div><br /></div><div><ul style="text-align: left;"><li>nmConnect() - this command connects to the OHS node manager on hostname2</li><ul><li>The user name and password are the Weblogic Admin credentials</li><li>The hostname is the servername of the second OHS server</li><li>5557 is the default port that OHS NodeManager runs on in EPM installations</li></ul><li>nmStart() - this command starts the OHS 'ohs_component' server on hostname2</li><li>nmDisconnect() - disconnects from NodeManager</li></ul></div><div>Use the Weblogic Scripting Tool to run the script. You should use the wlst.cmd found in the Oracle\Middleware\oracle_common\common\bin folder:</div><div><br /></div><div>e.g.</div><div><br /></div><div><b>E:\Oracle\Middleware\oracle_common\common\bin\wlst.cmd E:\Oracle\Scripts\startOHS2.py</b></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsiAHq4OYwa5wepvMigZSI3oNoxjOc2xxraWDZNKwNwJ0hmKXPT944FwLdHlNYS98zVEvb0C8cgtwQ0393STdhELq29JulmucevIudy7VSaYjiUvB_Odq17HvqcTKrAeQZRvGRFkYhhM1o/s1080/EPM+Start+OHS+Python+wlst.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="391" data-original-width="1080" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsiAHq4OYwa5wepvMigZSI3oNoxjOc2xxraWDZNKwNwJ0hmKXPT944FwLdHlNYS98zVEvb0C8cgtwQ0393STdhELq29JulmucevIudy7VSaYjiUvB_Odq17HvqcTKrAeQZRvGRFkYhhM1o/w640-h232/EPM+Start+OHS+Python+wlst.png" width="640" /></a></div><br /><div><br /></div><div><br /></div><div>To stop OHS on hostname2 you can run a similar script which uses the nmKill() command to kill the secondary instance of OHS:</div><div><br /></div><div><b>stopOHS2.py:</b></div><div><br /></div><div><div><span style="font-family: courier;"><b>nmConnect('epm_admin', 'password', 'hostname2', '5557', 'ohs', 'E:/Oracle/Middleware/user_projects/EPMFDN2/httpConfig/ohs','ssl')</b></span></div><div><span style="font-family: courier;"><b>nmKill(serverName='ohs_component', serverType='OHS')</b></span></div><div><span style="font-family: courier;"><b>nmDisconnect()</b></span></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfW__gSkGf4pdLYTZxja7YUVLDpH0JVOiGAV9l6tx0WJQxjJJ0DW49MHtyXKbXvfWZleX1DP7obMoljEQVMAJELaT-AdTtOSp0Laa2e1v4T_ON7FGXPdsXJCOAAVli3XacequY3MG8_KUA/s1077/EPM+Stop+OHS+Python+wlst.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="394" data-original-width="1077" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfW__gSkGf4pdLYTZxja7YUVLDpH0JVOiGAV9l6tx0WJQxjJJ0DW49MHtyXKbXvfWZleX1DP7obMoljEQVMAJELaT-AdTtOSp0Laa2e1v4T_ON7FGXPdsXJCOAAVli3XacequY3MG8_KUA/w640-h234/EPM+Stop+OHS+Python+wlst.png" width="640" /></a></div><h1 style="text-align: left;">Points of Interest</h1><p>This works nicely, however it stores the password in plain text which isn't great. You can alter the nmConnect() command to use userConfigFile and userKeyFile parameters to store the encrypted user credentials.</p><p>Another point to make is that your usual "startComponent.cmd ohs_component" script won't work any more. This is because the script tries to connect to nodemanager on localhost instead of the hostname. The simple solution is to use the same startOHS2.py script on your second OHS server.</p><p><br /></p><p>Hope you all have a safe and merry Christmas!</p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-75750461552786964572020-11-06T12:28:00.002+00:002022-04-07T16:56:42.126+01:00Data Load Fails in EPM Cloud Data Management when using Replace Data Option<p> We were trying to load data into an EPM Planning Cloud application and we saw this:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJDIMkwyLsdvcK03ate3OdW8-w0oJArjcScAieOCRd9zAp-RJdIxfb4c7DuVP8SYbRcPpRdnztEhyphenhyphenLU9S6yezCzCLWUgWNfKHQ07wHXZM6q-gG0UhiQynS4bR3p0dbOHHhe03c5SehSfJ/" style="margin-left: 1em; margin-right: 1em;"><img alt="Data management, EPM Cloud, Error" data-original-height="86" data-original-width="391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJDIMkwyLsdvcK03ate3OdW8-w0oJArjcScAieOCRd9zAp-RJdIxfb4c7DuVP8SYbRcPpRdnztEhyphenhyphenLU9S6yezCzCLWUgWNfKHQ07wHXZM6q-gG0UhiQynS4bR3p0dbOHHhe03c5SehSfJ/s16000/image.png" /></a></div><br /><p></p><p class="MsoNormal" style="margin-bottom: 0cm;">Oh no, the dreaded red cross when
doing a data export in Data Management!</p><p class="MsoNormal" style="margin-bottom: 0cm;"><br /></p><p class="MsoNormal" style="margin-bottom: 0cm;">In this example we were running a
data load to a target plan type using the 'Replace Data' option.</p><p class="MsoNormal" style="margin-bottom: 0cm;"><br /></p><p class="MsoNormal" style="margin-bottom: 0cm;">Here is the error message in the
log:</p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;">2020-11-06 09:55:02,837 INFO [AIF]: Replace data script: <o:p></o:p></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;"><b>FIX ("Manchester",”Apr”,”Working","FY21")<o:p></o:p></b></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;"><b>CLEARDATA "null";<o:p></o:p></b></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;"><b>ENDFIX</b><o:p></o:p></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;">2020-11-06 09:55:02,838 INFO [AIF]: EssbaseRuleFile.getReplaceDataScript -
END<o:p></o:p></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;">2020-11-06 09:55:02,875 ERROR
[AIF]: Cannot calculate. Essbase Error(1012004): Invalid member name [null]<o:p></o:p></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;">2020-11-06 09:55:02,882 INFO [AIF]: EssbaseService.loadData - END (false)<o:p></o:p></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: courier;">2020-11-06 09:55:02,901 FATAL
[AIF]: Error in CommData.loadData</span><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p> </o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;">The issue we have is that the calc
script is obviously invalid. When you run data load rule with the “Replace Data”
option it dynamically creates a calculation to clear the data in the target
cube before it loads the data.</p><p class="MsoNormal" style="margin-bottom: 0cm;"><br /></p><p class="MsoNormal" style="margin-bottom: 0cm;">The calculation generated is
usually of the format <span style="font-family: courier;"><b>CLEARDATA “Scenario Name”</b></span><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;">where the Scenario (DM Category)
is derived from whatever category you have set in your data load rule.</p><p class="MsoNormal" style="margin-bottom: 0cm;"><br /></p><h1 style="margin-bottom: 0cm; text-align: left;">So why was ours failing?</h1><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;">We were loading data into multiple
scenarios from the same file. In order to do this we had set our Scenario
dimension to Generic in the target application dimension details:</p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p> </o:p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXrijtE4fbrUZ33tJ8HEm2uREW5KRL9dFS_1HKEvMlQXWa7omLP_ggyFVIk-jSTSxvfGKIZJA4ZJrC7MNqtgcZ2mOhQn5I4ArL7XH5E6Uzdn-w-NkWAzqoKjuXJ-3Owg1ITp0FDBUyeBAL/" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="30" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXrijtE4fbrUZ33tJ8HEm2uREW5KRL9dFS_1HKEvMlQXWa7omLP_ggyFVIk-jSTSxvfGKIZJA4ZJrC7MNqtgcZ2mOhQn5I4ArL7XH5E6Uzdn-w-NkWAzqoKjuXJ-3Owg1ITp0FDBUyeBAL/s16000/image.png" /></a></div><br /><br /><p class="MsoNormal" style="margin-bottom: 0cm;">This of course means that the
Category (Scenario) in the rule is ignored so the dynamically generated CLEARDATA calculation
sets the scenario as null.</p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p> </o:p></p><h1 style="margin-bottom: 0cm; text-align: left;">The solution?</h1><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p></o:p></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: Calibri, sans-serif; font-size: 11pt;">Set the data export mode to 'Store Data'. This will just load the data into the target without trying to clear the data using a dynamic script. We run a business rule prior to the load to clear the data target.</span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: Calibri, sans-serif; font-size: 11pt;"><br /></span></p><p class="MsoNormal" style="margin-bottom: 0cm;"><span style="font-family: Calibri, sans-serif; font-size: 11pt;"></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT1KxD5swIO8O-y1b29TtZRWInXvzDslBWWCZAdDAh2IXTkRvQHSIdBd1_1SNBRq98_vsigu_sOLJMdPbXfoWHB42Enfv9nuCQ0BJ7U_K5L6j5WXp_iyB8C95VdGngP7qXitywjNKIVel3/" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="47" data-original-width="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT1KxD5swIO8O-y1b29TtZRWInXvzDslBWWCZAdDAh2IXTkRvQHSIdBd1_1SNBRq98_vsigu_sOLJMdPbXfoWHB42Enfv9nuCQ0BJ7U_K5L6j5WXp_iyB8C95VdGngP7qXitywjNKIVel3/s16000/image.png" /></a></div><br />Ahhh, that's better. <p></p><p class="MsoNormal" style="margin-bottom: 0cm;"><o:p></o:p></p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-29734091127218205832020-09-24T14:03:00.004+01:002020-09-24T16:30:26.981+01:00EPM 11.2.2 - APS Fails to Start Correctly<p>There is a bug in EPM 11.2.2 which causes the Analytic Provider Services web application to fail to start up correctly the second time it is launched. You won't be able to connect to Essbase using Smart View and you will see these errors in the APS log file:</p><p><span style="font-family: courier;"></span></p><blockquote><p><span style="font-family: courier;"><Error> <HTTP> <BEA-101216> <Servlet:"oracle.webservices.essbase.DatasourceService" failed to preload on startup in Web application: "/essbase-webservices".</span></p><p><span style="font-family: courier;">weblogic.application.ModuleException: java.lang.RuntimeException: Failed to deploy/initialize the application as given archive is missing required standard webservice deployment decriptor.</span></p></blockquote><p><span style="font-family: courier;"></span></p><p>The fix can be found in Oracle Support Doc ID 2693784.1. You'll need to apply APS patch 11.1.2.4.040 to your EPM 11.2.2 install. This might seem strange to have to apply a patch from the previous version but remember that EPM 11.2.2 actually runs Essbase version 11.1.2.4 under the covers.</p><p>I can confirm that once you apply the patch, APS starts correctly. Everyone can go and have a nice cup of tea.</p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com1tag:blogger.com,1999:blog-7033364975447167607.post-21350839121938532952020-09-18T12:53:00.004+01:002020-09-18T13:44:38.904+01:00EPM 11.2.x - Where did my Oracle Wallet Manager Go?<p>Recently I had to install EPM 11.2.x for a customer using MS SQL Server as their relational repository. The EPM installer package comes bundled with the option to install the Oracle Client. This customer didn't need the client so there was no need to add the Oracle clients to the installed options.</p><p>Big Mistake!</p><p>The Oracle Wallet Manager is used to create SSL certificate requests and to import new certificates for Oracle HTTP Server. In previous versions of EPM, the EPM stack would also install the Oracle Wallet Manager for you by default. This is no longer the case in EPM 11.2.x, the Wallet Manager only gets installed if you install the Oracle Client:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZDC9hJuidRUAXZLNIeQkB5pnO1OTWS8e0mh5NAw6skrVLveRy7k4ymG2BzKUNr_w1eYIZSe2fhYdcz8V8hTwdkS5w-Ob1vg8DgccwWzOP2j6rrbKU5n0Yl3ICMZbzSwu4EkzbbtIleOvB/s489/EPM+11.2+Oracle+Client.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="276" data-original-width="489" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZDC9hJuidRUAXZLNIeQkB5pnO1OTWS8e0mh5NAw6skrVLveRy7k4ymG2BzKUNr_w1eYIZSe2fhYdcz8V8hTwdkS5w-Ob1vg8DgccwWzOP2j6rrbKU5n0Yl3ICMZbzSwu4EkzbbtIleOvB/s16000/EPM+11.2+Oracle+Client.png" /></a></div><br /><p><br /></p><p><b>Lesson: always install the Oracle Client as part of the EPM stack, even if you don't need it!</b></p><p>Fortunately the Oracle client installer can be found in the unzipped EPM installation extracts: <Extract Location>\db64\Disk1</p><p>Run the setup.exe and your Oracle Wallet Manager will appear by magic. Happy SSLing!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdUzeWuItsPKlVXzOieFRujl_LhysCzHS1E5QgNsXvU9cpOEd1sPogGQL4zxzoYAhFixtHqGmVVbMWZqASez524lxyjLRJ3tr00cOO_l9HiGL_BAm_vsC5tY01BCEQD3Cm4BoaF4KqAutr/s496/oracle+wallet+manager.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="496" data-original-width="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdUzeWuItsPKlVXzOieFRujl_LhysCzHS1E5QgNsXvU9cpOEd1sPogGQL4zxzoYAhFixtHqGmVVbMWZqASez524lxyjLRJ3tr00cOO_l9HiGL_BAm_vsC5tY01BCEQD3Cm4BoaF4KqAutr/s16000/oracle+wallet+manager.png" /></a></div><br /><p><br /></p>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-32024981767129518832020-02-25T16:29:00.000+00:002020-02-25T17:17:38.278+00:00Oracle EPM 11.2 Installation How ToThere have been some very helpful blogs and twitter posts out there commenting on the Oracle EPM 11.2 installation so I'd like to thank these lovely people:<br />
<ul>
<li>Dave Shay: <a href="http://www.epmonprem.pro/">http://www.epmonprem.pro/</a></li>
<li>That EPM Bloke: <a href="http://hyperipwn.blogspot.com/">http://hyperipwn.blogspot.com/</a></li>
<li>AJ Martelino <a href="https://twitter.com/HyperionInfra">https://twitter.com/HyperionInfra</a></li>
</ul>
I’ve taken some of the info from the resources above and my own trial an error and come up with a condensed Oracle EPM 11.2 installation crib sheet. I’d recommend getting an Oracle EPM infrastructure consultant to do this for you as it’s quite involved. Oracle have had years to get this right so I really can’t understand how they’ve made such a mess of it. Multiple RCUs?!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyxCry50nCkppI2cd2ykxLXaDp-cVw8JSq1QAtCToi4jiJ2j7KeHIQnLt483zNrjNzEQZjGDbQ7T1kbnAIiQbY-QfVQind2FquQiCu4sfxMkbn_5i7ExzGyPJjjeCTqwChG-Tmc9xmhgug/s1600/Why_I_Oughta.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="287" data-original-width="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyxCry50nCkppI2cd2ykxLXaDp-cVw8JSq1QAtCToi4jiJ2j7KeHIQnLt483zNrjNzEQZjGDbQ7T1kbnAIiQbY-QfVQind2FquQiCu4sfxMkbn_5i7ExzGyPJjjeCTqwChG-Tmc9xmhgug/s1600/Why_I_Oughta.jpg" /></a></div>
<br />
<h3>
Server Preparation</h3>
I used the following 3rd party software versions. Check the <a href="https://www.oracle.com/middleware/technologies/bi-foundation/hyperion-supported-platforms.html" target="_blank">EPM Certification Matrix</a> for full details<br />
<ul>
<li>Windows Server 2019</li>
<li>SQL Server 2016</li>
</ul>
<b>Windows Firewall</b><br />
<ul>
<li>Turn off notifications and blocking for Domain and Local Network.</li>
</ul>
<b>Windows Defender</b><br />
<ul>
<li>Turn off on-access scanning.</li>
</ul>
<b>Other Bits</b><br />
<ul>
<li>Create a new user with administrator privileges (using the 'administrator' user is not recommended although it worked for me).</li>
<li>Turn off UAC. I also set these local policies to ensure UAC is completely turned off:</li>
<ul>
<li>User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode (set to Elevate without prompting)</li>
<li>User Account Control: Detect application installations and prompt for elevation (set to Disabled)</li>
<li>User Account Control: Only elevate UIAccess applications that are installed in secure locations (set to Disabled)</li>
<li>User Account Control: Run all administrators in Admin Approval Mode (set to Disabled)</li>
</ul>
<li>When launching any batch files right-click and 'Run as Administrator'.</li>
<li>Check your install binaries. For some reason my V984509-01_part5.zip was unable to extract the fmw_12.2.1.3.0_odi.jar file.</li>
</ul>
<h3>
RCU</h3>
For distributed installs you will need to run the RCU for each server node. I did try copying across the RCUSchema.properties file from my first node to other nodes but I got this error when trying to deploy the web app servers on other nodes: "The schema EPM_OPSS is already in use for security store(s)". So each node <i>does</i> need a separate RCU schema.<br />
<br />
Having multiple RCU SQL databases per server node is a pain. To make things more manageable I used the same RCU database for each node and just changed the RCU prefix so I only needed one database.<br />
<br />
Add your RCU database connection details manually to the E:\Oracle\Middleware\EPMSystem11R1\common\config\11.1.2.0\RCUSchema.properties:<br />
<br />
sysDBAUser=UserName<br />
sysDBAPassword=Password<br />
rcuSchemaPassword=Password<br />
schemaPrefix= e.g EPM1<br />
dbURL= e.g. jdbc:weblogic:sqlserver://EPM1:1433;databaseName=RCU<br />
<h3>
EPM Configuration</h3>
Configure only the Foundation app server and database first. After configuring Foundation launch Weblogic admin server and start the Foundation Windows service.<br />
Once you’ve done this you can then go ahead and configure the other components.<br />
If you’re doing a distributed installation, make sure the Weblogic admin server is running on the first node before you configure the other nodes. On the second node I went through the same procedure of only configuring Foundation first, starting it, stopping it and then configuring the rest.<br />
<h3>
OHS</h3>
The config utility doesn’t create a OHS Windows service for us so we need to start it manually.<br />
<ul>
<li>To start OHS run E:\Oracle\Middleware\user_projects\EPM1\httpConfig\ohs\bin\startComponent.cmd ohs_component</li>
<li>To stop OHS run E:\Oracle\Middleware\user_projects\EPM1\httpConfig\ohs\bin\stopComponent.cmd ohs_component</li>
</ul>
That EPM Bloke has kindly created a service wrapper <a href="http://hyperipwn.blogspot.com/2020/01/ohs-service-wrapper.html" target="_blank">here</a>.<br />
<h3>
Rip it up and start again</h3>
The uninstallers are surprisingly good. If you need to ditch it all and start again then uninstall in this order. From the Windows menu:<br />
<ul>
<li>Run the “Oracle EPM System” -> “Uninstall EPM System”</li>
<li>Run “Oracle FMW – 12.2.1.3.0 (2)” -> “Uninstall OracleHome2”</li>
<li>Run “Oracle FMW – 12.2.1.3.0” -> “Uninstall OracleHome”</li>
</ul>
The Oracle Client installs will prompt you to uninstall from the command line<br />
Just to be sure I also deleted anything EPM related in the C:\Users\<USER>\AppData\Local folder.<br />
<br />
I've now got a clustered EPM installation working nicely. Happy installing everyone.<br />
<div>
<br /></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-85062794907211495522019-12-04T18:12:00.000+00:002019-12-10T11:15:23.827+00:00OAC Remote Data Gateway Part 2: The RPD<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiruly6l6Rm10yBN8Qa8jFnU9nkAoT6am3JFQArEUFDCZDH02LwSZO2Yx1MPv0kaCZWiCW2KxOEYoqZQu_I1lArpiFCsAbZK8tCMxNRPeWoc79y6MLFru0iqXnxrCkJ0mEBkk4P9Qoo5Fos/s1600/Data+Gateway+RPD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="289" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiruly6l6Rm10yBN8Qa8jFnU9nkAoT6am3JFQArEUFDCZDH02LwSZO2Yx1MPv0kaCZWiCW2KxOEYoqZQu_I1lArpiFCsAbZK8tCMxNRPeWoc79y6MLFru0iqXnxrCkJ0mEBkk4P9Qoo5Fos/s1600/Data+Gateway+RPD.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
<h2>
OAC Data Gateway 105.4: Now with added RPD goodness</h2>
In one of my previous posts (<a href="https://hyperion-epm-bi.blogspot.com/2019/07/oac-remote-data-gateway-connecting-to.html" target="_blank">here</a>) I went through the setup of the Oracle Analytics Cloud Data Gateway utility. I showed how this could be used to connect your OAC instance to your on-premises data sources without the need of opening firewalls etc.<br />
<br />
One missing piece of the puzzle was how to get the OAC RPD semantic layer to connect to on-premises using Data Gateway. This is a key piece of functionality that all current OBIEE customers will need if they want to connect their existing dashboards to their on-premises datasources. Thankfully with the release of OAC 105.4 it is now possible to connect your to your on-premises data sources via your RPD using Data Gateway.<br />
<br />
Prerequisites:<br />
<ul>
<li>Install the latest version of OAC Data Gateway from <a href="https://www.oracle.com/middleware/technologies/oac-downloads.html" target="_blank">here</a></li>
<li>Install the OAC 105.4 Admin Tool on the <b>SAME </b>machine</li>
</ul>
<br />
Okay, that's it for pre-reqs :)<br />
<br />
<h2>
Alors mon cher ami, how do I get this to work?</h2>
Here are the steps to connect your OAC Cloud RPD to your on-premises data sources:<br />
<ul>
<li>Make sure Data Gateway is running. Check <a href="https://hyperion-epm-bi.blogspot.com/2019/07/oac-remote-data-gateway-connecting-to.html" target="_blank">here </a>if you need to review the setup</li>
<li>Open up the <b>obiee_rdc_agent.properties</b> in the Data Gateway folder and note down the port number. (Beware, this number will change automatically each time you save the Data Gateway config so alter as necessary)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0DPtFZcS5wTuK4zWN8foOg6n0DYgsBTRb7TU0fYGhBF9dYfIeiiIDWItKnG3_iNb8HW_HcDCpVQph6ebW3CYVjBCmPvObXmT33N77iKk_HGtg2GKzZUHNFrBB2oud-Y6yEZIi-WEL7H9X/s1600/Data+Gateway+Port+Number.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="90" data-original-width="418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0DPtFZcS5wTuK4zWN8foOg6n0DYgsBTRb7TU0fYGhBF9dYfIeiiIDWItKnG3_iNb8HW_HcDCpVQph6ebW3CYVjBCmPvObXmT33N77iKk_HGtg2GKzZUHNFrBB2oud-Y6yEZIi-WEL7H9X/s1600/Data+Gateway+Port+Number.png" /></a></div>
<div>
<br /></div>
<ul>
<li>Launch the OAC Admin Tool</li>
<li>Before you open your RPD file go to File -> Load Java Datasources...</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl7lbdjTveNBZwVxDP98gYyuM6yKsSd5Rh4QNXrk9DuhiOBYguvoJsf2apCeRPKeG2K54RLIF0Ydo8BbEP5c7-QXHTqOZP-jp4_Pv8PKhyphenhyphen2pBy0rWfonxTSsxO7Is5rH-Msl8H-wx3_bze/s1600/Load+java+datasources.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl7lbdjTveNBZwVxDP98gYyuM6yKsSd5Rh4QNXrk9DuhiOBYguvoJsf2apCeRPKeG2K54RLIF0Ydo8BbEP5c7-QXHTqOZP-jp4_Pv8PKhyphenhyphen2pBy0rWfonxTSsxO7Is5rH-Msl8H-wx3_bze/s1600/Load+java+datasources.png" /></a></div>
<br />
<ul>
<li>Enter the following details:</li>
<ul>
<li>Hostname: <b>localhost</b> (Data Gateway is on the same machine as your Admin Tool)</li>
<li>Port: The port you found in the obiee_rdc_agent.properties earlier</li>
<li>User: <b>Whatever</b>. Literally enter anything you like for the username and password, there is no authentication but this field needs to be populated</li>
<li>Password: <b>whatever</b></li>
</ul>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggHz9IE4RmLftbqmlNxHdIk0dVK8LAJLPpDSBUHmsY7YlMEnUnPzGpEU7r-JtfmNrVbhp8UPd_C8zNVegnmnG1IFynA1zWXP_rwGXX1FyQ1NGbt5MJh84A5eiqiR0PYL59ad1S6bSe4A6A/s1600/java+datasource+connection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="187" data-original-width="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggHz9IE4RmLftbqmlNxHdIk0dVK8LAJLPpDSBUHmsY7YlMEnUnPzGpEU7r-JtfmNrVbhp8UPd_C8zNVegnmnG1IFynA1zWXP_rwGXX1FyQ1NGbt5MJh84A5eiqiR0PYL59ad1S6bSe4A6A/s1600/java+datasource+connection.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<ul>
<li>You should see the following message:</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1uhKVVdSSk59y_ud4CXYrrGw7KFpKDcfu-PY6ANGX_m2mv-hcdtI3OG6pzKm80dj0F4GYdZvGPixqZ44rnj9uvVK3ednNVDRXUgEOyC6UHSV5EldffWc_BwyLvxWKegPSRBGmdgqShKqs/s1600/success+java+datasources.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="159" data-original-width="411" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1uhKVVdSSk59y_ud4CXYrrGw7KFpKDcfu-PY6ANGX_m2mv-hcdtI3OG6pzKm80dj0F4GYdZvGPixqZ44rnj9uvVK3ednNVDRXUgEOyC6UHSV5EldffWc_BwyLvxWKegPSRBGmdgqShKqs/s320/success+java+datasources.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul>
<li>Open your RPD 'In the Cloud'</li>
<li>Duplicate the physical source as a backup (just in case)</li>
<li>Open the connection pool select JDBC as the call interface</li>
<li>Enter the jdbc string to connect to your local db in the Connection String (SQL Server in my example jdbc:oracle:sqlserver://MySQLHostname:1433;DatabaseName=MyDatabase)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidYKgfsGaVf-DNea96ZNWYtEjGRBU_JVW1RrHFgBQPjd6HDvGC2cyZkIE5T48lv16LFDAwRLhSu4qLFRvOIg2YLCL_tOz5-XCPY3aDl6X5q8nLfNt7uvJAKt-ugBrPPiCb61THfbyRnN6L/s1600/Data+Gateway+connection+pool+jdbc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="615" data-original-width="427" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidYKgfsGaVf-DNea96ZNWYtEjGRBU_JVW1RrHFgBQPjd6HDvGC2cyZkIE5T48lv16LFDAwRLhSu4qLFRvOIg2YLCL_tOz5-XCPY3aDl6X5q8nLfNt7uvJAKt-ugBrPPiCb61THfbyRnN6L/s1600/Data+Gateway+connection+pool+jdbc.png" /></a></div>
<br />
<ul>
<li>In the Miscellaneous tab enter the path to the jdbc driver class. In my example I'm using SQL Server com.oracle.bi.jdbc.sqlserver.SQLServerDriver but you can find the full list of JDBC and JNDI templates and examples <a href="https://docs.oracle.com/en/cloud/paas/analytics-cloud/acabi/configure-and-register-data-gateway-reporting.html#GUID-D3A2E61F-4D60-4442-9E0B-943A7369C468" target="_blank">here</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_NiHMuODAFHUItE5LlzGOiyaz9Hz2vu6TjeSk8enSA4xPakempqqw3Fr5YwAp8MXjyxyRW84lTImiQLFPrPAwv7wi7NXX58stHmY4XKx_K1OALre9iHYEEq6rWxFb7mRpBRTYYIzwUSO/s1600/Data+Gateway+connection+pool+jdbc+driver+class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="623" data-original-width="432" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_NiHMuODAFHUItE5LlzGOiyaz9Hz2vu6TjeSk8enSA4xPakempqqw3Fr5YwAp8MXjyxyRW84lTImiQLFPrPAwv7wi7NXX58stHmY4XKx_K1OALre9iHYEEq6rWxFb7mRpBRTYYIzwUSO/s1600/Data+Gateway+connection+pool+jdbc+driver+class.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul>
<li>Save your RPD and publish to the cloud</li>
<li>To test the connection try to import the metadata by right-clicking on the Connection Pool:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT_vhBaz-wAnoPj8wK5QSi3hwNgjMKc0D9E-A95fsDQfRWY36MJEhqiVvbkuDBXUcy5zoBQ2wBqv4e8EONUVc3Q-PGuiOhH9CYVN15kVQSH2AGpBQliy3uonCPklfup5jaMQen89pyyLDl/s1600/Import+Metadata.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="76" data-original-width="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT_vhBaz-wAnoPj8wK5QSi3hwNgjMKc0D9E-A95fsDQfRWY36MJEhqiVvbkuDBXUcy5zoBQ2wBqv4e8EONUVc3Q-PGuiOhH9CYVN15kVQSH2AGpBQliy3uonCPklfup5jaMQen89pyyLDl/s1600/Import+Metadata.png" /></a></div>
<div>
<br /></div>
<div>
And that's it. All being well you should be able to view your existing dashboards in OAC sourcing the data from your on-premises databases. When we tested response times were surprisingly fast.</div>
<div>
<br /></div>
<div>
<a href="https://www.youtube.com/watch?v=lxStpomQgt0" target="_blank">Super, smashing, great</a>.</div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-68392112865835653772019-10-01T09:09:00.000+01:002019-10-01T13:17:56.532+01:00OCI - Installing EPM Automate on Always Free Oracle Linux<h2>
Using Oracle's FREE Cloud VMs to Store your EPM Cloud Snapshots</h2>
Unless you have been living under a rock for the past month you will know that Oracle have released their "Oracle Cloud Free Tier". This consists of the following services FOR FREE!<br />
<a href="https://www.oracle.com/uk/cloud/free/">https://www.oracle.com/uk/cloud/free/</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" data-original-height="194" data-original-width="577" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnNQQNeLZ8lNrmXOiJ7iqu5FmvB-4SGwzaznhyJpdE9y-MHJZLTIgtdFNwrP0BmP0ksyK-PMZQyhQNEA1GBqfI2Gb3Yisr4QQ14ZjioorekZ_0zcX34s05sSpS0gLwyIuWYCAFc9R2FwUo/s640/Oracle+Free+Tier.png" width="640" /></div>
<br />
I've enjoyed playing with ADW and APEX, an incredible combo which will enable us to build simple applications to enhance our existing EPM Cloud apps.<br />
<br />
The two free Oracle Cloud Infrastructure Compute VMs also caught my attention. These could of course be used for a multitude of things, one of which could be a host for EPM Automate and a location to store EPM Cloud snapshots.<br />
<h2>
Installing EPM Automate on Oracle Linux OCI</h2>
There are several blogs out there on how to setup your instance. Here is a good one from APEX guru Dimitri:<br />
<a href="https://dgielis.blogspot.com/2019/09/free-oracle-cloud-6-create-vm-instance.html">https://dgielis.blogspot.com/2019/09/free-oracle-cloud-6-create-vm-instance.html</a><br />
So, once you've got your VM running you can install EPM Automate.<br />
<br />
<ul>
<li>Download the Linux EPM Automate installer. The link can be found in the PBCS user name drop-down:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh14Dkp5D-IWzu87hLaaOTxeN4Wn5Ob_OwGODsCsjhCdHcUJ1Woc0KoboFEy7SiNLT0tmmkrlW5DNxicGilU796AbWvdevVcGXn1I2yuRfN0cpVp61WnAmW10_hEElnpt3gPNHFfGMG6DfW/s1600/EPM+Cloud+Downloads.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh14Dkp5D-IWzu87hLaaOTxeN4Wn5Ob_OwGODsCsjhCdHcUJ1Woc0KoboFEy7SiNLT0tmmkrlW5DNxicGilU796AbWvdevVcGXn1I2yuRfN0cpVp61WnAmW10_hEElnpt3gPNHFfGMG6DfW/s1600/EPM+Cloud+Downloads.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxc8x323X210e1Qz4-vJZCEVMfPLgZiwvYcWmJnfElhWuqbAHwFrAfbsD-8A2OB1J-n3V6ML78ltLVFGX49GLDJovxzoLDC5JCR1xozy2tisD9SLa3ghtRPz-EgsYm8c850gAjzA0sssrZ/s1600/Download+for+linux.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="180" data-original-width="621" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxc8x323X210e1Qz4-vJZCEVMfPLgZiwvYcWmJnfElhWuqbAHwFrAfbsD-8A2OB1J-n3V6ML78ltLVFGX49GLDJovxzoLDC5JCR1xozy2tisD9SLa3ghtRPz-EgsYm8c850gAjzA0sssrZ/s320/Download+for+linux.png" width="320" /></a></div>
<div>
<br /></div>
<ul>
<li>Download the Java JDK for Linux from <a href="https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank">here</a> for example (the JDK doesn't come bundled with the Linux EPM Automate version)</li>
<li>Copy both installers to your Oracle Linux VM using your favourite file transfer tool (WinSCP for instance)</li>
</ul>
<h2>
Installing the JDK on Oracle Linux VM</h2>
<div>
JRE version 1.7 or higher is required.</div>
<div>
<br /></div>
<div>
This is nice and simple. The installer is just a compressed file so you can extract it to your preferred location:</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">tar -zxvf <filename></span></div>
<div>
e.g.</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">tar -zxvf jdk_ri-8u40-b25-linux-x64-10_feb_2015.tar.gz</span></div>
<div>
<br /></div>
<div>
I extracted mine to /GS_software/java-se-8u40-ri</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBtWk1QKa7Fma9C1k_4QVRddlUI36XnAxlfE_w4CVSDyZE5FD0C2ODT0IgFkxOdshyphenhyphenfkc68BEVFdIzCqWksKD1hKQ71dMREAR-d_tl0kULaYIrhFIjAMo9TzH8vzl2HDlh-2wV-lY8TH3/s1600/java+location.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="230" data-original-width="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBtWk1QKa7Fma9C1k_4QVRddlUI36XnAxlfE_w4CVSDyZE5FD0C2ODT0IgFkxOdshyphenhyphenfkc68BEVFdIzCqWksKD1hKQ71dMREAR-d_tl0kULaYIrhFIjAMo9TzH8vzl2HDlh-2wV-lY8TH3/s1600/java+location.png" /></a></div>
<div>
<br />
<h2>
Installing EPM Automate on Oracle Linux VM</h2>
</div>
<div>
This is again nice and simple. The EPM Automate is a compressed file, extract it to your preferred location:</div>
<div>
<br /></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">tar -xvf epmautomate.tar</span></div>
<div>
<br /></div>
<div>
I extracted mine to /GS_software/epmautomate</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsO7BbjXY3gaF3Xjbelb3VRvy_HyJYgyx2S0iovnNeq5ZThTaMzbOsWzhbOygJ7Y0dox5rdJKfjYjZtfUZqAePxMbn2kcDCvfTE3ChFsIht5VachNWr3-GGL-Psf6qM5912_RoENstCWvr/s1600/epmautomate+location.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="176" data-original-width="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsO7BbjXY3gaF3Xjbelb3VRvy_HyJYgyx2S0iovnNeq5ZThTaMzbOsWzhbOygJ7Y0dox5rdJKfjYjZtfUZqAePxMbn2kcDCvfTE3ChFsIht5VachNWr3-GGL-Psf6qM5912_RoENstCWvr/s1600/epmautomate+location.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
Setting your JAVA_HOME</h2>
<div>
You'll need to set the JAVA_HOME in your user profile or as a shell environment variable.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bApe0ocCR1tQAFCX0uAxCl9x_HtHlaPR2oyQHd8dLUekoupvOH61T6NnTjr4_x9myE_4632Q3mpcdHHLjGzagKlV-VQYM0YeGX9A6gzE7JN8-ci-v9NjOhAzcf8yQBpkeKCLpH2d8N6L/s1600/profile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="397" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bApe0ocCR1tQAFCX0uAxCl9x_HtHlaPR2oyQHd8dLUekoupvOH61T6NnTjr4_x9myE_4632Q3mpcdHHLjGzagKlV-VQYM0YeGX9A6gzE7JN8-ci-v9NjOhAzcf8yQBpkeKCLpH2d8N6L/s320/profile.png" width="320" /></a></div>
<div>
<br /></div>
<h2>
Running EPM Automate</h2>
<div>
So, we've extracted the JDK and the EPMAUTOMATE archive, we should be good to go right?</div>
<div>
<br /></div>
<div>
WRONG!</div>
<div>
<br /></div>
<div>
I got the following error when trying to login:</div>
<div>
<br /></div>
<div>
<i>EPMAT-7:Unable to connect to https://planning-blahblah.pbcs.em3.oraclecloud.com Root Cause: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty.</i></div>
<div>
<div>
<i> 1. Ensure that you are using the correct URL.</i></div>
<div>
<i> 2. If your organization requires the use of a proxy server to connect to the internet, verify that "proxyHost" and "proxyPort" environment variables are correctly set.</i></div>
<div>
<i> Ex: setenv proxyHost <proxyhostname>,setenv proxyPort <proxyport></i></div>
</div>
<div>
<br /></div>
<div>
The problem here is that we don't have the SSL certificate installed into our java keystore.</div>
<h2>
Importing the SSL Certificate into the Java Keystore</h2>
<div>
<div>
Open a browser and connect to your PBCS URL</div>
<div>
https://planning-blahblah.pbcs.em3.oraclecloud.com/HyperionPlanning</div>
<div>
<br /></div>
<div>
<b><i><span style="color: red;">Make sure you actually login to PBCS. If you download the certificate on the login page it will be the wrong certificate and you will get a bogus error like this: "EPMAT-7: Unable to connect. Unsupported Protocol: HTTPS".</span></i></b></div>
<div>
<ul>
<li>Once you've logged in to EPM Cloud click on the browser padlock-> connection ->more information:</li>
</ul>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi57rvie0W_UZYrupP52Pzrd550-gwUJJ9nanjkv_of2qcFgSzQss-QZAmGHNDQLAjcYCg1BnG8cSVn5qGOQVERVqmxG61XHjLDKNv-rS73HGkRaP7K-QiewkFBknOlrevQer3mRgnv3M8B/s1600/browser+padlock.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="595" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi57rvie0W_UZYrupP52Pzrd550-gwUJJ9nanjkv_of2qcFgSzQss-QZAmGHNDQLAjcYCg1BnG8cSVn5qGOQVERVqmxG61XHjLDKNv-rS73HGkRaP7K-QiewkFBknOlrevQer3mRgnv3M8B/s640/browser+padlock.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnx28jEqLE8DtCvijvQwgxZ5cRMFOYf9jAlKbYXC7r9zRtbUEpz5FACT4kPtrUVYmCq6vkIzOwCWDiczYMjfvPHqGc_tJs2rW0LuX53u5PSTJd39ErXPTXx99AFY-WOs7rTCM78NDmTu6p/s1600/certificate1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="463" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnx28jEqLE8DtCvijvQwgxZ5cRMFOYf9jAlKbYXC7r9zRtbUEpz5FACT4kPtrUVYmCq6vkIzOwCWDiczYMjfvPHqGc_tJs2rW0LuX53u5PSTJd39ErXPTXx99AFY-WOs7rTCM78NDmTu6p/s400/certificate1.png" width="400" /></a></div>
<div>
<ul>
<li>Click on 'View Certificate':</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy-9LlCfYGjCgYT_061op8xn-32j76Rhs7utyiUI0iojiEemBzt009ODVM_Vzlypjvjm8uAbjzAvgPHDzGWkSQnQ0iEufODCnVt1Jm6jRWr4SA9JZPopJUTx2OMYiYTICcG00Bx0mGkpDt/s1600/certificate2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="483" data-original-width="458" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy-9LlCfYGjCgYT_061op8xn-32j76Rhs7utyiUI0iojiEemBzt009ODVM_Vzlypjvjm8uAbjzAvgPHDzGWkSQnQ0iEufODCnVt1Jm6jRWr4SA9JZPopJUTx2OMYiYTICcG00Bx0mGkpDt/s400/certificate2.png" width="378" /></a></div>
<div>
<ul>
<li>Click on Export and save the .crt file to your desktop</li>
<li>Upload it using WinSCP to your VM e.g. /GS_software/epmautomate/pbcs_em3_oraclecloud_com.crt</li>
</ul>
</div>
<div>
We now need to import the certificate into our Java cacerts keystore:</div>
<div>
<ul>
<li>Change directory to jre/bin </li>
</ul>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">cd /GS_software/java-se-8u40-ri/jre/bin</span></div>
<div>
<ul>
<li>Run the keytool command to import the certificate:</li>
</ul>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">./keytool -import -file /GS_software/epmautomate/bin/pbcs_em3_oraclecloud_com.crt -storepass changeit -keystore /GS_software/java-se-8u40-ri/jre/lib/security/cacerts -alias pbcs_em3_oraclecloud_com</span></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyacfDMAk3TSFFckIowna_wI8JBsOuUoiEcuhJq2jY7u6OMFFV6YTNwps0uH_pqpL88WQBLXgBhJ363495xiaCAiF069phMu08dvGkZ4H880aJGkaADQ5C8a88G7Sp0Jhwf2My9UnhX6hx/s1600/import+certificate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="354" data-original-width="733" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyacfDMAk3TSFFckIowna_wI8JBsOuUoiEcuhJq2jY7u6OMFFV6YTNwps0uH_pqpL88WQBLXgBhJ363495xiaCAiF069phMu08dvGkZ4H880aJGkaADQ5C8a88G7Sp0Jhwf2My9UnhX6hx/s640/import+certificate.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Now test EPM Automate again:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl-eMGu38BXZ5_e0_98G6G5OBS8bJlmU-o3BN0VlfVkPs7NCcuTYrmlOx_9SDQfpeNdXI1IKwVIbnj47K6cb9Tl-5ZXYsuR4pKZUUg3h2kGEJS50xzyGOrykO1bToSMWuDkq-lOjFluVZC/s1600/epmautomate+login.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="128" data-original-width="725" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl-eMGu38BXZ5_e0_98G6G5OBS8bJlmU-o3BN0VlfVkPs7NCcuTYrmlOx_9SDQfpeNdXI1IKwVIbnj47K6cb9Tl-5ZXYsuR4pKZUUg3h2kGEJS50xzyGOrykO1bToSMWuDkq-lOjFluVZC/s640/epmautomate+login.png" width="640" /></a></div>
<div>
<br /></div>
<div>
It works!</div>
<div>
<br /></div>
<div>
So you have a FREE Oracle VM on which you can run your EPM Automate commands and save your EPM Cloud PBCS snapshots for FREE! Zero installs required in your customer data centre.</div>
<div>
<br /></div>
<div>
Did I mention it was FREE?<br />
<br />
If you're not comfortable with Linux or simply haven't got the time then our support team at Brovanture will gladly manage this service for you.</div>
<div>
<br /></div>
<div>
Thanks :)</div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-68986876772509827772019-09-11T15:24:00.002+01:002019-09-11T16:07:38.690+01:00OAC - Starting and stopping instances using the REST API (Autonomous/Oracle Managed)We waited a while to be able to start and stop OAC Oracle Managed (autonomous) instances through the OAC console but there isn't a way to schedule the starting and stopping of instances in the console. This is of course very important if you want to keep costs down by automatically shutting down your instances overnight for example.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ1aI3kp6PCqEVB-JBSlGaQ2vtvh8CxXrtQ4JxBbK1N2erG78Ha06nLS5hL1Q6JYngP9Og3Ep353xMNX47y1CUX7wiMprj-A3_aFCPJcwoaKZERJBIPRpn6mANczEJG0yAoCiBxVuV3Aby/s1600/OAC+start+stop+scheduler.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ1aI3kp6PCqEVB-JBSlGaQ2vtvh8CxXrtQ4JxBbK1N2erG78Ha06nLS5hL1Q6JYngP9Og3Ep353xMNX47y1CUX7wiMprj-A3_aFCPJcwoaKZERJBIPRpn6mANczEJG0yAoCiBxVuV3Aby/s200/OAC+start+stop+scheduler.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Thankfully there are now REST API calls available for Oracle Managed OAC instances which allow you to stop and start your instances. You can schedule these commands from a scripting tool of your choice to automate this process e.g. create a batch script and schedule the start/stop using the Windows scheduler.<br />
<br />
<h2>
OAC Start Instance REST API Call</h2>
The call to start the instance is a follows:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -v -i -X POST -u username:password -H</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"Content-Type:application/vnd.com.oracle.oracloud.provisioning.Service+json"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">-H "X-ID-TENANT-NAME:idcs-</span><span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: red;"><IDCS-Account-Name></span></b></span><span style="font-family: "courier new" , "courier" , monospace;">"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"https://psm-cacct-<b><span style="color: red;"><PSM-Account-Name></span></b>.console.oraclecloud.com/paas/api/v1.1/instancemgmt/idcs-<b><span style="color: red;"><IDCS-Account-Name></span></b>/services/AUTOANALYTICSINST/instances/<b><span style="color: red;"><Instance-Name></span></b>/start"</span><br />
<br />
<span style="font-family: inherit;"><b><span style="color: red;"><IDCS-Account-Name></span></b>: You can get this by logging into your Oracle MyServices homepage and clicking on the Oracle Identity Cloud Service icon:</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgihzaRNS7QyrKRsQnT0cF2FZ1JrcXnAxEws2YYRbXWOOujp0XlWe4Irepxxn3ThWn-1GB7v7iOH9K0Lr-5ZB7QtvLk8L88YXcVB4zLLUkA9Q2K-x1-Qhv9qv2ah-jswswdDn1wB4yTXUn4/s1600/IDCS+Icon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="644" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgihzaRNS7QyrKRsQnT0cF2FZ1JrcXnAxEws2YYRbXWOOujp0XlWe4Irepxxn3ThWn-1GB7v7iOH9K0Lr-5ZB7QtvLk8L88YXcVB4zLLUkA9Q2K-x1-Qhv9qv2ah-jswswdDn1wB4yTXUn4/s400/IDCS+Icon.png" width="400" /></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Your IDCS account name can be found in the URL of the new tab: </span><br />
https://<b>idcs-ef1234567fds1234567df123456</b>.identity.oraclecloud.com/ui/v1/adminconsole<br />
<br />
<br />
<b><span style="color: red;"><PSM-Account-Name></span></b>: You can get this by logging into your Oracle MyServices homepage and clicking on the Oracle Analytics Cloud icon<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXcgU0l9iVRq-JxOHe8xwn6Cs9OVhBJEEXgMiUL5nzlftj1hqvCcpCZB1pgBMvUaVACDoORJNd75nPMbjydKqgS1Nq6HiielGfA2gIvdXfNW_TrXNPr93B81WRqgH4mmLh6o5VsRVdG7xB/s1600/PSM+Icon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="644" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXcgU0l9iVRq-JxOHe8xwn6Cs9OVhBJEEXgMiUL5nzlftj1hqvCcpCZB1pgBMvUaVACDoORJNd75nPMbjydKqgS1Nq6HiielGfA2gIvdXfNW_TrXNPr93B81WRqgH4mmLh6o5VsRVdG7xB/s400/PSM+Icon.png" width="400" /></a></div>
<br />
Your PSM account name can be found in the URL of the new tab:<br />
<br />
https://<b>psm-cacct-ef123456gh123456hi456</b>.console.oraclecloud.com/psmui/faces/paasRunner.jspx?serviceType=AUTOANALYTICSINST<br />
<br />
<b><span style="color: red;"><Instance-Name></span></b>: You can find your instance names by clicking on the Oracle Analytics Cloud icon:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswH2mp2N_OpGFq6cnZGPeIYjPzGG62VFdHR9InHRAI9TJ2K57zOwWCQxGP_7ID7ONnZBVWozhcHy7Hdw2F74k97fnN3kRMQKLNGjT4cOxPPV1c_d5OvjBYSvYBehibyRf_JvzveHtFezI/s1600/OACS+Instance+Name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1023" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswH2mp2N_OpGFq6cnZGPeIYjPzGG62VFdHR9InHRAI9TJ2K57zOwWCQxGP_7ID7ONnZBVWozhcHy7Hdw2F74k97fnN3kRMQKLNGjT4cOxPPV1c_d5OvjBYSvYBehibyRf_JvzveHtFezI/s400/OACS+Instance+Name.png" width="400" /></a></div>
<br />
Notice in the above screenshot we have both a BI instance and an Essbase instance. These commands can be used to start/stop any of your OAC instances.<br />
<br />
So in this example the command would be:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -v -i -X POST -u username:password -H</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"Content-Type:application/vnd.com.oracle.oracloud.provisioning.Service+json"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">-H "X-ID-TENANT-NAME:</span><span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: red;">idcs-ef1234567fds1234567df123456</span></b>"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"https://<b><span style="color: red;">psm-cacct-ef123456gh123456hi456</span></b>.console.oraclecloud.com/paas/api/v1.1/instancemgmt/<span style="color: red;"><b>idcs-ef1234567fds1234567df123456</b></span>/services/AUTOANALYTICSINST/instances/<b><span style="color: red;">PrdOBI</span></b>/start"</span><br />
<br />
Once you have launched the command you will recieve this output if the command is successful:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0MbRAHc_DXQklB3mKPtELK-2cNOjCD3jpffHZfaYTTQkXa71mo3wfkXauykHqdbINeq09OoQaQ-qxU8XxnFKvWhDHliPP22NYd2SSbuHxQQtotUxM5R7nTe_au47RJ56z90rqz-tPVqj8/s1600/REST+Output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="68" data-original-width="652" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0MbRAHc_DXQklB3mKPtELK-2cNOjCD3jpffHZfaYTTQkXa71mo3wfkXauykHqdbINeq09OoQaQ-qxU8XxnFKvWhDHliPP22NYd2SSbuHxQQtotUxM5R7nTe_au47RJ56z90rqz-tPVqj8/s640/REST+Output.png" width="640" /></a></div>
<br />
You should also see the message in the console saying that the startup is in progress:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggerNwZKCn_BRuYpQOWqndswNHi1alp1jW81CJPVzcTj7YBM_1oIA6oq7_asLzyr7f3pLX6n1Pg3QHTOUAhK2JEfEhZlP7exjAMW2nfBFzfLtCxjWB7XIe8qGU24EVf-LguBMJybIlagzx/s1600/Console+Message.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="574" data-original-width="1041" height="352" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggerNwZKCn_BRuYpQOWqndswNHi1alp1jW81CJPVzcTj7YBM_1oIA6oq7_asLzyr7f3pLX6n1Pg3QHTOUAhK2JEfEhZlP7exjAMW2nfBFzfLtCxjWB7XIe8qGU24EVf-LguBMJybIlagzx/s640/Console+Message.png" width="640" /></a></div>
<br />
Everything gets logged in the OAC activity log as you would expect:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAUzSUJWXQhyphenhyphen1vqlQKB_IyZWYfSPOXk5cmyLgIaT9EAr2rhmiXbEKd5pn9huex8PAPi9wJxqrYnAb9-J8Z9L3jbsslA8yML_AFtLsmpOtKmz_7y_Y39DCiy11hFSeT9RiQv5yx-5C1JCLV/s1600/OAC+Activity+Log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="561" data-original-width="1049" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAUzSUJWXQhyphenhyphen1vqlQKB_IyZWYfSPOXk5cmyLgIaT9EAr2rhmiXbEKd5pn9huex8PAPi9wJxqrYnAb9-J8Z9L3jbsslA8yML_AFtLsmpOtKmz_7y_Y39DCiy11hFSeT9RiQv5yx-5C1JCLV/s640/OAC+Activity+Log.png" width="640" /></a></div>
<br />
<br />
<h2>
OAC Stop Instance REST API Call</h2>
The call to start the instance is a follows:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -v -i -X POST -u username:password -H</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"Content-Type:application/vnd.com.oracle.oracloud.provisioning.Service+json"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">-H "X-ID-TENANT-NAME:idcs-</span><span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: red;"><IDCS-Account-Name></span></b></span><span style="font-family: "courier new" , "courier" , monospace;">"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">"https://psm-cacct-<b><span style="color: red;"><PSM-Account-Name></span></b>.console.oraclecloud.com/paas/api/v1.1/instancemgmt/idcs-<b><span style="color: red;"><IDCS-Account-Name></span></b>/services/AUTOANALYTICSINST/instances/<b><span style="color: red;"><Instance-Name></span></b>/stop"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<br />
<h2>
<span style="font-family: inherit;">Spare Oracle Credits!</span></h2>
<span style="font-family: inherit;">You can now schedule your instances to stop when they are not being used saving you valuable Oracle Universal Credits which you could use to spin up other Oracle cloud services or add more OCPU during heavy usage periods!</span>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-25318079722607508052019-07-19T14:23:00.002+01:002019-12-04T18:14:02.413+00:00OAC Remote Data Gateway: Connecting to MS SQL Server<div class="separator" style="clear: both; text-align: left;">
The objective of this blog is to describe what the OAC Remote Data Gateway is, how it is configured and how to us it to connect an OAC instance to an on-premises MS SQL Server database (although the process will be the same connecting to any other on-premises data source).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_xyDzLNRIRYIHkEQI0h3ZesDUfZV0l4UN41Kh_csjwulgtM3hK2j8_tH9dduBrsgTY-w0fNgnUPhTZDla5ElbIkYjEVBN40ZC101jLiFJiCd1zkI8wGU696uVKQ-hvBk3P5JkLO6DHm5j/s1600/Data+Gateway.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="292" data-original-width="566" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_xyDzLNRIRYIHkEQI0h3ZesDUfZV0l4UN41Kh_csjwulgtM3hK2j8_tH9dduBrsgTY-w0fNgnUPhTZDla5ElbIkYjEVBN40ZC101jLiFJiCd1zkI8wGU696uVKQ-hvBk3P5JkLO6DHm5j/s1600/Data+Gateway.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The Oracle Analytics team have released a utility called the ‘Oracle Analytics Cloud Data Gateway’ which enables OAC to easily connect to your on-premises datasources with minimal fuss and WITHOUT HAVING TO OPEN UP FIREWALL PORTS!<br />
<br />
No more awkward conversations with your network admin. No more grovelling and bribing them to open up ports in their firewall.<br />
<br />
Current supported data sources are:<br />
<br />
<ul>
<li>Oracle database</li>
<li>SQL Server</li>
<li>DB2</li>
<li>Teradata</li>
</ul>
<br />
The Oracle A-Team have written a blog <a href="http://www.ateam-oracle.com/deploying-remote-data-gateway-in-oracle-analytics-cloud-for-data-visualization" target="_blank">here</a> on what it does and how to configure and there is also a useful youtube video <a href="https://www.youtube.com/watch?v=6ZChNn5PQpI" target="_blank">here</a>.<br />
<div>
<br /></div>
<h2>
What is the Oracle Analytics Remote Data Gateway?</h2>
<div>
The Data Gateway is a replacement for the Remote Data Connector which is the OAC utility to connect to your on-premises data sources. The RDC required you to deploy a webapp to your own install of Weblogic or Tomcat which can be a challenge to those not familiar with web app deployments. The RDC is still supported but it is depreciated and will no longer receive any updates. Installing Data Gateway is super-simple. It uses Jetty which is a self-contained Java HTTP web and servlet container. Your Data Gateway app is already deployed for you. All Data Gateway requires you to do is extract the zip file if on Windows or install if on Linux. I went for the Windows option.</div>
<div>
<br /></div>
<h2>
Why don’t I need to open up my firewall? What is this Voodoo?</h2>
<div>
The honest answer is I don’t know! It uses only one-way traffic (client to server) and I’m guessing this is how it works: The Data Gateway client will repeatedly poll your OAC instance over HTTPS on a random internal port which means the connection is initiated from the Data Gateway client to the OAC server (no inbound request from OAC so opening of firewall ports not required). If the OAC server requests data then the polling client will pick up the request and send the data up to OAC. I did a network trace and there are little TLS [Client Hello], [Server Hello] handshakes occurring every second so this ensures that the connection is kept alive.</div>
<div>
<br /></div>
<div>
<h2>
Installing Oracle Analytics Cloud Data Gateway on Windows</h2>
<div>
The install is nice and simple. Download the OAC Data Gateway 105.3 binaries for Windows from <a href="https://www.oracle.com/technetwork/middleware/oac/downloads/index.html" target="_blank">here </a> and just extract the zip file to any location. There isn’t actually any install required. Here is what the folder structure looks like:</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxEANrDEEjgH6Cs9p9aOsjWY9rkR1kQqmYiOBDKTy8WA1WDLfD8_qJExJiFTeT2kU-9IUrBPLVusL96avBu14eWqrMCBm47jil92KKi5_-vLuVtHVOix4A8VL7gpB-4mMBvHCjivR4kBQ/s1600/Oracle+Analytics+Data+Gateway+installation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="445" data-original-width="468" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxEANrDEEjgH6Cs9p9aOsjWY9rkR1kQqmYiOBDKTy8WA1WDLfD8_qJExJiFTeT2kU-9IUrBPLVusL96avBu14eWqrMCBm47jil92KKi5_-vLuVtHVOix4A8VL7gpB-4mMBvHCjivR4kBQ/s320/Oracle+Analytics+Data+Gateway+installation.jpg" width="320" /></a></div>
<div>
<br /></div>
<h2>
Oracle Analytics Cloud Data Gateway Configuration and Techy/Geeky Stuff</h2>
<div>
I always like to know what is going on in the background so I thought I'd have a sniff around the installation and configuration.</div>
<div>
<br /></div>
<div>
The configuration is simple, I won’t repeat what our friends in the A-Team have published so have a look <a href="http://www.ateam-oracle.com/deploying-remote-data-gateway-in-oracle-analytics-cloud-for-data-visualization" target="_blank">here</a> for details. Here are the steps:</div>
<div>
<br /></div>
<div>
<ul>
<li>Extract the Datagateway folder from the zip file you downloaded from Oracle tech network</li>
<li>Launch datagateway.exe</li>
<li>Enter your OAC URL</li>
<li>Generate the security key</li>
<li>Register a new Data Gateway agent in your cloud OAC instance. Navigate to Console -> Remote Data Connectivity screen</li>
</ul>
</div>
<div>
Here is the config screen of my Data Gateway configuration screen:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGy_2zHevVT-V3G1WgjOKthtJbZmcVPyd-aYiCBKrwKdVJhVPucbPZ9TbeYJTqUsSBUcbRnp2vNojz8km5nNDYVeo5PfpGhaOimEPC7G25FKdf_CzZ1LtyLi1Mr8uA6RZpJnNRIkusRgvm/s1600/Oracle+Analytics+Data+Gateway+configuration.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="735" data-original-width="892" height="524" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGy_2zHevVT-V3G1WgjOKthtJbZmcVPyd-aYiCBKrwKdVJhVPucbPZ9TbeYJTqUsSBUcbRnp2vNojz8km5nNDYVeo5PfpGhaOimEPC7G25FKdf_CzZ1LtyLi1Mr8uA6RZpJnNRIkusRgvm/s640/Oracle+Analytics+Data+Gateway+configuration.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<b>URL:</b> Here you enter the URL to your OAC instance.</div>
<div>
<b>Allowed Hosts:</b> Here you can add a whitelist of server names/IPs you will allow the Data Gateway to connect to. If you leave it empty Data Gateway can connect to any address in your data centre.</div>
<div>
<b>Allowed SQL Statements:</b> Enter the types of statement allowed to be executed on the target DB. Currently only select is supported.</div>
<div>
<br /></div>
<div>
This is what my Data Gateway agent looks like when it's registered in the OAC 'Remote Data Connectivity' screen:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS90pDo0zZJSqpR47MQ7Oi97L6v23GvEvqO2E8Pbekrzqk4qR2VWG_mlaGJt8wt1A1g9EewPa8oNtArNoP-TkoLDt2e_0x4xyYMAD3PP_LZ1Mnl4z8SK31f8p-kdr_N6wbNmkE4RaTcwIW/s1600/Oracle+Analytics+Data+Gateway+remote+data+connectivity.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="271" data-original-width="451" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS90pDo0zZJSqpR47MQ7Oi97L6v23GvEvqO2E8Pbekrzqk4qR2VWG_mlaGJt8wt1A1g9EewPa8oNtArNoP-TkoLDt2e_0x4xyYMAD3PP_LZ1Mnl4z8SK31f8p-kdr_N6wbNmkE4RaTcwIW/s320/Oracle+Analytics+Data+Gateway+remote+data+connectivity.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
Ok, now it's time to hack around the install.</div>
<div>
<br /></div>
<div>
When you click on save in the Data Gateway client window the configuration gets written to a properties file: \datagateway-Windows-105.3\obiee_rdc_agent.properties</div>
<div>
<br /></div>
<div>
Here is whats in the file:</div>
<div>
<br /></div>
<div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">#Wed Jul 17 12:17:47 GMT 2019<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">rdcURL=http\://localhost\:<b>8641</b>/datagateway/javads<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">hostWhitelist=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">enableLongPoll=1<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">poolThreadInterval=500<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">oacURL=https\://dmcbi-dmcgrp.analytics.ocp.oraclecloud.com<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="font-family: "courier new";">proxyURL</span></b><span style="font-family: "courier new";">=proxy-url<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">numberOfJobPollers=2<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">agentID=4b81ce5f-2e09-46f1-8451-d250ee999g1c<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">proxyUserName=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">numberOfJobsToFetch=100<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="font-family: "courier new";">proxyHost</span></b><span style="font-family: "courier new";">=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="font-family: "courier new";">proxyPassword</span></b><span style="font-family: "courier new";">=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">statementWhitelist=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "courier new";">numberOfJobExecutors=100<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="font-family: "courier new";">proxyPort</span></b><span style="font-family: "courier new";">=<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br />
<b>Pick a port, any port...</b></div>
</div>
<div>
<div>
Notice the random port number chosen by the configuration is 8641. If you change the config then the port number will change every time you click save. If you wanted you could fix the port number if you wanted by editing the .properties file. Also notice that you can add proxy server information in this file. </div>
<div>
<br /></div>
<div>
Out of curiosity I tried connecting to the URL using a browser and saw this information:</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicavPrOPXjgoSMvMuP94G17vVLTeDvrne3EoMG_f8tLL_8B3TAD29hvBjQRZHCjGeovIpuizY5YJOLgnIcZkqwDxbAOANz37y8qLFKENRlkLN3K0k86hdROv5ylWy-t-0WeeFRX8I4DZwQ/s1600/Oracle+Analytics+Data+Gateway+web+application.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="337" data-original-width="585" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicavPrOPXjgoSMvMuP94G17vVLTeDvrne3EoMG_f8tLL_8B3TAD29hvBjQRZHCjGeovIpuizY5YJOLgnIcZkqwDxbAOANz37y8qLFKENRlkLN3K0k86hdROv5ylWy-t-0WeeFRX8I4DZwQ/s400/Oracle+Analytics+Data+Gateway+web+application.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
Clicking on the config.jsp link opens up the config screen but over the web (just like you do on the Linux version):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLt9EkGV19_5D-vO4jFGneBl8Y2bE5ZaDxvE4_Srx4WliETmR3W36KkXcqTyLhcFBq4uqQYjmtWzRskEXsHNRonhBs_MXuaoLIJzoUHrq_Jqr-iK6WthtUcU1nuS8LbPUG3wC1cIwNvLgk/s1600/Oracle+Analytics+Data+Gateway+web+config.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="625" height="523" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLt9EkGV19_5D-vO4jFGneBl8Y2bE5ZaDxvE4_Srx4WliETmR3W36KkXcqTyLhcFBq4uqQYjmtWzRskEXsHNRonhBs_MXuaoLIJzoUHrq_Jqr-iK6WthtUcU1nuS8LbPUG3wC1cIwNvLgk/s640/Oracle+Analytics+Data+Gateway+web+config.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
There is also an interesting rdcagent page which I’m assuming will be used once Oracle get the RPD java datasource configuration working (more on this at the end of this blog)</div>
<div>
http://localhost:8641/datagateway/static/rdcagent.js</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRVDXPUcybjqQcOXUzlnbAsOZVc5HuS9APGAAmpRHBfd9idRLaBoc968RFjdztJFySJ7Wzi8sCDje-dvTYD4gzCCcrhjrK1cwZLp6qEp62XNjz9maMy1d4xC-AkLTnQQ5IPampsJi6Of9o/s1600/Oracle+Analytics+Data+Gateway+web+rdcagent.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="482" data-original-width="722" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRVDXPUcybjqQcOXUzlnbAsOZVc5HuS9APGAAmpRHBfd9idRLaBoc968RFjdztJFySJ7Wzi8sCDje-dvTYD4gzCCcrhjrK1cwZLp6qEp62XNjz9maMy1d4xC-AkLTnQQ5IPampsJi6Of9o/s640/Oracle+Analytics+Data+Gateway+web+rdcagent.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Unfortunately there isn’t a Windows service which means that Data Gateway will not start up again automatically after a reboot of the OS. To launch the Remote Data Gateway you need to execute the dataGateway.exe manually, this then starts up the Java process for the webapp. I’m hoping Oracle will provide instructions on how to enable Data Gateway as a Windows service. When you launch datagateway.exe you will see several instances of that process in Windows Task Mgr, you will also see the Jetty java.exe process running in the background.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc1Aj20erD15l_ABMU6MZzr_YnBdEZlndxRePBE3WT0Z5aLoV-6upvNjM_imkNo7nIkRO6WQu3FYwmWQ8mudcTkFnLfybi7wFhO-CTTXbhMUn-nCGIQXNPG3vXyM1rNMVH27i3RBjqmFqc/s1600/Oracle+Analytics+Data+Gateway+processes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="453" data-original-width="644" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc1Aj20erD15l_ABMU6MZzr_YnBdEZlndxRePBE3WT0Z5aLoV-6upvNjM_imkNo7nIkRO6WQu3FYwmWQ8mudcTkFnLfybi7wFhO-CTTXbhMUn-nCGIQXNPG3vXyM1rNMVH27i3RBjqmFqc/s400/Oracle+Analytics+Data+Gateway+processes.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
I've no idea why so many run in parallel.</div>
<div>
<br /></div>
<h2>
Creating a MS SQL Server Connection</h2>
<div>
The objective of this blog is to connect to an on-premises Microsoft SQL Server database. </div>
<div>
<br /></div>
<div>
Once you have configured the Data Gateway agent you can then create the connection to your on-premises MS SQL Server database.</div>
<div>
<br /></div>
<div>
In OAC navigate to Create -> Connection:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WLjDeOvQXM6l-FKWUSuVWEW_lujEKtf0OtVHpB_69lc1zJo2ZF0pazDelXKb5z33Qn9TfLmKw-g8IN4-d-qeHharcBpYCa3wHDNZiqeACsELuvk0ac8VMGxF921VSPhQRLRQZsGeVWCc/s1600/Oracle+Analytics+Data+Gateway+MS+SQL+Server+Connection.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="651" data-original-width="626" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WLjDeOvQXM6l-FKWUSuVWEW_lujEKtf0OtVHpB_69lc1zJo2ZF0pazDelXKb5z33Qn9TfLmKw-g8IN4-d-qeHharcBpYCa3wHDNZiqeACsELuvk0ac8VMGxF921VSPhQRLRQZsGeVWCc/s640/Oracle+Analytics+Data+Gateway+MS+SQL+Server+Connection.jpg" width="612" /></a></div>
<div>
Enter the on-premises database host you want to connect to, the userID and the database name.This is a big plus for Data Gateway compared to older RDC. With the RDC you had to add a jdbc connection to a config file on the RDC client. With Data Gateway all connections are managed from within your OAC instance.</div>
<div>
<br /></div>
<div>
Eagle-eyed Essbase users will also notice that this is connecting to a SQL version of the Essbase classic ‘The Beverage Company’ (TBC) database :)</div>
<div>
<br /></div>
<h2>
Creating an OAC Data Set</h2>
<div>
You can create an OAC data set graphically by selecting tables/columns manually. This is very simple and any end user (no SQL knowledge required) can define the data they want to analyse. The downside is that you can only select one table per data set if done graphically. You would need to create an individual data set for each table and then join them together by either using an OAC Dataflow or by adding all the data sets to a project and then joining the data sets together in the data diagram.</div>
<div>
<br /></div>
<div>
People that understand SQL statements can by-pass this and create only one data set using an SQL Statement using joins which combines the data from all tables. This will obviously be more efficient but requires more technical knowledge. OAC really does give you the best of both worlds, from basic end user to SQL jockey. I’ll show both ways.</div>
<div>
<br /></div>
<div>
For this example my TBC SQL database consists of a SALESFACT table and dimensional tables MARKET, PRODUCT, SCENARIO, SUPPLIER. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrEkyyMlBsIOMtWsgHKLVmA1uTyPuGY9-qoaguzc8D7lyhRH9pdz8RiNcjgUIzWJtGJ5cq_RoS00a1aKs1l4rEBo89uz2JKEepptG6bSHZ7orxslJp6U70Vmzw14R1h6r5cvq2zi2mwUt_/s1600/TBC+SCHEMA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="226" data-original-width="400" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrEkyyMlBsIOMtWsgHKLVmA1uTyPuGY9-qoaguzc8D7lyhRH9pdz8RiNcjgUIzWJtGJ5cq_RoS00a1aKs1l4rEBo89uz2JKEepptG6bSHZ7orxslJp6U70Vmzw14R1h6r5cvq2zi2mwUt_/s320/TBC+SCHEMA.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
<h2>
Creating a Data Set Graphically</h2>
<div>
Okay, this is the easy way to create your data set without writing any SQL code. The downside is that you need to create one data set per table. You can write a SQL statement to join all your tables into one data set which is a lot more efficient but might not be simple for non-technical users. OAC gives us the option to do both. Scroll further down to see the SQL statement example.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
You can create a data set by selecting the schema from your MS SQL Connection:</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiylIe9_OkOQoKGY8VMP_DV-e01KSLgJKiwpPCBRjqhqABm1Fq3JyuMMY7okrV2CWJr5gjcMYXqutKn2UJHGZEkXtymdj7pBtSWHtNBYQ65Yu5UwQPjG5A3g7ePA65r3tyeY4P3Yst43RaZ/s1600/Oracle+Analytics+Data+Gateway+CREATE+dataset.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="254" data-original-width="670" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiylIe9_OkOQoKGY8VMP_DV-e01KSLgJKiwpPCBRjqhqABm1Fq3JyuMMY7okrV2CWJr5gjcMYXqutKn2UJHGZEkXtymdj7pBtSWHtNBYQ65Yu5UwQPjG5A3g7ePA65r3tyeY4P3Yst43RaZ/s400/Oracle+Analytics+Data+Gateway+CREATE+dataset.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
Data Gateway will then connect directly to your on-premises database and prompt you to select which schema you want to connect to, dbo in our case. Notice the 'select columns' and 'Enter SQL' radio buttons. Choose 'select columns' for the graphical mode:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Fqsnv8LIIn3N4geNosknFPaKFENP28CnMafEhjhS7JAdPk9YQsQiOqkSnD3u7dcbJZxIvg5aP7LbZYgDgU5VLxU5R88FFg1D7uVRgzM9k7pQeHFmskk2F5ZIflWQEICT0mwF_Sj1aCKc/s1600/Oracle+Analytics+Data+Gateway+add+dataset.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="503" data-original-width="902" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Fqsnv8LIIn3N4geNosknFPaKFENP28CnMafEhjhS7JAdPk9YQsQiOqkSnD3u7dcbJZxIvg5aP7LbZYgDgU5VLxU5R88FFg1D7uVRgzM9k7pQeHFmskk2F5ZIflWQEICT0mwF_Sj1aCKc/s640/Oracle+Analytics+Data+Gateway+add+dataset.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
Once you have selected your schema you can select which table and columns you want to add to your data set.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVjlVny6eBPkswdwBlhx3eSsX6ZKAv4fFCzwVkzVOePGnPTAPgJ-gupcSle6Nz9Xguougfahlhmx7ULiB2BI2KpT9Cs8Bm6rTVXvXU-rC0V12ql0kkZbwVfJl9x5Gw4HaG5AtJaYTUJu2x/s1600/Oracle+Analytics+Data+Gateway+select+table.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="721" data-original-width="940" height="489" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVjlVny6eBPkswdwBlhx3eSsX6ZKAv4fFCzwVkzVOePGnPTAPgJ-gupcSle6Nz9Xguougfahlhmx7ULiB2BI2KpT9Cs8Bm6rTVXvXU-rC0V12ql0kkZbwVfJl9x5Gw4HaG5AtJaYTUJu2x/s640/Oracle+Analytics+Data+Gateway+select+table.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
Here I have created a data set called TBC_MARKET (it just says MARKET in the screenshot) consisting of the STATEID column and the STATE column. When you save your data set OAC will populate that data set with the data directly from your on-premises MS SQL source.</div>
<div>
<br /></div>
<div>
I then go through the same process for all my other tables, one data set per table and end up with 5 data sets:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpD_3QPVVXCjVxlSvart8YoDCQgiMkWMe0Sx6gGsx2tID6suensgC_ux8k_17DX_onvuKbUoj3qBSQMhIW-jCe8a4JUZ6MB8knMEiJ-tX-v9DYWKtWvKMx_i3TuQa9_iRs4r8dN-NCoiuG/s1600/Oracle+Analytics+Data+Gateway+all+data+sets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="911" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpD_3QPVVXCjVxlSvart8YoDCQgiMkWMe0Sx6gGsx2tID6suensgC_ux8k_17DX_onvuKbUoj3qBSQMhIW-jCe8a4JUZ6MB8knMEiJ-tX-v9DYWKtWvKMx_i3TuQa9_iRs4r8dN-NCoiuG/s640/Oracle+Analytics+Data+Gateway+all+data+sets.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
My TBC_SALESFACT data set looks like this:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw3dh4F6dgD7_HkQnX4pGe4-qjk3Hm36GyPrj1W2rpE21pskyN8tCqUfgwEor3PJ6qRTKi9N3ypgjdz1xAJnAaXcWOmN2SgnHWwxE9XR4_5iPYaKZFGoOuSPm7Rhb-SIGsAXEXUJyIuUpG/s1600/SALESFACT+dataset.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="412" data-original-width="1061" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw3dh4F6dgD7_HkQnX4pGe4-qjk3Hm36GyPrj1W2rpE21pskyN8tCqUfgwEor3PJ6qRTKi9N3ypgjdz1xAJnAaXcWOmN2SgnHWwxE9XR4_5iPYaKZFGoOuSPm7Rhb-SIGsAXEXUJyIuUpG/s640/SALESFACT+dataset.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
My dimension columns consist of foreign keys so any reports will be meaningless. I need to join these keys with the other dimension tables to give me some meaningful results. </div>
<div>
<br /></div>
<div>
I can do this two ways, using a data flow to create a final data set or by adding ALL the data sets to a project and then joining the datas sets together in the data diagram.</div>
<div>
<br /></div>
<div>
Joining the TBC data sets in the data diagram of a OAC Project:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinPad7hKIHvGZrAgHku7q7MSzl-4r2bsNsDFJD32R6rfe4BUvlHIDAdtsc4BMK28s5MQELU9Pi8eLlSAKvdJskbQb00xhzPto3t5wHaXIImVCY4X9AGXHtQT3rT-07xiwfujJfct6XE1-t/s1600/Oracle+Analytics+Data+Gateway+Data+Diagram.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="636" data-original-width="915" height="443" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinPad7hKIHvGZrAgHku7q7MSzl-4r2bsNsDFJD32R6rfe4BUvlHIDAdtsc4BMK28s5MQELU9Pi8eLlSAKvdJskbQb00xhzPto3t5wHaXIImVCY4X9AGXHtQT3rT-07xiwfujJfct6XE1-t/s640/Oracle+Analytics+Data+Gateway+Data+Diagram.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Alternatively I can join the individual TBC_* data sets using a OAC data flow and saving to a new TBC_FINAL data set:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLLx2DkU83jyeq1lSE3c_IHsDiUU3J6TepNZAFG6rP13YEpn_U6daAOj9fXujh514MvLhNRV1EWVtYzjj7jIhy9issAl3nwS1vWw96s9PLGkWGZiU7ETNWq_O0b9NaoCXbkGn_tRzNyKSr/s1600/Oracle+Analytics+Data+Gateway+MS+SQL+Server+data+flow.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="839" data-original-width="1415" height="379" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLLx2DkU83jyeq1lSE3c_IHsDiUU3J6TepNZAFG6rP13YEpn_U6daAOj9fXujh514MvLhNRV1EWVtYzjj7jIhy9issAl3nwS1vWw96s9PLGkWGZiU7ETNWq_O0b9NaoCXbkGn_tRzNyKSr/s640/Oracle+Analytics+Data+Gateway+MS+SQL+Server+data+flow.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
Both result in being able to visualize my data using meaningful member names:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqU6ZJKjIjkZGsHCzCFozGYtGKoZPg79hEWzp-K8epAnbbHHmskBSzDwUb9rokmsXhSIshdz92IwafulycKbut0O8xbL4eQoNkOYlFM2M_6pRyQIsGaKU1LhKOyAaKjM4IGtf2dov4VXg/s1600/Oracle+Analytics+Data+Gateway+Visualize0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="815" data-original-width="1469" height="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqU6ZJKjIjkZGsHCzCFozGYtGKoZPg79hEWzp-K8epAnbbHHmskBSzDwUb9rokmsXhSIshdz92IwafulycKbut0O8xbL4eQoNkOYlFM2M_6pRyQIsGaKU1LhKOyAaKjM4IGtf2dov4VXg/s640/Oracle+Analytics+Data+Gateway+Visualize0.jpg" width="640" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
<h2>
Creating a Data Set using SQL</h2>
<div>
This is a lot more efficient because we can control the exact SQL we invoke to the on-premises SQL server and it will join all of the tables into one data set instead of having to join several data sets via a data flow or via the data diagram.</div>
<div>
<br /></div>
<div>
This is the SQL statement containing my joins which defines the data I want to bring into OAC:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">select TBC.DBO.MARKET.STATE, TBC.DBO.PRODUCT.SKU_ALIAS, TBC.DBO.SCENARIO.SCENARIO, TBC.DBO.SUPPLIER.SUPPLIER_ALIAS, TBC.DBO.SALESFACT.TRANSDATE, TBC.DBO.SALESFACT.SALES</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">FROM TBC.DBO.SALESFACT</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">INNER JOIN TBC.dbo.MARKET ON TBC.dbo.SALESFACT.STATEID=TBC.dbo.MARKET.STATEID</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">INNER JOIN TBC.dbo.PRODUCT ON TBC.dbo.SALESFACT.PRODUCTID=TBC.dbo.PRODUCT.PRODUCTID</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">INNER JOIN TBC.dbo.SCENARIO ON TBC.dbo.SALESFACT.SCENARIOID=TBC.dbo.SCENARIO.SCENARIOID</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">INNER JOIN TBC.dbo.SUPPLIER ON TBC.dbo.SALESFACT.SCENARIOID=TBC.dbo.SCENARIO.SCENARIOID</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
We create a new data set just like we did in the previous section but we select the 'Enter SQL' radio button to enter our SQL:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEmPTqsZT2jFCaTBCgp4EdUr16YTQMbq62WmXo-OqABTo3V3CwvWrfZoZadqQhOSX0UR2FOAtZ4gsANX_J8YIsBdV4icJlXyMiHAV3vVtBrf4G5B8lKkPYJZezyBlRquWnOefDell7BbFw/s1600/Oracle+Analytics+Data+Gateway+Full+SQL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="629" data-original-width="1146" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEmPTqsZT2jFCaTBCgp4EdUr16YTQMbq62WmXo-OqABTo3V3CwvWrfZoZadqQhOSX0UR2FOAtZ4gsANX_J8YIsBdV4icJlXyMiHAV3vVtBrf4G5B8lKkPYJZezyBlRquWnOefDell7BbFw/s640/Oracle+Analytics+Data+Gateway+Full+SQL.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
I can now create a project on that one data set and visualize my data. Nice and easy and FAST!</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZuRgoe4wflQO5VIH5EyuqVlwnTsQDbBcbzQjkL_SGg1piBV__SkoHnlZlidEtGBO8fRXEdz5WJ_By1aTMXeHdjZOmDT0P16vMOdMtYDFC_Tj4XVXGbbkGjeTCg-ySPUFXpmCUj7P51Bq/s1600/Oracle+Analytics+Data+Gateway+Visualize.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="615" data-original-width="923" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZuRgoe4wflQO5VIH5EyuqVlwnTsQDbBcbzQjkL_SGg1piBV__SkoHnlZlidEtGBO8fRXEdz5WJ_By1aTMXeHdjZOmDT0P16vMOdMtYDFC_Tj4XVXGbbkGjeTCg-ySPUFXpmCUj7P51Bq/s640/Oracle+Analytics+Data+Gateway+Visualize.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
Cached or Live Data?</h2>
<div>
There is an option in each direct database connected data set to either cache the data or have a 'live' connection. I tested the Live connection, added a new row to my on-premises database and the new row appeared immediately in my OAC project. It does work! Caveats on caching: there is a limit to the size of data held in the cache and you can't modify that setting yet in the OAC console. Also, I don’t know how often the cache is refreshed. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPAqt7JWat_2EPGDyKRpqAD_qLpjnPKNE_5R_xof8MqAuw0McVuop7mUoV04aBybS5uh9USCYgpveWoBGO3pebQQ3Defn_SzPxdamtx6csidCzv_DjDJA8xUkXjm5axLUqS47GTd4euXmW/s1600/Oracle+Analytics+Data+Gateway+live+or+cached.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="515" data-original-width="695" height="473" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPAqt7JWat_2EPGDyKRpqAD_qLpjnPKNE_5R_xof8MqAuw0McVuop7mUoV04aBybS5uh9USCYgpveWoBGO3pebQQ3Defn_SzPxdamtx6csidCzv_DjDJA8xUkXjm5axLUqS47GTd4euXmW/s640/Oracle+Analytics+Data+Gateway+live+or+cached.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
For large data sets where live data isn’t a requirement I would probably create a data flow and schedule to run overnight to a new target data set. The data wouldn’t be live but it would ensure fast data retrieval times.</div>
<div>
<br /></div>
<h2>
Adding your Data Gateway Connection to the RDP</h2>
<div>
<span style="background-color: yellow;">Edit 29/11/19: Ignore this section, with OAC update 105.4 you can now easily connect to Data Gateway using your RPD! Go <a href="https://hyperion-epm-bi.blogspot.com/2019/12/oac-remote-data-gateway-part-2-rpd.html" target="_blank">here </a>to read all about it.</span><br />
<br />
Ok, I admit defeat here. I don't think there is a way to add the current Windows version of Data Gateway as a java datasource to the RPD. This works in the older Remote Data Connector. The Data Gateway config documentation seems to have been copied from the RDC docs.<br />
<br />
In the Admin Client you are meant to go to File -> Load Java Datasources and connect to your Data Gateway. This internally connects to http://hostname:port/obiee/javads . There isn't a 'obiee' webapp present on the Windows version of Data Gateway so this must be a work in progress. Fingers crossed it should be added soon.<br />
<br />
If I'm wrong or I find out more I'll update the blog.<br />
<h2>
Conclusions</h2>
Here is a list of positives and negatives of the current release of Data Gateway compared to the older Remote Data Connector, given the pace of new features I'm sure any negatives will soon be fixed:<br />
<br />
<b>Positives:</b><br />
<ul>
<li>Very simple to install/configure</li>
<li>No need to open up any ports in your local firewall</li>
<li>All database connections are created in OAC, no need to touch the Data Gateway config</li>
</ul>
<br />
<b>Negatives:</b><br />
<ul>
<li>Can't add a connection in the RPD yet <span style="background-color: yellow;">You can in 105.4! Look <a href="https://hyperion-epm-bi.blogspot.com/2019/12/oac-remote-data-gateway-part-2-rpd.html" target="_blank">here</a>.</span></li>
<li>No Windows service yet</li>
</ul>
Cheers, happy on-premises visualizing!</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com3tag:blogger.com,1999:blog-7033364975447167607.post-34853510354369629482019-03-26T10:02:00.000+00:002019-07-24T17:12:36.687+01:00OAC - Essbase Streaming Dataload from SQL Server Database<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmmLFXXzsEH3_h5wOm1gvdtkeQwTyPHW-D-4vbGm9zbJAqhlS0NBe6EKEi6uKB-cqPU218IQ8soFtAo8vpdfdqLpLPzmtUpfORxRlI7F6O_lI2fl45VlSIsTabuq4TYxNW5XORi_Ip25CB/s1600/Essbase+cloud+logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="154" data-original-width="445" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmmLFXXzsEH3_h5wOm1gvdtkeQwTyPHW-D-4vbGm9zbJAqhlS0NBe6EKEi6uKB-cqPU218IQ8soFtAo8vpdfdqLpLPzmtUpfORxRlI7F6O_lI2fl45VlSIsTabuq4TYxNW5XORi_Ip25CB/s320/Essbase+cloud+logo.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Here's a short blog on streaming to the OAC Essbase cloud from a MS SQL Server source. The team at <a href="https://www.essbaselabs.com/2018/07/why-to-open-ports-when-you-can-stream.html">essbaselabs</a> have written a nice blog on streaming Essbase data loads and the Oracle docs are <a href="https://docs.oracle.com/en/cloud/paas/analytics-cloud/essug/build-dimensions-and-load-data-streaming-remote-database.html">here</a>.<br />
<br />
<ul>
<li>Download your MS SQL driver from <a href="https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017">here</a></li>
<li>Save it to your client machine and add the path to the jar file to your EXTERNAL_CLASSPATH in the esscs.bat file:</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRIaP763pSCepr7rjNiauMLm6BXz4sZ1uPlnkorwZ9dKySzYFt1xcRWdh0Bn07Hwr77_bbO_30j2oGat0qXX_8BhsjgjHEt6Y-E7JHZIUZXOf16rXdLzFilksnmj6yfuDiUgCvBxdAaNcv/s1600/essbase+esscs+External+Classpath.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="213" data-original-width="742" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRIaP763pSCepr7rjNiauMLm6BXz4sZ1uPlnkorwZ9dKySzYFt1xcRWdh0Bn07Hwr77_bbO_30j2oGat0qXX_8BhsjgjHEt6Y-E7JHZIUZXOf16rXdLzFilksnmj6yfuDiUgCvBxdAaNcv/s640/essbase+esscs+External+Classpath.png" width="640" /></a><br />
<ul>
<li>Using essCLI create the local connection to your on-prem data source:</li>
</ul>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace;">esscs createLocalConnection -N MSSQL_EPMDB -cs jdbc:sqlserver://epmdb:1433 -u epmsql -D com.microsoft.sqlserver.jdbc.SQLServerDriver</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrd71ls0I6nSzBZECeXcW9QKQ3wdIqraSwDZOiDDO9w5pFbynjgFH5fFvfOfVeeQQKXkQmr9e7imwFBDwaHGQ2KoYWH1BlsKicmBAz-MkAdSzirJXrxXqs1K01p0ym8F3Mkf3FMG4s-yWU/s1600/essbase+create+local+connection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="91" data-original-width="655" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrd71ls0I6nSzBZECeXcW9QKQ3wdIqraSwDZOiDDO9w5pFbynjgFH5fFvfOfVeeQQKXkQmr9e7imwFBDwaHGQ2KoYWH1BlsKicmBAz-MkAdSzirJXrxXqs1K01p0ym8F3Mkf3FMG4s-yWU/s640/essbase+create+local+connection.png" width="640" /></a></div>
<br />
<ul>
<li>Run the dataload command. Here I'm passing the SQL query into the command but you can also store the query in your Essbase rules file:</li>
</ul>
<span style="font-family: "courier new" , "courier" , monospace;">esscs dataload -application Sample -db Basic -rule SQLData.rul -stream -connection MSSQL_EPMDB -query "Select * from Sales"</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifFakmgRoGH7ksinCyPo2uBFMR-in3S07O80nLETKyZkSvuEZEaAgGe1BDd4SOStEI-Kbd4iwrhNELbK7dCE6UZdIJIp3oJaWWdTqz42r1QCuTFoBh1gX6DchYkPfZyXamUPcsgZrXn_8J/s1600/essbase+dataload+error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="91" data-original-width="654" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifFakmgRoGH7ksinCyPo2uBFMR-in3S07O80nLETKyZkSvuEZEaAgGe1BDd4SOStEI-Kbd4iwrhNELbK7dCE6UZdIJIp3oJaWWdTqz42r1QCuTFoBh1gX6DchYkPfZyXamUPcsgZrXn_8J/s640/essbase+dataload+error.png" width="640" /></a></div>
<br />
<br />
Error handling is good and logged in the essbase-cli.log file:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOvyf8A7iJTlXJUhEJaxPGyvG7PLytRF0mcdAJP5eR78d_wdylNBVe3YxBo4uM78rOTNSQd7baS2OOSXE69oRliEdlwwEj5hj7-UgV7CQMFzQ-CrLTvOHDT76stQ8o0i01dzwWDCA9suye/s1600/essbase-cli.log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="110" data-original-width="358" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOvyf8A7iJTlXJUhEJaxPGyvG7PLytRF0mcdAJP5eR78d_wdylNBVe3YxBo4uM78rOTNSQd7baS2OOSXE69oRliEdlwwEj5hj7-UgV7CQMFzQ-CrLTvOHDT76stQ8o0i01dzwWDCA9suye/s320/essbase-cli.log.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFx3TK4aqDQeFkpdrk3yucH9K1JzcY9XSRXXsPGnWwXG0mKEVA1VAnseab8bCklEzdE4_GbWQnumk0YyULZT9trj9jFVlZvRD1KvLMLbIy-Gf0YXTzDbCl0flIHousnuiv52HVhvbaAh3C/s1600/esscli+error+message.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="897" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFx3TK4aqDQeFkpdrk3yucH9K1JzcY9XSRXXsPGnWwXG0mKEVA1VAnseab8bCklEzdE4_GbWQnumk0YyULZT9trj9jFVlZvRD1KvLMLbIy-Gf0YXTzDbCl0flIHousnuiv52HVhvbaAh3C/s640/esscli+error+message.png" width="640" /></a></div>
<br />
I then correct my SQL statement and the query is successful:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjybqh3VImSHzOVeH7T3cUo7MweLkCKvpdYtplJd8zewyjXqliixehoV-FYdVNh2JbD1GMPmFxILomtuI4OPTFjgPefoeWSztqqSg1hkMjeJkORqAKTu5dD-DLeLiSy2MAVCy1-_FlLdU/s1600/esscs+successful+load.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="137" data-original-width="650" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjybqh3VImSHzOVeH7T3cUo7MweLkCKvpdYtplJd8zewyjXqliixehoV-FYdVNh2JbD1GMPmFxILomtuI4OPTFjgPefoeWSztqqSg1hkMjeJkORqAKTu5dD-DLeLiSy2MAVCy1-_FlLdU/s640/esscs+successful+load.png" width="640" /></a></div>
<br />
For rules related errors a familiar dataload.err file is created in your working directory:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKKNy0iTQgcOf5Huk8MOCE-YY5wE8GqXj3ITlPjdM4Sq1RXQWtngJFibRaLY3OjDOLGm8r52vgikqJzY42Qtvh2fL3zFiMq8GgKk-pUjg-sWbkVmbIkp_mvLMdW6tyYQCuQd-eM-PXIBi/s1600/dataload+err.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="217" data-original-width="408" height="170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKKNy0iTQgcOf5Huk8MOCE-YY5wE8GqXj3ITlPjdM4Sq1RXQWtngJFibRaLY3OjDOLGm8r52vgikqJzY42Qtvh2fL3zFiMq8GgKk-pUjg-sWbkVmbIkp_mvLMdW6tyYQCuQd-eM-PXIBi/s320/dataload+err.png" width="320" /></a></div>
<br />
Correct the rules file and the load is successful:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx25ZvWyNe3mr7V3bYNem42kjQm4B56QUnk9f1CZj0RnvJwuWKmKLEpmNx6BdyrQJtdZ8T1WLuDDueSA-AoJwu80KeRU4f3IN5GwspFPseRYwx2I3mOCo4oG-J4Iego1PBy9ZAqVrK8J0J/s1600/esscs+data+load.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="109" data-original-width="660" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx25ZvWyNe3mr7V3bYNem42kjQm4B56QUnk9f1CZj0RnvJwuWKmKLEpmNx6BdyrQJtdZ8T1WLuDDueSA-AoJwu80KeRU4f3IN5GwspFPseRYwx2I3mOCo4oG-J4Iego1PBy9ZAqVrK8J0J/s640/esscs+data+load.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The other nice feature is that essCLI will compress the data whilst it flies over the interwebs to the Essbase cloud. This means that it reduces any latency which could be associated with loading data from an on-prem source to the cloud.<br />
<br />
So there we have it, a very simple way of loading data from your on-prem SQL source to your Essbase cloud target and no messing about with networks and firewalls etc.<br />
<br />
<br />
<br />Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-17197301014563974472019-03-18T17:29:00.003+00:002019-07-24T17:12:51.086+01:00OAC - Scripted Backups on Autonomous<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihyphenhyphenlEl6snlwandd7A2bj9NL3WyeNtBwDmHHI39hYCT7a524rmHpIw-Es9VTlFuvv4dAMR5XLjI1iE3QxdMTvjoiI5xThVjgH3n5YQU6uxeJEXneRla0LCZrsTyY9c3zXROX3ugB8qnfJTe/s1600/Oracle+Analytics+Backup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="403" data-original-width="581" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihyphenhyphenlEl6snlwandd7A2bj9NL3WyeNtBwDmHHI39hYCT7a524rmHpIw-Es9VTlFuvv4dAMR5XLjI1iE3QxdMTvjoiI5xThVjgH3n5YQU6uxeJEXneRla0LCZrsTyY9c3zXROX3ugB8qnfJTe/s320/Oracle+Analytics+Backup.jpg" width="320" /></a></div>
<br />
So, you’ve got Oracle Autonomous Analytics Cloud and you want to schedule a backup of your BI and Essbase applications.<br />
<br />
Essbase has the nice esscs/esscli command line REST API wrapper to which will perform an LCM backup for you and you’ve got the MaxL client which you can use to perform data exports. I’ll show an example of this further down this blog<br />
<br />
However, at the time of writing this blog there aren’t any documented REST API commands to perform an automated BI BAR extract (these are in the pipeline). This means there isn’t an obvious way to schedule your own non-Oracle backup.<br />
<br />
<h2>
BI Admin Tool and Catalog Manager to the Rescue!</h2>
Fortunately, you can use the command line to launch BI Admin Tool and Catalog Manager commands. There’s not much documentation so I’ve blogged how you use these tools to connect to your Oracle Analytics Cloud instance.<br />
<br />
<h2>
OAC RPD Backup</h2>
Here we will download and backup our RPD using the datamodel.cmd tool which comes with BI Client. There’s some documentation on the utility <a href="https://docs.oracle.com/middleware/12211/biee/BIEMG/GUID-5EE38130-BF70-4BD5-85AB-5B433449CF36.htm#dwnld_rep_cmd_orient" target="_blank">here</a>.<br />
<br />
There isn’t any info in the link about above on how to use this with OAC Autonomous. However, if you’re a curious bugger like me you may have noticed that the Admin Tool logs seem to record command line versions of your UI actions!<br />
<br />
You can find the log here: <BI Client Install> \domains\bi\servers\obis1\logs\Administrator_NQSAdminTool.log<br />
<br />
I found this string in the log:<br />
<span style="font-family: "courier new" , "courier" , monospace;">E:\OACS\BI_Client\bi\bitools\bin\\..\..\bitools\bin\<b>datamodel.cmd downloadrpd -O E:\OACS\BI_Client\bi\bifoundation\server\85FA.tmp -W ******* -U <USERNAME> -P ******* -Q E:\OACS\BI_Client\bi\bifoundation\server\85FB.tmp -SI bootstrap -S <tenant_name>.analytics.ocp.oraclecloud.com -N 443 -SSL -TS E:\OACS\BI_Client\oracle_common\jdk\jre\lib\Security\cacerts -TSP ******* -Y</b></span><br />
<br />
Cool! This is what the command looks like in the command line when connecting to Autonomous Analytics:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-6ct2KuLXMuTSyhpccqJn7NvD1U3ajmHM5FzFc9JDyh3xo1wEBobM-r5kWUo47M5zHm3fPxXmOAa39j2fgecHuilcPOR8F9cXpzc9ob7daN_8K-KYFClFVvNfLB-nE0nE3snww-ruNcj/s1600/OAC+Backup+RPD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="183" data-original-width="673" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-6ct2KuLXMuTSyhpccqJn7NvD1U3ajmHM5FzFc9JDyh3xo1wEBobM-r5kWUo47M5zHm3fPxXmOAa39j2fgecHuilcPOR8F9cXpzc9ob7daN_8K-KYFClFVvNfLB-nE0nE3snww-ruNcj/s640/OAC+Backup+RPD.jpg" width="640" /></a></div>
<br />
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><BI Client Install>\bi\bitools\bin\datamodel.cmd downloadrpd -O liverpd.rpd -W <b>RPD_PWD</b> -U <b><USERNAME></b> -P <b><PASSWORD></b> -SI bootstrap -S <b><BI_HOST></b> -N 443 -SSL -TS <b>E:\OACS\BI_Client\oracle_common\jdk\jre\lib\Security\cacerts</b> -TSP <b><TRUST STORE PASSWORD></b> -Y</span><br />
<br />
The BI_HOST will be something like myinstance-tenantname.analytics.ocp.oraclecloud.com<br />
The OAC RPD file is called liverpd.rpd.<br />
<br />
This will download liverpd.rpd into your current working directory. You can then use your scripting tool of choice to rename/timestamp etc. Nice and simple!<br />
<br />
<h2>
OAC Catalog Backup</h2>
Luckily since OAC Developer Client 19.1.1 the BI Catalog Manager is supported in OAC. You can also use the Catalog Manager in the command line. This will enable us to download an archive file of any folders/objects available to us in BI. I had some issues getting the syntax correct so again I hope this will help some people with their scripts.<br />
<br />
There is some info on the command line <a href="https://docs.oracle.com/middleware/bi12214/biee/BIESG/GUID-FF29B794-97F5-4975-A924-ED40319B9150.htm#BIESG3834" target="_blank">here </a>. There are a few blog posts out there but nothing specific to OAC.<br />
<br />
To run catalog manager from the command line you run the runcat.cmd/sh command:<br />
<br />
<BI Client Install>\bi\bitools\bin\runcat.cmd<br />
<br />
To view the help run:<br />
<span style="font-family: "courier new" , "courier" , monospace;">runcat.cmd -help</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMcJuSHx8NlcUI0GeRkfS7HnwQv8S2hetcqONZwxiLlbNOkNfqR0hkVlpKKF_lp5ALTTqUWYZzh5gJ9PIgYivteE0RLuDvsGCm_XnGQTJQqBAeDtlESTJ6cjZ92OX2lBAh5j7KNXmn0SR1/s1600/catalog+manager+command+line.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="709" data-original-width="664" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMcJuSHx8NlcUI0GeRkfS7HnwQv8S2hetcqONZwxiLlbNOkNfqR0hkVlpKKF_lp5ALTTqUWYZzh5gJ9PIgYivteE0RLuDvsGCm_XnGQTJQqBAeDtlESTJ6cjZ92OX2lBAh5j7KNXmn0SR1/s640/catalog+manager+command+line.jpg" width="598" /></a></div>
<br />
<br />
To view help on a specific command run:<br />
<span style="font-family: "courier new" , "courier" , monospace;">runcat.cmd -cmd <command> -help</span><br />
<br />
To archive your catalog run the archive command:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9YBzIVQFGtylwpZWl6H5K57I6P_jGZ9ajV34vJL6qN9-eDaY3yQYFScbjyAHhD6BvGnVHRJTyplYk2FFLaSxsFieQuGCYc9xYEUucAC1EcrnDn98Eft0Fpw2Hf8eD_b6HaH-1PpDsBa3g/s1600/OAC+Catalog+Archive+Command+Line.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="93" data-original-width="671" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9YBzIVQFGtylwpZWl6H5K57I6P_jGZ9ajV34vJL6qN9-eDaY3yQYFScbjyAHhD6BvGnVHRJTyplYk2FFLaSxsFieQuGCYc9xYEUucAC1EcrnDn98Eft0Fpw2Hf8eD_b6HaH-1PpDsBa3g/s640/OAC+Catalog+Archive+Command+Line.jpg" width="640" /></a></div>
<br />
<span style="font-family: "courier new" , "courier" , monospace;">runcat.sh -cmd archive -online <b>https://myinstance-tenant.analytics.ocp.oraclecloud.com</b>/analytics-ws/saw.dll? -credentials <b>credentials.txt</b> -folder <b>/shared</b> -forceOutputFile <b>E:\OACS\Backup\Shared_Archive</b></span><br />
<br />
<br />
The credentials.txt file is where you store your OACS username and password in the following format:<br />
login=guillaume.slee<br />
pwd=myPassword<br />
<br />
It would be nice if you could encrypt this but I don’t think you can.<br />
<br />
The example above will archive my entire BI /shared folder and download it to my client machine in a file called E:\OACS\Backup\Shared_Archive.<br />
<br />
<br />
<h2>
Essbase LCM Backup</h2>
Thankfully the Essbase backup is a very simple process. Use the Essbase Client tool to perform an LCM backup of the Essbase application and download to your client machine. The documentation can be found <a href="https://docs.oracle.com/en/cloud/paas/analytics-cloud/essug/lcmexport-back-cube-files.html" target="_blank">here </a>.<br />
<br />
Example:<br />
<span style="font-family: "courier new" , "courier" , monospace;">esscs lcmExport -v -a Sample -z Sample.zip -ld E:\Essbase\Backup</span><br />
<br />
The command will create a zip file containing LCM extracts of all the Essbase databases associated with the application.<br />
Essbase will perform an All Data export of each database across 10 threads.<br />
<br />
If your database is large you have the option to use the -skipdata flag to exclude data in the LCM backup. You could then use the MaxL client to perform a smaller level zero export.<br />
<br />Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-7038787265963086932019-03-08T18:13:00.001+00:002019-09-11T15:26:08.697+01:00OAC - Bulk Importing Users & Groups via IDCS REST API<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
In my previous post <a href="http://hyperion-epm-bi.blogspot.com/2019/03/oac-bulk-importing-users-groups-via.html" target="_blank">(here</a>) we saw how it's possible to bulk import users using a CSV file. Here we look at how we can automate creating/importing users using the IDCS REST API.<br />
<br />
<b>Note:</b> there is a tool called the Identity Bridge Agent which you can install to sync your MSAD users with IDCS with no coding required. However, you will need to subscribe to a paid version of IDCS to use the Identity Bridge Agent. There are 3 versions of IDCS:<br />
<br />
<ul>
<li><b>Foundation</b>: Free with your OACS subscription</li>
<li><b>Basic</b>: Not included with OACS. You need to subscribe to this if you want to use the Bridge Agent. It also includes additional authentication features above Foundation</li>
<li><b>Standard</b>: Same as Basic with even more features</li>
<li>Go <a href="https://docs.oracle.com/en/cloud/paas/identity-cloud/uaids/oracle-identity-cloud-service-pricing-tiers-and-features.html" target="_blank">here </a>for information on IDCS versions</li>
<li>Go <a href="https://docs.oracle.com/en/cloud/paas/identity-cloud/uaids/understanding-bridge.html" target="_blank">here </a>for information on the IDCS Bridge Agent and <a href="https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/idcs/idcs_idbridge_obe/idbridge.html" target="_blank">here </a>for a lovely tutorial on how you install it</li>
</ul>
<br />
<br />
Okay, back to the IDCS REST API. Here are the links to the Oracle documentation I used. Kudos again to the documentation team!<br />
<a href="https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/idcs/idcs_rest_1stcall_obe/rest_1stcall.html#section3" target="_blank">Make your first REST API call</a><br />
<a href="https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/idcs/idcs_rest_users_obe/rest_users.html" target="_blank">Managing Users Using REST API Calls</a><br />
<br />
<h2>
IDCS REST API Pre-Requisites</h2>
There are a couple of things we need to do before we make our first REST API calls:<br />
<br />
<br />
<ul>
<li>Choose a REST API client. I'm using Windows and PowerShell has the ability to make REST API calls. However, I've decided to use CURL as all the Oracle examples use this. You can download it from <a href="https://curl.haxx.se/windows/" target="_blank">here</a>. Just unzip the package to use it, there is no install required:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja-S5xm6mEfgLcx5ExASYkKVF38-qYGkBdyUmBkCjBwCW0lJ4h9Sv-9PqNDZ4YqNIoPSC5HNHDbFXXA-jqtOxgSvqOzxI20ZLxKxJoAnhjEFmLzyLY3gJSghWevNgNR30SFqVSdbWeEhj7/s1600/IDCS+Curl+Windows+Install.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="185" data-original-width="353" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja-S5xm6mEfgLcx5ExASYkKVF38-qYGkBdyUmBkCjBwCW0lJ4h9Sv-9PqNDZ4YqNIoPSC5HNHDbFXXA-jqtOxgSvqOzxI20ZLxKxJoAnhjEFmLzyLY3gJSghWevNgNR30SFqVSdbWeEhj7/s320/IDCS+Curl+Windows+Install.jpg" width="320" /></a></div>
<div>
<br /></div>
<br />
<ul>
<li>Register a Client Application in IDCS to enable connectivity from the REST client.</li>
</ul>
<br />
<div>
<h2>
Registering the REST API Client Application in IDCS</h2>
<div>
You need to enable connectivity from a client app in the IDCS admin console. By doing this you will get the Client ID and Client Secret which are the equivalent of the user name and password that the REST API will use to login to IDCS.<br />
<ul>
<li>In the IDCS Admin Console go to Application->Add:</li>
</ul>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ZfBkVDEd9PtBZ0lSAdzrBBB_qx6ZHE-lnSsUnJG2DQOVQAQ8X4Lt5y_b0Hnls9Qx56s0ZkaGHiAONTEiSn2BhvFraVoPWQQh9AASO6xkBoImMmSIk9QhotEzGyCR2JMiSdP0PsUxU3Iu/s1600/IDCS+Add+Application.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="446" data-original-width="919" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ZfBkVDEd9PtBZ0lSAdzrBBB_qx6ZHE-lnSsUnJG2DQOVQAQ8X4Lt5y_b0Hnls9Qx56s0ZkaGHiAONTEiSn2BhvFraVoPWQQh9AASO6xkBoImMmSIk9QhotEzGyCR2JMiSdP0PsUxU3Iu/s640/IDCS+Add+Application.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<ul>
<li>Select Confidential Application</li>
<li>Enter a name for the app. You can have different apps for different purposes. Each app will have it's own unique CLIENT_ID and CLIENT_SECRET combination. Using this logic you could for instance create 3 apps; App1 for managing all the REST API user management, App2 for managing Essbase REST API calls and App3 for managing BI REST API calls. By disabling one of the apps you could disable all calls from one specific application team if you wished.</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm1VN4xN28VcY5N2lNmfOCqvzEAky7xYCvK80GScP_AeNFcnXX-R7YLYLJyVP23i6GVlrixYnrbYVKjglDyFGKKI1qUD_YFqu8mE7Y4f0yItgbdij8CU3iwrA3UdF8PUa9vYpKXTWFLuTz/s1600/IDCS+Add+Application+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="494" data-original-width="764" height="412" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm1VN4xN28VcY5N2lNmfOCqvzEAky7xYCvK80GScP_AeNFcnXX-R7YLYLJyVP23i6GVlrixYnrbYVKjglDyFGKKI1qUD_YFqu8mE7Y4f0yItgbdij8CU3iwrA3UdF8PUa9vYpKXTWFLuTz/s640/IDCS+Add+Application+1.jpg" width="640" /></a></div>
<div>
<ul>
<li>Click Next</li>
<li>Select 'Client Credentials' and 'JWT Assertion' in the Allowed Grant Types:</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNOZQqCNqYExGdUHXvPeFWET6Hu2a1DwAdoZRN8_Of5C45v5TlXcZPTTio-hPXH7Pu9bcvQoKWajuJxF-h6nYkUuuNB1nimpO5A9oHGckm4elFPupJ9PbVqmL7dtFZwD4uey061YTphED_/s1600/IDCS+Add+Application+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="161" data-original-width="873" height="118" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNOZQqCNqYExGdUHXvPeFWET6Hu2a1DwAdoZRN8_Of5C45v5TlXcZPTTio-hPXH7Pu9bcvQoKWajuJxF-h6nYkUuuNB1nimpO5A9oHGckm4elFPupJ9PbVqmL7dtFZwD4uey061YTphED_/s640/IDCS+Add+Application+2.jpg" width="640" /></a></div>
<div>
The grant types define how the IDCS handles authorisation:</div>
<div>
<div>
<b>Client Credentials</b> - This will generate our Client ID and Client Secret</div>
<div>
<b>JWT Assertion</b> - this enables the REST client to connect using a JSON web token (JWT)</div>
<div>
<br /></div>
<ul>
<li>On the Client page, scroll down to the Grant the client access to Identity Cloud Service Admin APIs. section, and click Add</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnv7yB5kl_bHHCCFvSWhkYGnZM8cqNClqy_K_TVIN_cOR0EOHFKzMQtHguQ6sTJ-VgGqv7zBzogTzgoRD6iHdvLnmtTQ4FnrSik_dRqyhNJjrt1uTKjJVM8ZKSFQN3LfFi2RTZWmC30cgK/s1600/IDCS+Add+Application+3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="77" data-original-width="435" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnv7yB5kl_bHHCCFvSWhkYGnZM8cqNClqy_K_TVIN_cOR0EOHFKzMQtHguQ6sTJ-VgGqv7zBzogTzgoRD6iHdvLnmtTQ4FnrSik_dRqyhNJjrt1uTKjJVM8ZKSFQN3LfFi2RTZWmC30cgK/s400/IDCS+Add+Application+3.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
<ul>
<li>In the Add App Role dialog box, select the type of access your REST API account needs. We are doing high-level security tasks so we will select Identity Domain Administrator, and then click Add:</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWse0iL390L4YAK8zdNHwwJMH51C4ZpK7GGIqQMN3o8dWT_qyQ5rQsCO6vc1GMDKHwvvRm2j81wjpUIV_m5Nvzd4gHViA9Gt8nvjVDdaSNBuD-rCfBm-NCI_U_6vs58L9iwBH_sn96BDX/s1600/IDCS+Add+Application+4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="552" data-original-width="526" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWse0iL390L4YAK8zdNHwwJMH51C4ZpK7GGIqQMN3o8dWT_qyQ5rQsCO6vc1GMDKHwvvRm2j81wjpUIV_m5Nvzd4gHViA9Gt8nvjVDdaSNBuD-rCfBm-NCI_U_6vs58L9iwBH_sn96BDX/s640/IDCS+Add+Application+4.jpg" width="608" /></a></div>
<div>
<ul>
<li>Now keep clicking next and Finish</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcPbgNoS4kHdGLCKJlXQoVRmiODbby_bPPnt4DR92xX8B9UEKm6JsOh75a5zibijdoRM7eIiO6SACHr8NG7FRlvSwyepTa202NzKzxIYnBTRv2YOGwiNuLgaR2rmO-ci_Yj0BAUzOITs1l/s1600/IDCS+Add+Application+5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="529" height="330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcPbgNoS4kHdGLCKJlXQoVRmiODbby_bPPnt4DR92xX8B9UEKm6JsOh75a5zibijdoRM7eIiO6SACHr8NG7FRlvSwyepTa202NzKzxIYnBTRv2YOGwiNuLgaR2rmO-ci_Yj0BAUzOITs1l/s640/IDCS+Add+Application+5.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
After you click Finish you will see a pop-up box containing your Client ID (think username) and Client Secret (think password). Note this down safely to use when you start making REST API calls.</div>
<div>
<br /></div>
<div>
<ul>
<li>Finally click Activate to enable the application:</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0B0eUnjoVEnN2I2IBdvQgtnD1_JXVG0QPExk0pe_ycsNWr16qYLpJ5p0rT5E1lpmLTkq8J6oNEnKpUY5F4FJdcrnnRgBFSlQHHnhk_9wQ0jjO-l7ZcT6eN4SVeqDopa7IDROinjQo7aPb/s1600/IDCS+Add+Application+6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="289" data-original-width="934" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0B0eUnjoVEnN2I2IBdvQgtnD1_JXVG0QPExk0pe_ycsNWr16qYLpJ5p0rT5E1lpmLTkq8J6oNEnKpUY5F4FJdcrnnRgBFSlQHHnhk_9wQ0jjO-l7ZcT6eN4SVeqDopa7IDROinjQo7aPb/s640/IDCS+Add+Application+6.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<h2>
Running Your First IDCS REST API Call</h2>
To keep things nice and simple for my old brain I'm going to use the Windows command tool to launch our REST calls.<br />
<br />
The first call we need to make is effectively the login. The login will create an access token for us and we will use this access token in subsequent commands.</div>
<div>
<br />
<br />
<h3>
Login to IDCS Using REST</h3>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">curl -k -X POST -u "<b>CLIENT_ID</b>:<b>CLIENT_SECRET</b>" -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" "<b>IDCS_URL</b>/oauth2/v1/token" -o <b>access_token.json</b></span></div>
<div>
<br />
I've highlighted in bold the parts of the command we need to modify namely:<br />
<br />
<ul>
<li>CLIENT_ID: This is what we generated when we created our IDCS client app earlier.</li>
</ul>
<ul>
<li>CLIENT_SECRET: Same as above.</li>
</ul>
<ul>
<li>IDCS_URL: This is the URL to our IDCS instance. You can get this by copying it from the URL of your IDCS console. The URL will look something like this:</li>
</ul>
https://idcs-<WHOLE_BUNCH_OF_RANDOM_CHARACTERS>.identity.oraclecloud.com<br />
<ul>
<li>access_token.json: This is the file which will contain the output of the REST API call. It will contain the token we need to run subsequent calls to IDCS. It looks something like this:</li>
</ul>
<br />
{<br />
"access_token":"<ENORMOUS_STRING_OF_RANDOM_CHARACTERS>",<br />
"token_type":"Bearer",<br />
"expires_in":3600<br />
}<br />
<br />
Here is what it looks like in the windows command window:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsi7TrGpu-uAsiwotBz0LfGu32mEv_yfRYRs1FXOH4QRLs-tCDTpFxVDsr3cmtEpSjLzil4p58kS0fywPI0FZgA_etUpZouVQ3EHxL-oEyrO8MTRuK_aK45tOimIxMGZ9aqGxDyLNj5PzH/s1600/REST+Login.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="116" data-original-width="654" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsi7TrGpu-uAsiwotBz0LfGu32mEv_yfRYRs1FXOH4QRLs-tCDTpFxVDsr3cmtEpSjLzil4p58kS0fywPI0FZgA_etUpZouVQ3EHxL-oEyrO8MTRuK_aK45tOimIxMGZ9aqGxDyLNj5PzH/s640/REST+Login.jpg" width="640" /></a></div>
<br />
If your REST call is unsuccessful for whatever reason you will see an HTML error message in your access_token.json file:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSPnM9U5-eBsx0CHbCfGGASOsoRMcCkKpPdY4lRLkuwubQUOaUoI_TrNV-nVKkrcSu59nt1sDBPrTgtWx9jq175s0n0wotuaC6khyphenhyphenImLP_G50zYme0fpv3iMeXfL2Jxh17E5nH-gLz62A/s1600/REST+Login+Error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="120" data-original-width="727" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSPnM9U5-eBsx0CHbCfGGASOsoRMcCkKpPdY4lRLkuwubQUOaUoI_TrNV-nVKkrcSu59nt1sDBPrTgtWx9jq175s0n0wotuaC6khyphenhyphenImLP_G50zYme0fpv3iMeXfL2Jxh17E5nH-gLz62A/s640/REST+Login+Error.jpg" width="640" /></a></div>
<br />
<br />
<h2>
Creating an IDCS User Using REST (equivalent to manual user creation)</h2>
This was the first example I found for adding a user and it worked but it did not end up being my preferred solution. The preferred solution was to use the bulk user CSV upload (scroll further down this blog) as this was more user friendly but I'm adding the non-bulk method here for completeness.<br />
<br />
The CURL command to create a user in IDCS is as follows:<br />
<br />
curl -k -v -X POST -H "Content-Type: application/scim+json" -H "Authorization: Bearer <b>ACCESS_TOKEN</b>" "<b>IDCS_URL</b>/admin/v1/Users" -d "@<b>FILE_NAME</b>" -o <b>user_output.json</b><br />
<br />
Note the double quotes around the FILE_NAME. The Oracle documentation uses single quotes but this causes an error, double quotes are required when using Windows.<br />
<br />
The FILE_NAME is a file containing the user information in JSON format or the JSON payload:<br />
<br />
{<br />
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],<br />
"userName": "john.smith@brewery.com",<br />
"name": {<br />
"familyName": "Smith",<br />
"givenName": "John",<br />
},<br />
"emails": [{<br />
"value": "john.smith@brewery.com",<br />
"type": "work",<br />
"primary": true<br />
}]<br />
}<br />
<div>
<br />
Example:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -k -v -X POST -H "Content-Type: application/scim+json" -H "Authorization: Bearer <b>ENORMOUS_STRING_OF_CHARACTERS</b>" "<b>https://idcs-db123456789.identity.oraclecloud.com/admin/v1/Users</b>" -d "@<b>users.json</b>" -o <b>user_output.json</b></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0JsKRBmVJIF_iNEhSyY-xktCzLDUvD_tTNzoI5bpBRpbzgVuhcxMIyr2HWTNAPgAxZAaWmUjtB66yC10PdCwta-IEF6i9VNGAEVCgI0l-mMja0CEt7Y6gRc-l9TkAXSUbPALWZ4tCleS/s1600/IDCS+Add+User.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="347" data-original-width="642" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0JsKRBmVJIF_iNEhSyY-xktCzLDUvD_tTNzoI5bpBRpbzgVuhcxMIyr2HWTNAPgAxZAaWmUjtB66yC10PdCwta-IEF6i9VNGAEVCgI0l-mMja0CEt7Y6gRc-l9TkAXSUbPALWZ4tCleS/s640/IDCS+Add+User.jpg" width="640" /></a></div>
<br />
<br /></div>
You can add as many users in the payload as you wish. The user_output.json file will contain any errors that may have occurred during your import. You would need to add a mechanism to catch any errors and alert the end users. One drawback of this solution is these loads to not appear as a job in the IDCS admin console and whilst there are many ways to create JSON formatted files the format is not nice for end users.<br />
<br />
<br />
<h2>
IDCS Bulk CSV User Import Using the REST API</h2>
This was my preferred solution for this particular customer. They already had an on-prem SQL database regularly updated from MS Active Directory with new users so we could use this as our source to create our Users.CSV file. This method also uses a IDCS job to import the users so all success/failure logging appears in the IDCS console. It makes it a more integrated solution and more user friendly for the administrators.<br />
<br />
The steps we need to go through for the CSV import are documented <a href="https://docs.oracle.com/en/cloud/paas/identity-cloud/rest-api/Importing.html" target="_blank">here</a><br />
<br />
<ol>
<li>Login to IDCS</li>
<li>Upload the CSV file to the IDCS storage area</li>
<li>Schedule a IDCS user import job (to run immediately)</li>
<li>Check the status of the job</li>
</ol>
<br />
We've seen the command to login and get our access token earlier in this blog.<br />
<br />
<h3>
Upload a File to IDCS Using REST</h3>
This is the CURL command to upload our CSV file:<br />
<br />
curl -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer <b>ACCESS_TOKEN</b>" -H "Cache-Control: no-cache" -F "fileName=<b>FILE_NAME</b>" -F "contentType=text/csv" -F "isPublic=false" -F file=@"<b>FILE</b>" "<b>IDCS_URL</b>/storage/v1/Files" -o <b>file_output.json</b><br />
<div>
<br /></div>
<br />
<ul>
<li>FILE_NAME: This is the name you give to the file when it is uploaded to the IDCS storage</li>
<li>FILE: This is the local file name for your Users.CSV file</li>
<li>file_output.json: This will contain the output of the command in JSON format. This output will contain the IDCS storage location of our uploaded file. We will need this to schedule the IDCS job</li>
</ul>
<br />
Example:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer <b>ENORMOUS_STRING_OF_CHARACTERS</b>" -H "Cache-Control: no-cache" -F "fileName=u<b>sers.csv</b>" -F "contentType=text/csv" -F "isPublic=false" -F file=@"u<b>sers.csv</b>" "<b>https://idcs-db123456789.identity.oraclecloud.com</b>/storage/v1/Files" -o <b>file_output.json</b></span><br />
<br />
<br />
This is what the file_output.json looks like:<br />
<br />
{"fileName":"<b>files/12345678987654321/users.csv</b>",<br />
"isPublic":false,<br />
"fileUrl":"https://em3.storage.oraclecloud.com/v1/RANDOM_CHARACTERS/users.csv"}<br />
<div>
<br /></div>
The fileUrl in bold above is what we need to be able to run the IDCS User import job.<br />
<br />
<br />
<h3>
Schedule an IDCS User Import Job using REST</h3>
The CURL command to schedule an IDCS job is:<br />
<br />
curl -X POST -H "Content-Type: application/scim+json" -H "Authorization: Bearer <b>ACCESS_TOKEN</b>" -H<br />
"Cache-Control: no-cache" -d '{<br />
"schemas": [<br />
"urn:ietf:params:scim:schemas:oracle:idcs:JobSchedule"<br />
],<br />
"jobType": "<b>UserImport</b>",<br />
"runNow": <b>true</b>,<br />
"parameters": [<br />
{<br />
"name": "<b>fileLocation</b>",<br />
"value": "files/201608261841/UsersImp1.csv"<br />
},<br />
{<br />
"name": "<b>fileType</b>",<br />
"value": "csv"<br />
}<br />
]<br />
}' "https://<b>IDCS_URL</b>/job/v1/JobSchedules"<br />
<br />
The JSON payload in the command defines our scheduled job and is self explanatory. The job type is to UserImport, we want it to run immediately, the fileLocation is the fileName we captured in our previous upload command, the fileType is CSV.<br />
<br />
In order to get the windows command line to read the payload on one line we need to do some escaping of the characters. This is what the command actually looks like in the command prompt (apologies, it looks awful!):<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">curl -X POST -H "Content-Type: application/scim+json" -H "Authorization: Bearer <b>ENORMOUS_STRING_OF_CHARACTERS</b>" -H "Cache-Control: no-cache" -d "{\"schemas\": [\"urn:ietf:params:scim:schemas:oracle:idcs:JobSchedule\"], \"jobType\": \"UserImport\", \"runNow\": true, \"parameters\": [{ \"name\": \"fileLocation\", \"value\": \"f<b>iles/12345678987654321/users.csv</b>\"}, {\"name\": \"fileType\", \"value\": \"csv\"}]}" <b>https://idcs-db123456789.identity.oraclecloud.com</b>/job/v1/JobSchedules -o <b>schedule_output.json</b></span><br />
<div>
<br /></div>
If the command is successful you will see the job in the IDCS job console:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1TQ4tsNSfGRp6bkrY2bKnU8CuxZlJwbALOA-LrRBYiUKy-jL7oue42aClCoHgJi09EfEEEujc1rdUEGIAuuWGHC0ede8LvrKvv5fnIDfcKXNpqdcEwcBL_e2Spu305o9fDip78Qk5CeX/s1600/IDCS+REST+Job+Status.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="353" data-original-width="904" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1TQ4tsNSfGRp6bkrY2bKnU8CuxZlJwbALOA-LrRBYiUKy-jL7oue42aClCoHgJi09EfEEEujc1rdUEGIAuuWGHC0ede8LvrKvv5fnIDfcKXNpqdcEwcBL_e2Spu305o9fDip78Qk5CeX/s640/IDCS+REST+Job+Status.jpg" width="640" /></a></div>
<br /></div>
<div>
<br />
<br />
The output to the JobSchedules command gives you the Job ID which you can use to check the job status. Here is the output of the schedule_output.json:<br />
<br />
{"id":"<b>95b78969-58f2-4efg-p0ac-16ae6702f8e0</b>",<br />
"isDisabled":false,<br />
"jobType":"UserImport",<br />
"nextFireTime":"2019-02-28T15:20:15.280Z",<br />
"runAt":"2019-02-28T15:20:15.280Z",<br />
"parameters":[<br />
<span style="white-space: pre;"> </span>{"name":"fileLocation",<br />
<span style="white-space: pre;"> </span>"value":"files/12345678987654321/users.csv"},<br />
<span style="white-space: pre;"> </span>{"name":"fileType","value":"csv"}],<br />
<span style="white-space: pre;"> </span>"schemas":["urn:ietf:params:scim:schemas:oracle:idcs:JobSchedule"],<br />
<span style="white-space: pre;"> </span>"meta":{"resourceType":"JobSchedule",<br />
<span style="white-space: pre;"> </span>"location":"https://IDCS_URL/job/v1/JobSchedules"}<br />
}<br />
<br />
<br />
The Oracle documentation is very good but there are some parts where the quotes aren't quite correct or the syntax differs slightly in Windows. Hopefully this blog might help others out there looking for a quick start to dip their toes into IDCS and the REST API.<br />
<br /></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com2tag:blogger.com,1999:blog-7033364975447167607.post-45167720551928908512019-03-08T18:13:00.000+00:002019-07-24T17:12:51.150+01:00OAC - Bulk Importing Users & Groups via the IDCS UIA key part of Cloud SaaS is integrating with your existing systems. This blog will show you how to bulk import users manually via the IDCS UI. The second part of the blog (<a href="http://hyperion-epm-bi.blogspot.com/2019/03/oac-bulk-importing-users-groups-via_8.html" target="_blank">here</a>) will show you how to do this in an automated way using CURL and the IDCS REST API.<br />
<br />
<h2>
IDCS User Federation</h2>
All user/group security and roles for the Oracle Analytics Cloud are managed within the Oracle Identity Cloud Service. IDCS allows you to add users natively or use federation to authenticate your users with an external identity provider. In my case we used Microsoft Active Directory Federation Server (ADFS) as our authentication provider.<br />
<br />
The setup is relatively simple and it worked first time! It also gave us true Single Sign-On SSO (the users just open their browser to access BI without having to login, user security is still maintained). This tutorial from Oracle is very good and all we needed to configure the security integration: <a href="https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/idcs/idcs_adfs_obe/adfs.html" target="_blank">Oracle Identity Cloud Service: Integrating with Microsoft Active Directory Federation Services (AD FS)</a>.<br />
<br />
With the IDCS - ADFS integration your users can login to OAC with their Windows username and password. However, you still need to create the user account in IDCS in order for the account to be mapped or federated with your ADFS account. This can be done manually in the IDCS User console and it's fine if you have a limited number of users but you would not want to create 100s of users manually.<br />
<br />
<h2>
Creating a User Manually</h2>
The manual user creation process is simple:<br />
<ul>
<li>Open the IDCS Admin Console:</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02nQ9Y1pg8c2yCZxj9SCso0yAHod2BDZ1MCexgcWeOrj8bC89BmxqONC9iHzpw6-0KtgGN0wfBHgkr_hxf3bJHxNyk1XAJrXfkaw18qbvfzk5RbxAqW1l9aGWa-SPt22ODegQcpmagyD8/s1600/IDCS+Admin+Console.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="472" data-original-width="653" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02nQ9Y1pg8c2yCZxj9SCso0yAHod2BDZ1MCexgcWeOrj8bC89BmxqONC9iHzpw6-0KtgGN0wfBHgkr_hxf3bJHxNyk1XAJrXfkaw18qbvfzk5RbxAqW1l9aGWa-SPt22ODegQcpmagyD8/s640/IDCS+Admin+Console.jpg" width="640" /></a><br />
<div>
<br />
<ul>
<li>Select users:</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-LCO-ZyGM2HORwDgmowBTYVwhR96becVCyEWC7mQPqlkYNIULpbxZNPsGZ_5Uz-puZsV8Kg57FqBdFA7quHFnj_vMHstJ-c0FsWb5XMrfBx8KMol0g76Ei2x_FcnzpwoTybu9V9fPyzUd/s1600/IDCS+Users.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="468" data-original-width="728" height="410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-LCO-ZyGM2HORwDgmowBTYVwhR96becVCyEWC7mQPqlkYNIULpbxZNPsGZ_5Uz-puZsV8Kg57FqBdFA7quHFnj_vMHstJ-c0FsWb5XMrfBx8KMol0g76Ei2x_FcnzpwoTybu9V9fPyzUd/s640/IDCS+Users.jpg" width="640" /></a><br />
<ul>
<li>Click Add:</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9pg_3SWa-p63kpgcxKV0XZkKFQ6OkOOMT0M9eVyzFUt8FYHbaJTHwFObQ5bU9mJ_vshtDMkFslSYDnEZxBP7nk-wKzztGn8MZUBxXBPQDaXvdNetsea2sj8e1-vj-fnHkWLthVu0u5IC_/s1600/IDCS+create+User+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="831" data-original-width="839" height="632" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9pg_3SWa-p63kpgcxKV0XZkKFQ6OkOOMT0M9eVyzFUt8FYHbaJTHwFObQ5bU9mJ_vshtDMkFslSYDnEZxBP7nk-wKzztGn8MZUBxXBPQDaXvdNetsea2sj8e1-vj-fnHkWLthVu0u5IC_/s640/IDCS+create+User+1.jpg" width="640" /></a><br />
<ul>
<li>Enter the user details:</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0z64WK-RR7hnI5oEZuQ3WWLgEjyehXYBZS_BMy6HIpQb3aOost7_yk9W8folK7k5ZeMLoLfnw_5AgZWNpR6UkAZbG-jW-9nmB4WAlgTGf3F_Bs8hCpT2YgEyFQa5B5eauiO8bXnuVsTTd/s1600/IDCS+create+User+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="677" data-original-width="1056" height="410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0z64WK-RR7hnI5oEZuQ3WWLgEjyehXYBZS_BMy6HIpQb3aOost7_yk9W8folK7k5ZeMLoLfnw_5AgZWNpR6UkAZbG-jW-9nmB4WAlgTGf3F_Bs8hCpT2YgEyFQa5B5eauiO8bXnuVsTTd/s640/IDCS+create+User+2.jpg" width="640" /></a><br />
<ul>
</ul>
<br />
<br />
Note the 'Federated' button. Make sure this is enabled if you want your user to authenticate against your external provider:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7chxM6BD1r9nS1KTMRWVWFGMV1iGmN3EIGhH87C0AiZNVuXjXUVi2wkpTtouR6E-8xz0os57Bw_hyzHkJqDaCXCNZOtMNQkdc80In1HkMeq_XuJEel5-djytler3182GyQ1uO97zSHNrK/s1600/IDCS+create+User+3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="659" data-original-width="1052" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7chxM6BD1r9nS1KTMRWVWFGMV1iGmN3EIGhH87C0AiZNVuXjXUVi2wkpTtouR6E-8xz0os57Bw_hyzHkJqDaCXCNZOtMNQkdc80In1HkMeq_XuJEel5-djytler3182GyQ1uO97zSHNrK/s640/IDCS+create+User+3.jpg" width="640" /></a></div>
<br />
<br />
Your user should now be able to login using their Windows password authenticated by your ADFS identity provider.<br />
<h2>
IDCS Bulk User Import using a CSV File</h2>
As I mentioned earlier, you wouldn't want to create 100s of users manually. Thankfully there's a really easy to use bulk import feature available in IDCS for both users and groups and the documentation supplied by Oracle is very good. Brilliant documentation is an unexpected benefit of Oracle's move to the cloud! Here is the link:<br />
<br />
<a href="https://docs.oracle.com/en/cloud/paas/identity-cloud/uaids/import-user-accounts.html">https://docs.oracle.com/en/cloud/paas/identity-cloud/uaids/import-user-accounts.html</a><br />
<br />
Download the CSV template from the link above. Note the 'Federated' and 'Active' columns, I've set these both to true so that the user is authenticated against my ADFS identity provider and can login immediately.<br />
<br />
<ul>
<li>Enter your user details into the CSV file. In this example I'm entering the minimum amount of details:</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBlCzJQFLgFOUzuOO7GgYmOnCVX56wKhRsh6Rii3USOKIoMOhNuKQxn5JZvMIwPxXMS1cGjpO9aNBQd3Mgfq3Dwej_9rOKzlROd1WyQasMnxvyrH_bzGm4i9jn_AVEHk_LrHpdYldi-iQW/s1600/IDCS+User+CSV.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="115" data-original-width="782" height="94" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBlCzJQFLgFOUzuOO7GgYmOnCVX56wKhRsh6Rii3USOKIoMOhNuKQxn5JZvMIwPxXMS1cGjpO9aNBQd3Mgfq3Dwej_9rOKzlROd1WyQasMnxvyrH_bzGm4i9jn_AVEHk_LrHpdYldi-iQW/s640/IDCS+User+CSV.jpg" width="640" /></a></div>
<div>
<br />
<ul>
<li>Login to the IDCS Admin Console</li>
<li>Click on Users</li>
<li>Click on Import:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt24wpC71CFi3y_CiaNJNmVZoFKWYcGiDwkWl7JLRMNCZudo7HHwQZ98NMAH1l79_vCYo2IZ2mAKHTh-X6GeExxTyOfAHFk3RYI5SQQJI73_CQ4nPjht2LAs3KXWCodJAeg64cYCfmXfal/s1600/IDCS+User+Import1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="261" data-original-width="526" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt24wpC71CFi3y_CiaNJNmVZoFKWYcGiDwkWl7JLRMNCZudo7HHwQZ98NMAH1l79_vCYo2IZ2mAKHTh-X6GeExxTyOfAHFk3RYI5SQQJI73_CQ4nPjht2LAs3KXWCodJAeg64cYCfmXfal/s320/IDCS+User+Import1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<ul>
<li>Browse for your CSV file and import:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjECXIXmSPIdSv_Qsx3BwkzAESsZ1BQn6FcXQp6xxXY8Wm1aYMaNOoEmxb07eaOJx4rJxS2FvezclH3iRS98yWFaErKRqgEkumBK3JHUD-RkQseCxryRdzbwQNWUQwPTWeykdCg3e4NyL7N/s1600/IDCS+User+Import2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="418" data-original-width="1164" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjECXIXmSPIdSv_Qsx3BwkzAESsZ1BQn6FcXQp6xxXY8Wm1aYMaNOoEmxb07eaOJx4rJxS2FvezclH3iRS98yWFaErKRqgEkumBK3JHUD-RkQseCxryRdzbwQNWUQwPTWeykdCg3e4NyL7N/s640/IDCS+User+Import2.jpg" width="640" /></a></div>
<div>
<br /></div>
<ul>
<li>You should see a notification that the import job was started. Check the IDCS Job Console to see whether the import was successful:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAJY2PqhA1C552PDEIg-ovCJy423N0PMgtXZCQya7adpuJJ73zryeS6dryp49TsFkgNK2YstkL9yOwVJoOm6dN0d6RYiIC3oTNHXHX4vc8Sw2FNxZ1ICfQUfRjaL379cYClLDN3Z7Bv1cf/s1600/IDCS+User+Import3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="282" data-original-width="1129" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAJY2PqhA1C552PDEIg-ovCJy423N0PMgtXZCQya7adpuJJ73zryeS6dryp49TsFkgNK2YstkL9yOwVJoOm6dN0d6RYiIC3oTNHXHX4vc8Sw2FNxZ1ICfQUfRjaL379cYClLDN3Z7Bv1cf/s640/IDCS+User+Import3.jpg" width="640" /></a></div>
<div>
<br /></div>
<ul>
<li>Job Console details:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjaxanAFeaRdYcw87bmFWqiEkRvZEwWel2CEftig6NAXFWC6WbwdJqd8k9XUBEH3C5H3zzSy50lqumXMGd5puNXrHEAluqTk_LIJn0tiUR-2g7MUnMGYG8keyZmZ89JXc_fTpQX15MDmsR/s1600/IDCS+User+Import4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="444" data-original-width="1185" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjaxanAFeaRdYcw87bmFWqiEkRvZEwWel2CEftig6NAXFWC6WbwdJqd8k9XUBEH3C5H3zzSy50lqumXMGd5puNXrHEAluqTk_LIJn0tiUR-2g7MUnMGYG8keyZmZ89JXc_fTpQX15MDmsR/s640/IDCS+User+Import4.jpg" width="640" /></a></div>
<div>
<br /></div>
<br />
<br />
<ul>
<li>Click on View Details to see more detailed information on the job:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiri5v9eZ_fhT2-7n0ZwNkqZJtOfX3t4fwF1FEPNJmAXtAZhyUEEjkGzs1cvXZWtOv4A5njqmTXK3ZckgO3QyY66VEwFdkkpZRzehFm3GhEHC92EuPkPb3Q2UmxtSQJ-vY5L3aX5DbcTgAf/s1600/IDCS+User+Import5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="627" data-original-width="900" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiri5v9eZ_fhT2-7n0ZwNkqZJtOfX3t4fwF1FEPNJmAXtAZhyUEEjkGzs1cvXZWtOv4A5njqmTXK3ZckgO3QyY66VEwFdkkpZRzehFm3GhEHC92EuPkPb3Q2UmxtSQJ-vY5L3aX5DbcTgAf/s640/IDCS+User+Import5.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
The screenshot above is from a different import (we would see 3 users listed if we used my example CSV file above). We can see the list of users that were imported successfully and the status. It's a very simple and intuitive tool to use.</div>
<br />
<h2>
IDCS Bulk Group Import Using a CSV File</h2>
The process of creating new groups and assigning users to those groups is also very easy.<br />
<br />
<ul>
<li>Download the Groups CSV template from the same link further up the blog.</li>
<li>Enter the user/group mappings:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5H7KvOsbavNL8xqvOnpVKK5ygnT5KkFyth7hGJHAWRZ1FjYktNSjfuQ0Ut0KtDgtR8kRHfyGm51NGfLgpVRVMkj0z1gEWsxKz784A-Ryxn0F-atoED20Cd90y3UzlI3BkU3jK0vorYnM/s1600/IDCS+Group+Import1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="758" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5H7KvOsbavNL8xqvOnpVKK5ygnT5KkFyth7hGJHAWRZ1FjYktNSjfuQ0Ut0KtDgtR8kRHfyGm51NGfLgpVRVMkj0z1gEWsxKz784A-Ryxn0F-atoED20Cd90y3UzlI3BkU3jK0vorYnM/s640/IDCS+Group+Import1.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
Here all the users will be added to my OBI_Viewer group but only Timothy will be added to the ESB_Read group.</div>
<ul>
<li>Click on Groups</li>
<li>Click on Import</li>
<li>Check the IDCS Job Console to see whether the import was successful:</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxrIu0xYrqb1KqoBejD4C5tuMn9osdjzEwHTP28f08hLq_e6_ARZIPc8KkRvIxOxguSwM86NapfykoxwQyuaic-KGQ4EFFoDCYAsG26Jf62_jIm_pE2lk7MrPDc8U2xPB7ROeYCF4RHQKP/s1600/IDCS+Group+Import2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="727" data-original-width="916" height="506" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxrIu0xYrqb1KqoBejD4C5tuMn9osdjzEwHTP28f08hLq_e6_ARZIPc8KkRvIxOxguSwM86NapfykoxwQyuaic-KGQ4EFFoDCYAsG26Jf62_jIm_pE2lk7MrPDc8U2xPB7ROeYCF4RHQKP/s640/IDCS+Group+Import2.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Ok, so far so good. But what if we wanted to automate this process? Well that's where the REST API comes into play. The documentation is again very good and we shall cover this in the <a href="http://hyperion-epm-bi.blogspot.com/2019/03/oac-bulk-importing-users-groups-via_8.html" target="_blank">next post</a>.<br />
<br /></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-77412428322260507422019-03-01T13:46:00.004+00:002019-07-24T17:12:51.214+01:00OAC - How to Create Oracle Autonomous Essbase and OBI Analytics Cloud Instances?I've recently been implementing Autonomous Oracle Analytics Cloud for a customer. The customer had Essbase and OBIEE on-prem and we have migrated everything to the Oracle Autonomous Cloud.<br />
<br />
It's been an interesting process and whilst there have been some small niggles the OAC offering is a very simple to use and powerful platform.<br />
<br />
In this OAC blog (the first of several if I get the time!) I will show how easy it is to spin up new OAC instances. We shall create an Essbase instance and a Business Intelligence Enterprise instance, each running on one OCPU.<br />
<br />
With the Autonomous Cloud, Oracle have made this process super simple!<br />
<br />
There are free trials available, so I urge you all to give it a go and test drive the new features in Essbase 12c and Data Visualization.
When you receive your login, you will get a URL which will direct you to your Oracle Services:<br />
<br />
https://myservices-<TENENT-NAME><tenant-id>.console.oraclecloud.com/mycloud/cloudportal/cloudHome </tenant-id><br />
<tenant-id><br /></tenant-id>
<tenant-id>This will give you a huge list of all the services your Oracle credits enable you to use. You can filter these down to a more manageable list by 'favouriting' your relevant services (clicking on the star). I'm interested in the Oracle Analytics Cloud and the Oracle Identity Cloud Server (more on IDCS in a subsequent blog).
Here is my shortened list of services:</tenant-id><br />
<tenant-id><br /></tenant-id>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwwpZspqygMhKtT8bCj8zqliDV36qUUFoX0_Ss_eHNluc5CmlqtM2rG5NpEYoLwVnso3Ua0vgbOBRrbsCpXrfBV0VouejRAkiKwU_Dx4KEeOS8C7FOjQsOKuUS3iw3kc8xuenHNNpTxN-x/s1600/myServices.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="535" data-original-width="698" height="489" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwwpZspqygMhKtT8bCj8zqliDV36qUUFoX0_Ss_eHNluc5CmlqtM2rG5NpEYoLwVnso3Ua0vgbOBRrbsCpXrfBV0VouejRAkiKwU_Dx4KEeOS8C7FOjQsOKuUS3iw3kc8xuenHNNpTxN-x/s640/myServices.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Both Essbase and OBIEE come under the Analytics service so click on the Oracle Analytics Cloud link highlighted in yellow. <div>
<br /></div>
<div>
<h2>
Creating the OAC Autonomous Business Intelligence Enterprise Edition Instance</h2>
<div>
<br /></div>
<div>
You don't need to know anything about infrastructure or installs with Autonomous. Just click on the ‘Create Instance’ link to build your Essbase/OBIEE instance. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy4EjDwA7PTyMgHTjyvCw3hDZaRAf039i5cQBL95tt5fcuIKFYon6Cggw-9PWNGKR65gRKgsOeMk7esbeKle-LEPvNxiVTwvlImiYOmxTVlRBhyWEwmjI_j_OA5TErXSSoAw8WYrijc3K4/s1600/createInstance.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="364" data-original-width="787" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy4EjDwA7PTyMgHTjyvCw3hDZaRAf039i5cQBL95tt5fcuIKFYon6Cggw-9PWNGKR65gRKgsOeMk7esbeKle-LEPvNxiVTwvlImiYOmxTVlRBhyWEwmjI_j_OA5TErXSSoAw8WYrijc3K4/s640/createInstance.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
You have a choice of options for your instance: </div>
<div>
<ul>
<li><b>Instance Name</b>: The name of your Analytics instance. This will appear in the OBI/Essbase URL. You are not allowed to use any special characters in the instance name. </li>
<li><b>Description</b>. Enter the description of the service here.</li>
<li><b>Notification Email</b>. All information associated with the instance (patch notifications, failures) will be sent to this account. </li>
<li><b>Region</b>. Choose your closest data centre. </li>
<li><b>License Type</b>. Choose between the Bring Your Own License (BYOL) model or the standard subscription model. </li>
<li><b>Edition</b>. Choose between Oracle Analytics Cloud - Standard, Oracle Analytics Cloud - Essbase, Oracle Analytics Cloud - Enterprise. </li>
<li><b>Feature Set</b>. This is the subset of features contained within the 'Edition'. </li>
<li><b>Number of OCPUs</b>. Self-explanatory! </li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSIuOK-DnLaXnOYj7ltsKvZwr7gstVsIO_nEKi5FKnKcbQsCKOxjYv74gKt0ZusQnjhJgU5Y1glikTtFhER7kR9NZ_-JvuMklscGoJ-9VDfFkqhBd_n8uOttxI-KA0Q6E86cMVJzuFS7nm/s1600/createOACinstance1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="670" data-original-width="1134" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSIuOK-DnLaXnOYj7ltsKvZwr7gstVsIO_nEKi5FKnKcbQsCKOxjYv74gKt0ZusQnjhJgU5Y1glikTtFhER7kR9NZ_-JvuMklscGoJ-9VDfFkqhBd_n8uOttxI-KA0Q6E86cMVJzuFS7nm/s640/createOACinstance1.jpg" width="640" /></a></div>
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
Here is the list of OAC Editions:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLfGPqPnSr9DMjq5VCljnc0J4_jwHCpqomkC5OvubLVWVHMB3m5wRIbpmB2Rlk4_-o0407bTsjInratVlc0BldbRG1vxkTihBoNoZBzcmIVtiZYisPxLURVgxqornJHdTbfaFrtZ_96mdj/s1600/createOACinstance2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="1105" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLfGPqPnSr9DMjq5VCljnc0J4_jwHCpqomkC5OvubLVWVHMB3m5wRIbpmB2Rlk4_-o0407bTsjInratVlc0BldbRG1vxkTihBoNoZBzcmIVtiZYisPxLURVgxqornJHdTbfaFrtZ_96mdj/s640/createOACinstance2.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
And here is the list of feature sets:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiiwRz4UEyacWVP38bCtNZrULe7TpcDWcWwyZPdeAE2cvhc39oMnUdmPZXcGokGXksPeM0RwGSm5DQ5NqTkM6_YgO-f__Gn33jOq51HBcitVEmB02bOL_CB2Gv4C1J3vZ_BIt9sdDqefGu/s1600/createOACinstance3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="174" data-original-width="1053" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiiwRz4UEyacWVP38bCtNZrULe7TpcDWcWwyZPdeAE2cvhc39oMnUdmPZXcGokGXksPeM0RwGSm5DQ5NqTkM6_YgO-f__Gn33jOq51HBcitVEmB02bOL_CB2Gv4C1J3vZ_BIt9sdDqefGu/s640/createOACinstance3.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Click create and after about 10 minutes your OBI instance is created. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjJEqFVU-ZQ4N2YS8OVC-njccoPxLlNZTVvqEyz0NlrKz7HSeh53qtkqq4QZMaYuq_-IrzVJSfRGZ2weCMjr_QSoBsVVpu0yHi56m44qB7zWHQvivzknWq1EX25TG79PLO3xmjt-AaXpRY/s1600/createOACinstance4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="476" data-original-width="1088" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjJEqFVU-ZQ4N2YS8OVC-njccoPxLlNZTVvqEyz0NlrKz7HSeh53qtkqq4QZMaYuq_-IrzVJSfRGZ2weCMjr_QSoBsVVpu0yHi56m44qB7zWHQvivzknWq1EX25TG79PLO3xmjt-AaXpRY/s640/createOACinstance4.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<image><image><image><br /></image></image></image></div>
<div>
<image><image><image>To access your OBI instance click on the burger menu on the right hand side and select 'Oracle Analytics Cloud URL'. </image></image></image></div>
<div>
<image><image><image><br /></image></image></image></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC8Td1G01Hieb92HrDenIRT1ErC5i_8F1p2ClWCFRbJDpj0kwhfugEN4qrIzMWYRXaB8PoDvIUQtPhQN8Sxng2TxUpPKoPEG6JtS9jCpQ4vfKFDzhXN7I7CVZyx7idrNncQ-sSfFyruaDu/s1600/createOACinstance5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1105" height="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC8Td1G01Hieb92HrDenIRT1ErC5i_8F1p2ClWCFRbJDpj0kwhfugEN4qrIzMWYRXaB8PoDvIUQtPhQN8Sxng2TxUpPKoPEG6JtS9jCpQ4vfKFDzhXN7I7CVZyx7idrNncQ-sSfFyruaDu/s640/createOACinstance5.jpg" width="640" /></a></div>
<div>
<image><image><image><br /></image></image></image></div>
<div>
<image><image><image><br /></image></image></image></div>
<div>
<image><image><image>This will take you to the OAC Data Visualization homepage: </image></image></image></div>
<div>
<image><image><image><image><br /></image></image></image></image></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg6RT6eEeRJzDzA-kcuevvFNLWNzd3GuOTfnyBsGDF4ZnurOkkNb5sxykiS1UkD-Qy7Me1zsQ1P9aFi5MeV1y062k353r4rcRFKOROFuwtp91dhdjFtmf0xbwzbnOZzIeFzYYz4r8BMPp8/s1600/OAC_DV_Homepage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="867" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg6RT6eEeRJzDzA-kcuevvFNLWNzd3GuOTfnyBsGDF4ZnurOkkNb5sxykiS1UkD-Qy7Me1zsQ1P9aFi5MeV1y062k353r4rcRFKOROFuwtp91dhdjFtmf0xbwzbnOZzIeFzYYz4r8BMPp8/s640/OAC_DV_Homepage.jpg" width="640" /></a></div>
<div>
<image><image><image><image><br /></image></image></image></image></div>
<div>
<image><image><image><image><br /></image></image></image></image></div>
<h2>
<image><image><image><image>Creating the OAC Autonomous Essbase Cloud Instance</image></image></image></image></h2>
<div>
Now to create the Oracle Autonomous Analytics Cloud Essbase instance.</div>
<div>
<br /></div>
<div>
We follow the same process as the BI instance but change the instance details.
The only thing we have changed here is our Instance name and the Feature Set: Essbase - Collaborative Data Collection, Scenarios and What-if Analysis.</div>
<div>
<image><br /></image></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVlgBm_gy2KzX1LgfuqODdVoD05jZBwFepvjrwePDCY_QxB_oELd4m8c9DHlPSxyMpY3Lt6x1vudoQrf7sco49R2DuLG9IN_qncjV-j1yNN5nbpRLuz3yquD2MwNaAbmpAJlj5pwUsihPj/s1600/createOACinstance6ESB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="758" data-original-width="1114" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVlgBm_gy2KzX1LgfuqODdVoD05jZBwFepvjrwePDCY_QxB_oELd4m8c9DHlPSxyMpY3Lt6x1vudoQrf7sco49R2DuLG9IN_qncjV-j1yNN5nbpRLuz3yquD2MwNaAbmpAJlj5pwUsihPj/s640/createOACinstance6ESB.jpg" width="640" /></a></div>
<div>
<image><br /></image></div>
<div>
<image><br /></image></div>
<div>
<image>Here we had an issue with the creation process. We logged an SR with Oracle and they un-froze the creation process. I'm sure Oracle will iron out these small niggles in the future. </image></div>
<div>
<image><br /></image></div>
<div>
<image>Once you have created your Essbase instance it too will appear in your Analytics instances list: </image></div>
<div>
<image><image><br /></image></image></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX4jmPFcH17ZoaJ-N4U-Z5-9BPvPC1QkbDoXgkS-dbhom4D-VJPlpcITBKvrjlrW886A9oXBE7_0crVoOo7T1POyqO_zRcFCMu-3skaaaokGLSQ7EqVld5rjX_8-u0K6uLjlqzv-4_4kao/s1600/createOACinstance7ESB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="602" data-original-width="1111" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX4jmPFcH17ZoaJ-N4U-Z5-9BPvPC1QkbDoXgkS-dbhom4D-VJPlpcITBKvrjlrW886A9oXBE7_0crVoOo7T1POyqO_zRcFCMu-3skaaaokGLSQ7EqVld5rjX_8-u0K6uLjlqzv-4_4kao/s640/createOACinstance7ESB.jpg" width="640" /></a></div>
<div>
<image><image><br /></image></image></div>
<div>
<image><image><br /></image></image></div>
<div>
<image><image>Click on the link on the burger menu to login to the new Essbase Jet UI:</image></image></div>
<div>
<image><image><br /></image></image></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7NA97sk7rWbHgGE1nYXIU50eNFGgOunjorEacY9m0pNanyGw4eTFvVDJ-pPfT6mQCZ0c0CFIifq4XFcQKwQDNRMdz7mM4iYaosd4HSdQb8FjVgDI7TwzAlo5B4jSNNHXZSv1yAu4NOFgA/s1600/EssbaseUI.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="568" data-original-width="959" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7NA97sk7rWbHgGE1nYXIU50eNFGgOunjorEacY9m0pNanyGw4eTFvVDJ-pPfT6mQCZ0c0CFIifq4XFcQKwQDNRMdz7mM4iYaosd4HSdQb8FjVgDI7TwzAlo5B4jSNNHXZSv1yAu4NOFgA/s640/EssbaseUI.jpg" width="640" /></a></div>
<div>
<image><image><br /></image></image></div>
<div>
<image><image>I did say it was super simple!</image></image></div>
<div>
<ul>
<li><image><image>We haven't had to wait months to allocate hardware</image></image></li>
<li>We haven't had to download GBs of software installers</li>
<li>We haven't had to wait days for an infrastructure consultant to install the stack</li>
</ul>
<div>
<br /></div>
</div>
<div>
However, there are some fundamental aspects of the service which need improving:</div>
<div>
<ul>
<li>You cannot currently stop a service on demand (there is no STOP button in the console menu!). To stop the service or to schedule up-time you need to log an Oracle Service Request</li>
<li>You can't modify the existing instance (number of OCPU for example). Again, you need to log an SR to get it modified</li>
</ul>
<div>
Oracle are working to get these and many more features added. With the crazy pace that things change in the Oracle Cloud I'm sure it won't be long before they are there.</div>
</div>
<div>
<br /></div>
<div>
That's it for now, more OACS content coming soon. </div>
<div>
</div>
</div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com0tag:blogger.com,1999:blog-7033364975447167607.post-63830121967799443112018-06-22T10:09:00.000+01:002022-04-07T16:58:34.435+01:00PBCS: Financial Report Bursting to the File System<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Hello blog, it's been a while. I got back from Kscope18 - Orlando last week and as usual it was a brilliant conference. My last blog entry (more than a year ago, tut-tut) was about OACS and some of the limitations. I've come back from Kscope with a completely different point of view. It's extremely good value (they're practically giving it away if you're a maintenance-paying on-prem Essbase/OBIEE customer) and the features and functionality <b>ARE ABSOLUTELY AWESOME!</b> I've already presented it to some of our customers and they love it. Anyway, back to the topic of this short blog entry...<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTl56OWmEHYYSI17WCjkzxkHaPQTRaT0hLkuSgxsbbCM-LT6dP0s6q2hia_7XIta07g2MAs2NgkEys2y12KWPUU9Z729RMRX8OIuR000fYi1nCa3xJwBy6FD3r_J6ClARXZedmtuigfEoF/s1600/pdf+burst.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="565" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTl56OWmEHYYSI17WCjkzxkHaPQTRaT0hLkuSgxsbbCM-LT6dP0s6q2hia_7XIta07g2MAs2NgkEys2y12KWPUU9Z729RMRX8OIuR000fYi1nCa3xJwBy6FD3r_J6ClARXZedmtuigfEoF/s320/pdf+burst.png" width="320" /></a></div>
I know it's old skool, but many users in the EPM on-prem world use the Financial Reporting bursting feature to burst out 100s of reports to the file system and automatically move them elsewhere for consumption. I didn't think that this was possible in PBCS but I was wrong!<br />
<br />
If you select 'Export to external directory' in your batch definition, then the all the folder structures and PDFs get put in the inbox/outbox in one handy zip file which you can then download automagically (to coin a phrase from my colleague <a href="http://stay-ahead-in-the-cloud.blogspot.com/" target="_blank">Mike</a> ) via EPM Automate. Here's how it works:<br />
<br />
In your batch you will select your bursting criteria, here I want to burst out my report for all of my stores in the Entity dimension:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy1r869koMNBLO6BnH5Mqxb16Dgf3BejoM13O5eHE5gOezbyPCDtgi4L4Rd2xyCighUchWaXDhgd7gXQ0srLHXdSQMGiQxFYC_ZbsPcnMxI53OQ99d3Yn7CWxeRLGfUbBNx463rON0oHlt/s1600/FR+batch+POV.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="317" data-original-width="586" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy1r869koMNBLO6BnH5Mqxb16Dgf3BejoM13O5eHE5gOezbyPCDtgi4L4Rd2xyCighUchWaXDhgd7gXQ0srLHXdSQMGiQxFYC_ZbsPcnMxI53OQ99d3Yn7CWxeRLGfUbBNx463rON0oHlt/s640/FR+batch+POV.png" width="640" /></a></div>
<br />
<br />
You then select 'Export as PDF' and 'Export to an external directory'. Select 'ExportFolder' from the drop-down:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Z_0Z7FfY1dbUDsNimkh0NjOPtNVn8TjG1fjJTrLi7fDYIyh21Ks299LircMvCuK8ePVNTD5acbo7F44b0oWGUDV6qMgeShddq1GEQcWttZ7pea_92VWym9OZRBo1TjuU-KHmUpo_BQ8s/s1600/FR+ExportFolder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="595" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Z_0Z7FfY1dbUDsNimkh0NjOPtNVn8TjG1fjJTrLi7fDYIyh21Ks299LircMvCuK8ePVNTD5acbo7F44b0oWGUDV6qMgeShddq1GEQcWttZ7pea_92VWym9OZRBo1TjuU-KHmUpo_BQ8s/s640/FR+ExportFolder.png" width="640" /></a></div>
<br />
All the FR bursting folder structures and PDFs get put in the inbox/outbox 'Scheduler Output' folder in one handy zip file. Here is my Inbox/Outbox:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwU6gLtRlYF0wRTwyFCEluUuln9z85n9XwVSThK5lBCnXHcRKuT5CgzQmgA58uqNIfuMbs6FeP_ZgCOG8jjIcUozBRf8FKxpoTufrC4kH9h-Ubu9W8pYTETlhKzLnzC-d9HN2jPIzjlGR/s1600/SchedulerOutput.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="961" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwU6gLtRlYF0wRTwyFCEluUuln9z85n9XwVSThK5lBCnXHcRKuT5CgzQmgA58uqNIfuMbs6FeP_ZgCOG8jjIcUozBRf8FKxpoTufrC4kH9h-Ubu9W8pYTETlhKzLnzC-d9HN2jPIzjlGR/s640/SchedulerOutput.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
And here is my bursting output zip file in the 'Scheduler Output' folder:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3cY7ktpgg2S4a0nwim6TB491EQFjlsiOfkffR2isTStv_bHCNPTEzr64uvm1dIm7OZ9Utf18Cpgg2Mg7CNpEhTfkLd3xTL8nCpmhYf8dB42RmDs0_aE0dPsT8XtlRNOIMWlwJEXNt7a9E/s1600/zip+file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="198" data-original-width="982" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3cY7ktpgg2S4a0nwim6TB491EQFjlsiOfkffR2isTStv_bHCNPTEzr64uvm1dIm7OZ9Utf18Cpgg2Mg7CNpEhTfkLd3xTL8nCpmhYf8dB42RmDs0_aE0dPsT8XtlRNOIMWlwJEXNt7a9E/s640/zip+file.png" width="640" /></a></div>
<br />
You can then download the zip file manually or by using EPM Automate:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGW4JQ0Q58QbjLMYcRMY3JWNJ73CnlIW2C-eulFqcz-Nz5mPn4eZgPMU1u-y2LCqfOR4o6NRfxF5QUJYlILtD3WheFjcjOkbadwKKAmh5MBpRzPthz737UoMwlNVm9eC-9rDGxTvIe3iF4/s1600/epm+automate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="102" data-original-width="664" height="97" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGW4JQ0Q58QbjLMYcRMY3JWNJ73CnlIW2C-eulFqcz-Nz5mPn4eZgPMU1u-y2LCqfOR4o6NRfxF5QUJYlILtD3WheFjcjOkbadwKKAmh5MBpRzPthz737UoMwlNVm9eC-9rDGxTvIe3iF4/s640/epm+automate.png" width="640" /></a></div>
<br />
<br />
Finally, here is the contents of the zip file. All my folders and reports on one handy place ready to be moved to another location or system. Easy peasy!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp664PCQCAVBMzmHbFHtvK9HAs-44iN75EvZZ6_67_nwc_MjAH2TnWQ7qID-LyJM1XPSy3e-37EUqcXoCTdgpiVWZLzgtkTfnq1hqOXHap3y_RrUNLtUvobApAjo5OTWLzLZ4L55QsDnvD/s1600/expanded+zip.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="270" data-original-width="930" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp664PCQCAVBMzmHbFHtvK9HAs-44iN75EvZZ6_67_nwc_MjAH2TnWQ7qID-LyJM1XPSy3e-37EUqcXoCTdgpiVWZLzgtkTfnq1hqOXHap3y_RrUNLtUvobApAjo5OTWLzLZ4L55QsDnvD/s640/expanded+zip.png" width="640" /></a></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com5tag:blogger.com,1999:blog-7033364975447167607.post-32716752970852593692017-04-03T22:15:00.004+01:002019-03-26T16:28:45.605+00:00Essbase Cloud Service (OAC): It's PaaS not SaaS. How does that affect me?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW-yImlxUWB3NFh7fGyNtjVE632BBhrvyy-0zjK5FKVZfZeqXNjr6lTVnibH9-ng5eqy1_L8LGKI775aTU_NF_0SZtw5WJbsVI2S3_R_KOAZh_mgMPDtYcr0MDxT4ujb62q21crAsMjURm/s1600/cubeCloud.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW-yImlxUWB3NFh7fGyNtjVE632BBhrvyy-0zjK5FKVZfZeqXNjr6lTVnibH9-ng5eqy1_L8LGKI775aTU_NF_0SZtw5WJbsVI2S3_R_KOAZh_mgMPDtYcr0MDxT4ujb62q21crAsMjURm/s320/cubeCloud.jpg" width="320" /></a></div>
<br />
<i>Edit: 26/03/19. A lot has changed since this blog was written in 2017. The pricing structure has reduced considerably and Autonomous makes deployment extremely easily. See my more recent blogs for details.</i><br />
<br />
There's been a lot of buzz recently about the Oracle Analytics Cloud (Essbase cloud service) and rightly so. What's not to like about a combination of Essbase 12c, DVCS (Data Visualization Cloud Service) and BICS (BI Cloud Service) all wrapped up in a cuddly cloud service bundle?<br />
<br />
There are some great blogs which go through all of the new Essbase features in OAC (listed below) but I haven't seen anything out there yet which talks about what you need to consider before you use the service.<br />
<br />
Up to now, EPM cloud services (PBCS, FCCS etc) have all used a simple SaaS model. You only need to consider two things:<br />
<br />
1. Which application service do I need (PBCS/FCCS...)?<br />
2. How many users will access the application?<br />
<br />
OAC uses the PaaS (Platform as a Service) model and requires a little more thought. You will need to consider the following:<br />
<br />
1. Which edition do I need (Standard/Enterprise)?<br />
2. Do I want a metered service or non-metered?<br />
3. How much compute power do I need (CPU/RAM)?<br />
4. How much disk space will I need for my Essbase cubes?<br />
5. How much disk space will I need for my Oracle database instance (DBCS)?<br />
6. How much disk space will I need for my backups?<br />
<br />
<h4>
OACS Product</h4>
The OAC product choice (Standard vs Enterprise) is simple.<br />
Standard Edition = Essbase + DVCS.<br />
Enterprise Edition = Essbase + DVCS + BICS + Day by Day (new mobile app).<br />
<br />
<h4>
Metered or Non-Metered?</h4>
The core features are the same for both, it's just the billing model that changes.<br />
<br />
<h4>
DBCS</h4>
Getting a bit more complicated now...Database Cloud Service? I thought I'd bought Essbase! Well just like on-prem the various OAC components (DVCS, BICS, Essbase) will need a relational repository to store configuration information. You might also want to use it to model/process data before loading into Essbase or use it as another data source for BICS.<br />
<br />
<h4>
IaaS</h4>
The IaaS component comprises of compute (CPU and RAM) and disk (block storage, compute storage, backup storage). If you've got big complex cubes you'll need to ramp up on your compute and disk. There might be some life left in EPM infrastructure consultants afterall!<br />
<br />
Oracle offers various CPU + RAM bundles called shapes.<br />
<br />
All-purpose compute shapes include:<br />
<br />
OC3: 1 OCPU and 7.5 GB memory<br />
OC4: 2 OCPUs and 15 GB memory<br />
OC5: 4 OCPUs and 30 GB memory<br />
OC6: 8 OCPUs and 60 GB memory<br />
<br />
Memory-intensive compute shapes include:<br />
<br />
OC1M: 1 OCPUs and 15 GB memory<br />
OC2M: 2 OCPU and 30 GB memory<br />
OC3M: 4 OCPUs and 60 GB memory<br />
OC4M: 8 OCPUs and 120 GB memory<br />
<br />
If you're used to Exalytics sized boxes then these shapes will look tiny. An OCPU provides CPU capacity equivalent to one physical core of an Intel Xeon processor with hyper threading enabled. You can scale the shape up or down after you've created the service instance if your business needs change.<br />
<br />
As far as I can tell you have an unlimited number of users if you access via Smart View/DVCS/BICS. However, if you have the standard edition you are limited to 50 users of the Data Visualization Desktop. Again you'll need to ramp up your compute power as the number of users increases.<br />
<br />
<h4>
Patching</h4>
Yes you'll need to patch your instance! Don't worry though, there's no sign of a command line or opatch here. You will be notified when a new patch is available and the patching process is a click of a button in the Administration menu. To roll-back the patch click Rollback.<br />
<br />
<h4>
Cost</h4>
So what will you be paying for? At the beginning of the blog I called this a cuddly cloud bundle.<br />
<br />
<b><span style="font-size: large;">cuddly</span></b><br />
<i>adjective</i><br />
"endearing and pleasant to cuddle, especially as a result of being soft or plump."<br />
<br />
Well, I'm not sure about it being soft but it's definitely plump. You'll need to subscribe to the following:<br />
<br />
<ul>
<li>Oracle Analytics Cloud Service</li>
<li>Oracle Database Cloud Service</li>
<li>Oracle Database Backup Service</li>
<li>Oracle Compute Cloud Service</li>
<li>Oracle Storage Cloud Service</li>
</ul>
<div>
<br /></div>
<h4>
I need more info!</h4>
You can find a whole lot more information here: <a href="https://cloud.oracle.com/oac">https://cloud.oracle.com/oac</a><br />
<br />
and the documentation link is here: <a href="http://docs.oracle.com/cloud/latest/analytics-cloud/index.html">http://docs.oracle.com/cloud/latest/analytics-cloud/index.html</a><br />
<br />
Here is the blogroll from some Essbase/BI gurus who have access to a pre-release version:<br />
<br />
<a href="https://womaninepm.com/2017/03/17/oac-series-finally-released">https://womaninepm.com/2017/03/17/oac-series-finally-released</a><br />
<a href="http://redpillanalytics.com/introducing-oracle-analytics-cloud/">http://redpillanalytics.com/introducing-oracle-analytics-cloud/</a><br />
<a href="http://integrationmadesimple.blogspot.com/2017/03/oac-metadata-management.html">http://integrationmadesimple.blogspot.com/2017/03/oac-metadata-management.html</a><br />
<a href="http://www.cubecoder.com/essbase-cloud-for-the-on-prem-crowd/">http://www.cubecoder.com/essbase-cloud-for-the-on-prem-crowd/</a><br />
<a href="http://bimobilelabs.com/post/158484477555/OACMobileOptions">http://bimobilelabs.com/post/158484477555/OACMobileOptions</a><br />
<a href="http://glennschwartzbergs-essbase-blog.blogspot.com/2017/03/essbase-cloud-service-is-it-here-or.html">http://glennschwartzbergs-essbase-blog.blogspot.com/2017/03/essbase-cloud-service-is-it-here-or.html</a><br />
<a href="https://epmsxsw.com/2017/03/17/you-down-with-oac-yeah-you-know-me">https://epmsxsw.com/2017/03/17/you-down-with-oac-yeah-you-know-me</a><br />
<a href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization">https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization</a><br />
<a href="http://camerons-blog-for-essbase-hackers.blogspot.co.uk/2017/03/head-in-essbase-cloud-no-1-blessed-event.html">http://camerons-blog-for-essbase-hackers.blogspot.co.uk/2017/03/head-in-essbase-cloud-no-1-blessed-event.html</a><br />
<br />
That's all for now, I'll update the blog as more information becomes available.Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com6tag:blogger.com,1999:blog-7033364975447167607.post-71346351673696474822017-01-24T20:21:00.000+00:002017-01-24T20:21:16.477+00:00The Mysterious Case of the Essbase Hang<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgX1SVB8x7PNWK4qW7PX47mOOLzszJ_uLxrTwB9Pn9MRjCDVnEm3uvF6J8dpIQmtUfZMcUyz8q5IcUsZTY23r0KedXBm3lMIheyDLs8U-PP9KFk1I22xfEmhWSJHjg63cXuI0B8WtLCzyv/s1600/sherlock.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgX1SVB8x7PNWK4qW7PX47mOOLzszJ_uLxrTwB9Pn9MRjCDVnEm3uvF6J8dpIQmtUfZMcUyz8q5IcUsZTY23r0KedXBm3lMIheyDLs8U-PP9KFk1I22xfEmhWSJHjg63cXuI0B8WtLCzyv/s1600/sherlock.png" /></a></div>
<br />
You would think that this was from the archives given that we're talking about an unpatched version of Essbase 11.1.2.2 but no, this happened recently. A customer had been using Essbase quite happily for years on an unpatched version of Essbase 11.1.2.2 when one day it stopped working.<br />
<br />
The symptoms were strange, the applications and databases would startup correctly and it was possible to retrieve data and export all data but as soon as data was sent into the application via spreadsheet lock and send or via a load rule then the application would hang and CPU would spike. There were no error messages in any of the application or server logs and the only way to get the application back was to kill the ESSSVR process. This meant you could retrieve data but you would be back to square one if you tried loading or calculating anything...not much use really.<br />
<br />
After some head scratching and questioning of the IT department it turned out that they had recently applied a package to the Linux kernel. With this information MOS came to the rescue:<br />
<br />
<b>Essbase Dataloads and Calculations Hang or Spike CPU to 100% after Applying Linux Operating System Package (glibc-2.5-107) (Doc ID 1531236.1)</b><br />
<br />
We rolled back all the glibc packages and Essbase started working again as if by magic.<br />
<br />
Thankfully this client is now one of our Manged Services customers and we shall soon be upgrading them to Essbase 11.1.2.4 where Linux kernel issues should be a thing of the past.<br />
<br />
<b><i>Case closed. Watson, go make me a cup of tea...</i></b>Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com1tag:blogger.com,1999:blog-7033364975447167607.post-65444830730160586832016-12-22T11:32:00.002+00:002016-12-22T11:44:24.539+00:00PBCS Drill-Through not Working to On-Prem FDMEEOne of the nice things about FDMEE is that it can be used to load data into PCBS, EPBCS and the next patch will enable loading to FCCS.<br />
<br />
Just like on-prem Planning you can use drill-through to look at the detailed rows of data that FDMEE loaded from your source to your PBCS base member. We recently encountered an issue where the drill-through worked fine when drilling down to FDMEE data in a webform but the drill-through failed when launching the drill-through via Smart View. There was no error message, but instead of drilling into the load details of our on-prem FDMEE instance the drill-through webpage just took us to the PBCS homepage.<br />
<br />
Fortunately there was a simple fix. We were using Firefox and the Firefox Smart View add-in was disabled. You need to enable the Smart View plugin within the Firefox add-ins. Once this is enabled you'll be able to drill-through to all the lovely detail from Smart View PBCS to FDMEE.<br />
<br />
Whilst this test was using on-prem FDMEE it is probably the same situation with PBCS data management, just make sure your Smart View add-in is enabled in Firefox:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOO7wCWvaSCQArDrpx4JiD_HHHc3Hgduiojm7hYzvi-x9r9EoH0OQMX6jgRbLcHCDQaS256gd1hJQZEi5YQMJ95_Vg43KJdffjesEbEZ4mz3hIZfqfrdaDsYFiG0FyjUJGHjNab6It_ufq/s1600/Smart+View+Add-in.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOO7wCWvaSCQArDrpx4JiD_HHHc3Hgduiojm7hYzvi-x9r9EoH0OQMX6jgRbLcHCDQaS256gd1hJQZEi5YQMJ95_Vg43KJdffjesEbEZ4mz3hIZfqfrdaDsYFiG0FyjUJGHjNab6It_ufq/s640/Smart+View+Add-in.png" width="640" /></a></div>
<br />Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com2tag:blogger.com,1999:blog-7033364975447167607.post-15909168297352081112016-11-23T17:23:00.000+00:002016-11-23T21:50:40.654+00:00Where did my Planning Job Console History Go?Quick post on getting purged history from the Planning Job Console...<br>
<br>
Planning has a nice feature which is the Job Console. In the Job Console page (Tools-> Job Console) you can check the status (processing, completed, or error) of these job types: Business Rules, Clear Cell Details, Copy Data, Push Data and Planning Refresh.<br>
<br>
By default, the job console will delete all information on any completed jobs older than 4 days. This isn't good if you need to troubleshoot an issue or check a transaction completed before this period. However, the history gets moved to another table in the Planning repository called HSP_HISTORICAL_JOB_STATUS. The table stores the user accounts as objectIDs so we can join it with the HSP_OBJECTS table to get the job history with friendly userIDs.<br>
<br>
Here is the SQL to retrieve all the history:<br>
<br>
<div class="MsoNormal">
<span style="color: blue; font-family: "consolas"; font-size: 9.5pt;">select</span><span style="font-family: "consolas"; font-size: 9.5pt;"> HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>JOB_ID<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>PARENT_JOB_ID<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>JOB_NAME<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>JOB_TYPE<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_Object<span style="color: grey;">.</span><span style="color: magenta;">OBJECT_NAME</span><span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>START_TIME<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>END_TIME<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>RUN_STATUS<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>DETAILS<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>ATTRIBUTE_1<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>ATTRIBUTE_2<span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span><span style="color: green;">PARAMETERS</span><span style="color: grey;">,</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>JOB_SCHEDULER_NAME<o:p></o:p></span></div>
<div class="MsoNormal">
<br></div>
<div class="MsoNormal">
<span style="color: blue; font-family: "consolas"; font-size: 9.5pt;">from</span><span style="font-family: "consolas"; font-size: 9.5pt;"> HSP_HISTORICAL_JOB_STATUS<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;">INNER</span><span style="font-family: "consolas"; font-size: 9.5pt;"> <span style="color: grey;">JOIN</span> HSP_Object<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: blue; font-family: "consolas"; font-size: 9.5pt;">ON</span><span style="font-family: "consolas"; font-size: 9.5pt;"> HSP_Object<span style="color: grey;">.</span><span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">=</span>HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span><span style="color: magenta;">USER_ID</span><o:p></o:p></span></div>
<br>
<div class="MsoNormal">
<span style="color: blue; font-family: "consolas"; font-size: 9.5pt;">ORDER</span><span style="font-family: "consolas"; font-size: 9.5pt;"> <span style="color: blue;">BY</span>
HSP_HISTORICAL_JOB_STATUS<span style="color: grey;">.</span>END_TIME<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "consolas"; font-size: 9.5pt;"><br></span>
<span style="font-family: "consolas"; font-size: 9.5pt;">and this is what the output looks like:</span><br>
<span style="font-family: "consolas"; font-size: 9.5pt;"><br></span></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvILZckFJbmAqSQQrP7ocTmVLB74byVEotlVUnwdAKJL6cD0LcHsfcaLC7VEoRojATQFJg37knXw2EL1B8KiB99mMQtD9-O0BXJDlifKMzQqYDh8r0Uik2Jsw8i7Ia25kNGSFr3EsKP97y/s1600/Historic+Job+Console+Output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvILZckFJbmAqSQQrP7ocTmVLB74byVEotlVUnwdAKJL6cD0LcHsfcaLC7VEoRojATQFJg37knXw2EL1B8KiB99mMQtD9-O0BXJDlifKMzQqYDh8r0Uik2Jsw8i7Ia25kNGSFr3EsKP97y/s640/Historic+Job+Console+Output.png" width="640"></a></div>
<br>
To save you from having to do this you can increase the length of history that is stored in the HSP_JOB_STATUS from the default of 4 days to whatever you choose by setting the <b>JOB_STATUS_MAX_AGE</b> in the Planning application properties. All the details can be found here:<br>
<br>
<a href="http://docs.oracle.com/cd/E57185_01/PLAAG/ch02s08s08.html">http://docs.oracle.com/cd/E57185_01/PLAAG/ch02s08s08.html</a><br>
<br></div>
Guillaume Slee @epm_bihttp://www.blogger.com/profile/15577254287696295066noreply@blogger.com6