<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des Oracle - dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/category/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/category/oracle/</link>
	<description></description>
	<lastBuildDate>Fri, 10 Apr 2026 06:28:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/05/cropped-favicon_512x512px-min-32x32.png</url>
	<title>Archives des Oracle - dbi Blog</title>
	<link>https://www.dbi-services.com/blog/category/oracle/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>OGG-30007 : How To Register Certificates In GoldenGate ?</title>
		<link>https://www.dbi-services.com/blog/ogg-30007-how-to-register-certificates-in-goldengate/</link>
					<comments>https://www.dbi-services.com/blog/ogg-30007-how-to-register-certificates-in-goldengate/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 06:39:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ca]]></category>
		<category><![CDATA[Certificate]]></category>
		<category><![CDATA[intermediate]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[ogg-30007]]></category>
		<category><![CDATA[PEM]]></category>
		<category><![CDATA[truststore]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43737</guid>

					<description><![CDATA[<p>After working on a GoldenGate deployment recently, I felt that the OGG-30007 error would be worth writing about. This error happens when registering certificates in GoldenGate. Whether you do it from the web UI or with the REST API, this GoldenGate error is detailed as such: This error occurs because GoldenGate expects exactly one PEM [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ogg-30007-how-to-register-certificates-in-goldengate/">OGG-30007 : How To Register Certificates In GoldenGate ?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>After working on a GoldenGate deployment recently, I felt that the <code>OGG-30007</code> error would be worth writing about. This error happens when <a href="https://docs.oracle.com/en/database/goldengate/core/26/coredoc/deploy-add-ca-certificate.html" target="_blank" rel="noreferrer noopener">registering certificates in GoldenGate</a>. Whether you do it from the web UI or with the REST API, this GoldenGate error is detailed as such:</p>



<pre class="wp-block-code"><code>Processing of the certificate PEM portion of the certificate bundle resulted in more than one (1) certificate objects.

Code: OGG-30007

Cause: The read and decode processing of the specified portion of the certificate bundle produced more than one (1) objects. More than one PEM encoded object is present in the data.

Action: Review the specified portion of the certificate bundle and correct as needed. Only a single PEM encoded object is expected.</code></pre>



<p>This error occurs because GoldenGate expects exactly <strong>one PEM object per import</strong>, while a certificate chain file contains multiple certificates. In the web UI, a pop-up will alert you that something is wrong:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="367" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_ogg30007-1-1024x367.png" alt="" class="wp-image-43739" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_ogg30007-1-1024x367.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_ogg30007-1-300x108.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_ogg30007-1-768x275.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_ogg30007-1.png 1490w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>As mentioned, this typically happens when registering a certificate chain. For instance, you could face the issue when <strong>connecting two deployments secured with NGINX</strong>. The server presents a certificate chain including the intermediate, while the client (GoldenGate) must trust both the root and the intermediate.</p>



<p>But when the Certificate Authority doesn&#8217;t sign your certificate directly with the <strong>Root Certificate</strong>, but with an <strong>Intermediate Certificate</strong>, the server presents a certificate chain including the intermediate. A certificate like the following will generate an <code>OGG-30007</code> error if you try to add it to the truststore:</p>



<pre class="wp-block-code"><code>-----BEGIN CERTIFICATE-----
(intermediate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root)
-----END CERTIFICATE-----</code></pre>



<p>And to make sure that your connections work, you should <strong>not only add the root certificate, but also the intermediate certificate</strong>. Because of the way GoldenGate stores these certificates, two separate entries must be created in the truststore. To ease monitoring and certificate management, you can name them <code>rootCA_ogg_target</code> and <code>intermediateCA_ogg_target</code></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="145" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA-1024x145.png" alt="" class="wp-image-43740" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA-1024x145.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA-300x43.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA-768x109.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA-1536x218.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_webui_root_and_intermediate_CA.png 2044w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>With this, you should have no problem connecting GoldenGate deployments ! To avoid <code>OGG-30007</code>, ensure that each certificate is imported separately. In practice, this means <strong>extracting the root and intermediate certificates from the chain</strong> file and <strong>registering them as individual entries</strong> in the GoldenGate truststore.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ogg-30007-how-to-register-certificates-in-goldengate/">OGG-30007 : How To Register Certificates In GoldenGate ?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/ogg-30007-how-to-register-certificates-in-goldengate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Overcome GoldenGate 26ai Bug On Custom Profiles</title>
		<link>https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/</link>
					<comments>https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 06:56:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[add profile]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[custom profile]]></category>
		<category><![CDATA[hang]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43587</guid>

					<description><![CDATA[<p>In GoldenGate, processes have a few options that can be managed to fit your needs. When creating an extract, for instance, you can act on the following parameters: In the web UI, an extract profile can be customized during the third step of an extract creation called Managed Options. Here, you can choose to use [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/">Overcome GoldenGate 26ai Bug On Custom Profiles</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In GoldenGate, processes have a few options that can be managed to fit your needs. When creating an extract, for instance, you can act on the following parameters:</p>



<ul class="wp-block-list">
<li><code>autoStart.enabled</code>: whether the process will start automatically after the Administration Server starts.</li>



<li><code>autoStart.delay</code>: delay in seconds before starting the process.</li>



<li><code>autoRestart.enabled</code>: whether to restart the process after it fails.</li>



<li><code>autoRestart.onSuccess</code>: the process is only restarted if it fails.</li>



<li><code>autoRestart.delay</code>: waiting time (in seconds) before attempting to restart a process once it fails.</li>



<li><code>autoRestart.retries</code>: maximum number of retries before stopping restart attempts.</li>



<li><code>autoRestart.window</code>: timeframe before GoldenGate will attempt to restart the process again.</li>



<li><code>autoRestart.disableOnFailure</code>: if set to True, GoldenGate will disable the restart if it fails to restart within the <code>retries</code>/<code>window</code> setting. You will have to start the process manually if this happens.</li>
</ul>



<p>In the web UI, an extract profile can be customized during the third step of an extract creation called <em><strong>Managed Options</strong></em>. Here, you can choose to use the default profile, a user-defined profile or custom settings specific to the new process.</p>



<p>However, <strong>a bug was introduced in GoldenGate 26ai</strong>. If you <strong>create a custom profile with the <code>adminclient</code></strong>, the web UI will sometimes hang when creating any new extract or replicat. This also affects 23ai installations that are patched to 26ai, so be very careful when patching an existing GoldenGate 23ai setup containing custom profiles ! After patching, you will not<strong> be able to access and manage </strong>your profiles<strong> </strong>anymore <strong>from the web UI</strong>.</p>



<h2 class="wp-block-heading" id="h-what-is-the-bug-exactly">What is the bug exactly ?</h2>



<p>To reproduce the bug, simply create an extract from the <code>adminclient</code>.</p>



<pre class="wp-block-code"><code>OGG (https://vmogg ogg_test_01) 1&gt; info profile *
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Auto&nbsp;&nbsp;&nbsp;&nbsp; Delay&nbsp;&nbsp;&nbsp;&nbsp; Auto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wait&nbsp;&nbsp;&nbsp;&nbsp; Reset&nbsp;&nbsp;&nbsp;&nbsp; Disable
Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp; Seconds&nbsp; Restart&nbsp;&nbsp; Retries&nbsp;&nbsp; Seconds&nbsp;&nbsp; Seconds&nbsp; on Failure
--------------------------------&nbsp; -----&nbsp; --------&nbsp; -------&nbsp; --------&nbsp; --------&nbsp; --------&nbsp; ----------
Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No
OGG (https://vmogg ogg_test_01) 2&gt; add profile TestProfile autostart no
OGG (https://vmogg ogg_test_01) 3&gt; info profile *
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Auto&nbsp;&nbsp;&nbsp;&nbsp; Delay&nbsp;&nbsp;&nbsp;&nbsp; Auto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wait&nbsp;&nbsp;&nbsp;&nbsp; Reset&nbsp;&nbsp;&nbsp;&nbsp; Disable
Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp; Seconds&nbsp; Restart&nbsp;&nbsp; Retries&nbsp;&nbsp; Seconds&nbsp;&nbsp; Seconds&nbsp; on Failure
--------------------------------&nbsp; -----&nbsp; --------&nbsp; -------&nbsp; --------&nbsp; --------&nbsp; --------&nbsp; ----------
Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No
TestProfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No</code></pre>



<p>In a GoldenGate 23ai web UI, you will see the following when creating an extract, in the <em><strong>Managed Options</strong></em> step:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="417" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_add_extract_23ai_working-4-1024x417.png" alt="" class="wp-image-43713" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_add_extract_23ai_working-4-1024x417.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_add_extract_23ai_working-4-300x122.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_add_extract_23ai_working-4-768x313.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_add_extract_23ai_working-4.png 1213w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>However, in GoldenGate 26ai, the extract creation hangs indefinitely, and no error gets reported.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="397" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug-1024x397.png" alt="" class="wp-image-43714" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug-1024x397.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug-300x116.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug-768x298.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug-1536x596.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_add_extract_26ai_bug.png 1542w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Before the bug is solved by Oracle, <strong>what can you do</strong> ? The first thing you can do is <a href="https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/" target="_blank" rel="noreferrer noopener">modify the <code>Default</code> GoldenGate profile</a>, so that all extracts with this profile are affected. However, it means that you cannot fine-tune the settings for different processes, with different needs. After all, it is the reason why you should define profiles in the first place.</p>



<h2 class="wp-block-heading" id="h-is-there-a-workaround">Is there a workaround ?</h2>



<p>But if you still want to overcome this bug and having working profiles on 26ai until the bug gets corrected, you have two ways of doing this:</p>



<ul class="wp-block-list">
<li>Create profiles from the web UI. You can do this in the <em><strong>Managed Process Profiles</strong></em> tab of your deployment. Profiles created through this tab do not make the web UI hang indefinitely.</li>



<li>Create profiles with the REST API. As presented in <a href="https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/">this blog</a>, you can do this in two steps :
<ul class="wp-block-list">
<li>Creation of a new profile with the <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-config-types-type-values-value-post.html" target="_blank" rel="noreferrer noopener">Create Configuration Value</a> endpoint on the <code>ogg:managedProcessSettings</code> type.</li>



<li>Creation of a new configuration <code>isDefault</code> set to <code>False</code> on the <code>ogg:<span style="background-color: initial;font-family: inherit;font-size: inherit;text-align: initial;color: initial">configDataDescription</span></code> type.</li>
</ul>
</li>
</ul>



<p>This way, you can create or recreate your profiles until the bug is solved.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/">Overcome GoldenGate 26ai Bug On Custom Profiles</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Monitoring GoldenGate Certificates Expiration</title>
		<link>https://www.dbi-services.com/blog/monitoring-goldengate-certificates-expiration/</link>
					<comments>https://www.dbi-services.com/blog/monitoring-goldengate-certificates-expiration/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 07:09:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Certificate]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[restapi]]></category>
		<category><![CDATA[truststore]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43627</guid>

					<description><![CDATA[<p>Your GoldenGate certificates should be granted by a trusted Certificate Authority, which normally handles the monitoring of certificates. However, if you don&#8217;t want your future you, or a colleague, to spend too much time debugging which certificate should be renewed, you could monitor your certificates. In this blog, I will present a way to do [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/monitoring-goldengate-certificates-expiration/">Monitoring GoldenGate Certificates Expiration</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Your GoldenGate certificates should be <strong>granted by a trusted Certificate Authority</strong>, which normally handles the monitoring of certificates. However, if you don&#8217;t want your future you, or a colleague, to spend too much time debugging which certificate should be renewed, you could monitor your certificates. In this blog, I will present a way to do this with the REST API.</p>



<h2 class="wp-block-heading" id="h-certificates-types-in-goldengate">Certificates types in GoldenGate</h2>



<p>The first thing you need to know is that there are three types of certificates in a GoldenGate deployment. Each of them can be monitored separately in the REST API.</p>



<ul class="wp-block-list">
<li><strong>Server Certificates</strong>, which belong to the <code>server</code> type</li>



<li><strong>Client Certificates</strong>, which belong to the <code>client</code> type</li>



<li><strong>CA Certificates</strong>, which belong to the <code>truststore</code> type</li>
</ul>



<h2 class="wp-block-heading" id="h-certificate-monitoring-from-the-web-ui">Certificate monitoring from the web UI</h2>



<p>Before presenting the REST API monitoring of certificates, let&#8217;s see what we are supposed to be looking at. From the web UI, when <strong>connected to the Service Manager</strong>, you can observe the details of your certificates in the <em><strong>Certificate Management</strong></em> tab. I give below an example for both the Service Manager and a deployment in a secure GoldenGate installation.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="217" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1-1024x217.png" alt="" class="wp-image-43728" style="object-fit:cover" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1-1024x217.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1-300x63.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1-768x162.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1-1536x325.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_sm_certificates-1.png 1749w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="394" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1-1024x394.png" alt="" class="wp-image-43729" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1-1024x394.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1-300x116.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1-768x296.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1-1536x591.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_deployment_certificates-1.png 1901w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>I create short-term certificates on purpose for the example, and we see that the UI is designed to tell the user when the certificates are close to expiration. But of course, it&#8217;s better to have some sort of monitoring do the job for us.</p>



<h2 class="wp-block-heading" id="h-certificate-monitoring-with-the-rest-api">Certificate monitoring with the REST API</h2>



<p>With GoldenGate REST API, it is rather easy to monitor certificate expiration. Unfortunately, you <strong>cannot ask the API for a list of certificates close to expiration</strong>, so you will have to iterate over all certificates in your monitoring script.</p>



<p>I will use the Python client I presented in another blog, but you can of course rebuild each call manually. Here are the methods / endpoints you should use:</p>



<ul class="wp-block-list">
<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-deployments-get.html" target="_blank" rel="noreferrer noopener">List Deployments</a> &#8211; <code>GET /services/{version}/deployments</code>, to retrieve the list of deployments. The Service Manager is considered as a normal deployment here, so there is no need to separate it from the other deployments.</li>



<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-deployments-deployment-certificates-get.html" target="_blank" rel="noreferrer noopener">Retrieve Available Certificate Types</a> &#8211; <code>GET /services/{version}/deployments/{deployment}/certificates</code>, to retrieve the collection of certificate types. It should always be the list given earlier (<code>client</code>, <code>server</code> and <code>truststore</code>).</li>



<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-deployments-deployment-certificates-type-get.html" target="_blank" rel="noreferrer noopener">Retrieve Certificate Types</a> &#8211; <code>GET /services/{version}/deployments/{deployment}/certificates/{type}</code>, to get the <strong>list of certificates that belong to a specific type</strong> inside a deployment.</li>



<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-deployments-deployment-certificates-type-certificate-info-get.html" target="_blank" rel="noreferrer noopener">Retrieve Certificate Information</a> &#8211; <code>GET /services/{version}/deployments/{deployment}/certificates/{type}/{certificate}/info</code>, to retrieve the information on a specific certificate.</li>
</ul>



<p>I share below a full monitoring script that you can use to monitor all certificates in a GoldenGate setup. Feel free to adapt it to your own monitoring tool.</p>



<pre class="wp-block-code"><code>#!/usr/bin/env python3
"""
Oracle GoldenGate Certificate Monitoring Script
"""

from datetime import datetime, timezone
import sys

from oggrestapi import OGGRestAPI

if __name__ == '__main__':
    exit_code = 0  # 0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN

    try:
        # Initialize the OGG REST API client
        ogg_client = OGGRestAPI(
            url='https://vmogg:7809',
            username='ogg',
            password='ogg',
            verify_ssl=False)

        # Retrieve the list of deployments
        deployments = ogg_client.list_deployments()
        print(f"Deployments: {&#091;d&#091;'name'] for d in deployments]}")

        # For each deployment, retrieve the list of certificates and check their expiration dates
        for deployment in deployments:
            deployment_name = deployment&#091;'name']
            print(f"    Checking certificates for deployment: {deployment_name}")

            certificate_types = ogg_client.retrieve_available_certificate_types_deployment(
                deployment=deployment_name)
            print(f"    Certificate types for deployment {deployment_name}: {&#091;ct&#091;'name'] for ct in certificate_types]}")
            for cert_type in certificate_types:
                cert_type_name = cert_type&#091;'name']
                print(f"        Checking certificates for type: {cert_type_name}")
                certificates = ogg_client.retrieve_certificate_types(
                    deployment=deployment_name,
                    type=cert_type_name)
                for cert in certificates:
                    cert_name = cert&#091;'name']
                    print(f"            Certificate: {cert_name}")
                    certificate_information = ogg_client.retrieve_certificate_information_deployment(
                        deployment=deployment_name,
                        type=cert_type_name,
                        certificate=cert_name)
                    expiration_date = certificate_information&#091;'certificate']&#091;'validTo']
                    print(f"                Certificate Expiry Date: {expiration_date}")
                    expire_in = datetime.strptime(expiration_date, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc) - datetime.now(timezone.utc)
                    is_expired = expire_in.total_seconds() &lt; 0

                    if is_expired:
                        print(f"                WARNING: Certificate '{cert_name}' in deployment '{deployment_name}' of type '{cert_type_name}' has expired on {expiration_date}")
                        exit_code = max(exit_code, 2)  # CRITICAL
                    else:
                        days_left = int(expire_in.total_seconds() / 86400)
                        print(f"                Certificate '{cert_name}' in deployment '{deployment_name}' of type '{cert_type_name}' will expire in {days_left} days on {expiration_date}")
                        if days_left &lt; 30:
                            exit_code = max(exit_code, 1)  # WARNING

    except Exception as e:
        print(f"UNKNOWN: {e}")
        sys.exit(3)

    sys.exit(exit_code)</code></pre>



<p>On an installation where certificates are close to expire, the output looks like this:</p>



<pre class="wp-block-code"><code>Deployments: &#091;'ServiceManager', 'ogg_test_01']
    Checking certificates for deployment: ServiceManager
    Certificate types for deployment ServiceManager: &#091;'client', 'server', 'truststore']
        Checking certificates for type: client
        Checking certificates for type: server
            Certificate: default
                Certificate Expiry Date: 2026-03-31T05:54:15Z
                Certificate 'default' in deployment 'ServiceManager' of type 'server' will expire in 0 days on 2026-03-31T05:54:15Z
        Checking certificates for type: truststore
    Checking certificates for deployment: ogg_test_01
    Certificate types for deployment ogg_test_01: &#091;'client', 'server', 'truststore']
        Checking certificates for type: client
            Certificate: default
                Certificate Expiry Date: 2026-03-31T05:54:15Z
                Certificate 'default' in deployment 'ogg_test_01' of type 'client' will expire in 0 days on 2026-03-31T05:54:15Z
        Checking certificates for type: server
            Certificate: default
                Certificate Expiry Date: 2026-03-31T05:54:15Z
                Certificate 'default' in deployment 'ogg_test_01' of type 'server' will expire in 0 days on 2026-03-31T05:54:15Z
        Checking certificates for type: truststore
            Certificate: XCertUser-467fd0986deb
                Certificate Expiry Date: 2026-03-31T05:54:15Z
                Certificate 'XCertUser-467fd0986deb' in deployment 'ogg_test_01' of type 'truststore' will expire in 0 days on 2026-03-31T05:54:15Z
            Certificate: installed_0
                Certificate Expiry Date: 2026-03-31T05:54:15Z
                Certificate 'installed_0' in deployment 'ogg_test_01' of type 'truststore' will expire in 0 days on 2026-03-31T05:54:15Z</code></pre>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/monitoring-goldengate-certificates-expiration/">Monitoring GoldenGate Certificates Expiration</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/monitoring-goldengate-certificates-expiration/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Change GoldenGate Default Extract Profile</title>
		<link>https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/</link>
					<comments>https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 06:31:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[autorestart]]></category>
		<category><![CDATA[autostart]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[restapi]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43567</guid>

					<description><![CDATA[<p>As part of a GoldenGate setup automation, changing the Default profile of your extracts and replicats seems like a good start if you don&#8217;t want to deal with custom profiles or changing each individual configuration. Unfortunately, there is no easy way to modify an existing profile from the adminclient (there is no alter profile command). [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/">Change GoldenGate Default Extract Profile</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As part of a GoldenGate setup automation, changing the <code>Default</code> profile of your extracts and replicats seems like a good start if you don&#8217;t want to deal with custom profiles or changing each individual configuration.</p>



<p>Unfortunately, there is no easy way to modify an existing profile from the <code>adminclient</code> (there is no <code>alter profile</code> command). The <code>Default</code> profile makes no exception, so you will have to use the REST API for this. In this blog, I will present two ways of doing it:</p>



<ul class="wp-block-list">
<li>Updating the <code>Default</code> profile directly.</li>



<li>Creating a custom profile, and setting it as <code>Default</code>.</li>
</ul>



<p>Using the Python client for GoldenGate I presented in another <a href="https://www.dbi-services.com/blog/production-ready-goldengate-rest-client-in-python/" target="_blank" rel="noreferrer noopener">blog post</a>, you can easily create a session connecting to your GoldenGate setup and retrieve the existing configuration. For this, we will use the following methods / endpoints:</p>



<ul class="wp-block-list">
<li><code><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-config-types-type-values-value-get.html" target="_blank" rel="noreferrer noopener">retrieve_configuration_value</a></code> to get the current configuration (<code>GET /services/{version}/config/types/{type}/values/{value}</code>)</li>



<li><code><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-config-types-type-values-value-put.html" target="_blank" rel="noreferrer noopener">replace_configuration_value</a></code> to update the profile (<code>PUT /services/{version}/config/types/{type}/values/{value}</code>) </li>
</ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate">
from oggrestapi import OGGRestAPI

ogg_client=OGGRestAPI(
    url=&quot;https://vmogg:7810&quot;,
    username=&quot;ogg&quot;,
    password=&quot;ogg&quot;
)

ogg_client.retrieve_configuration_value(
    value=&#039;ogg:managedProcessSettings:Default&#039;,
    type=&#039;ogg:managedProcessSettings&#039;)
</pre></div>


<p>This gives us the basic configuration of all new extracts and replicats in GoldenGate. Let&#8217;s see the default values:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; ogg_client.retrieve_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:Default',
&nbsp;&nbsp;&nbsp; type='ogg:managedProcessSettings')
{'$schema': 'ogg:managedProcessSettings', 'autoStart': {'enabled': False, 'delay': 0}, 'autoRestart': {'enabled': False, 'onSuccess': False, 'delay': 0, 'retries': 9, 'window': 60, 'disableOnFailure': True}}</code></pre>



<p>Let&#8217;s have a look at the different parameters here:</p>



<ul class="wp-block-list">
<li><code>autoStart.enabled</code>: whether the process will start automatically after the Administration Server starts.</li>



<li><code>autoStart.delay</code>: delay in seconds before starting the process.</li>



<li><code>autoRestart.enabled</code>: whether to restart the process after it fails.</li>



<li><code>autoRestart.onSuccess</code>: the process is only restarted if it fails.</li>



<li><code>autoRestart.delay</code>: waiting time (in seconds) before attempting to restart a process once it fails.</li>



<li><code>autoRestart.retries</code>: maximum number of retries before stopping restart attempts.</li>



<li><code>autoRestart.window</code>: timeframe before GoldenGate will attempt to restart the process again.</li>



<li><code>autoRestart.disableOnFailure</code>: if set to True, GoldenGate will disable the restart if it fails to restart within the <code>retries</code>/<code>window</code> setting. You will have to start the process manually if this happens.</li>
</ul>



<h2 class="wp-block-heading" id="h-updating-the-default-profile-directly">Updating the <code>Default</code> profile directly</h2>



<p>To update the <code>Default</code> profile, just create your own configuration and use the following example (based on the description given above) to push it to your GoldenGate deployment. Here, for instance, <code>autoStart</code> will be delayed by 30 seconds, and the process will try to restart every 5 minutes, and stop trying to restart after six retries. It will attempt to start again after two hours.</p>



<pre class="wp-block-code"><code>ogg_client.replace_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:Default',
&nbsp;&nbsp;&nbsp; type='ogg:managedProcessSettings',
&nbsp;&nbsp;&nbsp; data={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '$schema': 'ogg:managedProcessSettings',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'autoStart': {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'enabled': True,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'delay': 30
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'autoRestart': {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'enabled': True,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'retries': 6,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'delay': 300,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'window': 7200,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'onSuccess': False,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'disableOnFailure': False
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
)</code></pre>



<p>We can check by retrieving the configuration again.</p>



<pre class="wp-block-code"><code># Checking new configuration with the REST API
ogg_client.retrieve_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:Default',
&nbsp;&nbsp;&nbsp; type='ogg:managedProcessSettings')
{'$schema': 'ogg:managedProcessSettings', 'autoStart': {'enabled': True, 'delay': 30}, 'autoRestart': {'enabled': True, 'retries': 6, 'delay': 300, 'window': 7200, 'onSuccess': False, 'disableOnFailure': False}}</code></pre>



<p>Or you can check in the web UI in the <strong><em>Managed Process Profiles</em></strong> tab.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1535" height="168" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.44.png" alt="" class="wp-image-43717" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.44.png 1535w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.44-300x33.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.44-1024x112.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.44-768x84.png 768w" sizes="auto, (max-width: 1535px) 100vw, 1535px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="959" height="545" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.46.png" alt="" class="wp-image-43718" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.46.png 959w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.46-300x170.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/Screenshot-2026-04-01-at-16.55.46-768x436.png 768w" sizes="auto, (max-width: 959px) 100vw, 959px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-setting-a-custom-profile-to-default">Setting a custom profile to <code>Default</code></h2>



<p>If for some reason you would rather keep the <code>Default</code> profile and have a custom profile as default, you have to create a new profile first and set it as default. To do this, we use the <code><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-config-types-type-values-value-post.html" target="_blank" rel="noreferrer noopener">create_configuration_value</a></code> method / endpoint, which is the same endpoint as before but with the <code>POST</code> verb. If we keep the same profile as in the previous example, here is the script to run. Only the method changes, as well as the value, where <code>Default</code> is changed with the name of your profile (<code>NewDefaultProfile</code>, here).</p>



<pre class="wp-block-code"><code>ogg_client.create_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:NewDefaultProfile',
&nbsp;&nbsp;&nbsp; type='ogg:managedProcessSettings',
&nbsp;&nbsp;&nbsp; data={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '$schema': 'ogg:managedProcessSettings',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'autoStart': {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'enabled': True,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'delay': 30
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'autoRestart': {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'enabled': True,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'retries': 6,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'delay': 300,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'window': 7200,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'onSuccess': False,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'disableOnFailure': False
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
)</code></pre>



<p>After this, you need to do two things:</p>



<ul class="wp-block-list">
<li><strong>Create</strong> the <code>isDefault</code> <strong>flag for your new profile</strong>, and set it to <code>True</code>. This is done with the same <code>create_configuration_value</code> method, but on a different type called <code>ogg:configDataDescription</code>.</li>



<li><strong>Update</strong> the <code>isDefault</code> <strong>flag for the <code>Default</code> profile</strong> to <code>False</code>. Since the property already exists, we will use the <code>replace_configuration_value</code> method.</li>
</ul>



<p>Here is how to do the creation of the flag:</p>



<pre class="wp-block-code"><code>ogg_client.create_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:NewDefaultProfile',
&nbsp;&nbsp;&nbsp; type='ogg:<span style="background-color: initial;font-family: inherit;font-size: inherit;text-align: initial;color: initial">configDataDescription</span>',
&nbsp;&nbsp;&nbsp; data={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'isDefault': True
    }
)</code></pre>



<p>And to update the <code>Default</code> profile:</p>



<pre class="wp-block-code"><code>ogg_client.replace_configuration_value(
&nbsp;&nbsp;&nbsp; value='ogg:managedProcessSettings:Default',
&nbsp;&nbsp;&nbsp; type='ogg:<span style="background-color: initial;font-family: inherit;font-size: inherit;text-align: initial;color: initial">configDataDescription</span>',
&nbsp;&nbsp;&nbsp; data={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'isDefault': False
    }
)</code></pre>



<p>From now on, any new extract or replicat will be assigned to this <code>NewDefaultProfile</code> !</p>
<p>L’article <a href="https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/">Change GoldenGate Default Extract Profile</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/change-goldengate-default-extract-profile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL Metadata Store service not able to start on an ODA</title>
		<link>https://www.dbi-services.com/blog/mysql-metadata-store-service-not-able-to-start-on-an-oda/</link>
					<comments>https://www.dbi-services.com/blog/mysql-metadata-store-service-not-able-to-start-on-an-oda/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 20:32:30 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[MySQL Metadata Store]]></category>
		<category><![CDATA[oda]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43699</guid>

					<description><![CDATA[<p>I was recently doing some consulting on some ODA at one of our customers, and I faced an issue with the DCS Agent and the MySQL Metadata Store. In this blog, I will show you the problem and how I could resolved it. Problem description On an Oracle Database Appliance, the DCS agent is the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/mysql-metadata-store-service-not-able-to-start-on-an-oda/">MySQL Metadata Store service not able to start on an ODA</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I was recently doing some consulting on some ODA at one of our customers, and I faced an issue with the DCS Agent and the MySQL Metadata Store. In this blog, I will show you the problem and how I could resolved it.</p>



<span id="more-43699"></span>



<h3>Problem description</h3>



<p>On an Oracle Database Appliance, the DCS agent is the software providing the full automation to manage the appliance. It will have no impact on the well working of the databases but is mandatory to manage the appliance (patching, create dbhome, create database and any appliance resources). The DCS agent will perform various operations on the appliance, such as provisioning, database lifecycle management, backup and recovery, and storage management. The DCS Agent will use a MySQL database to store the metadata. In order for the DCS Agent to work, the MySQL database needs to be up and running.</p>



<p>On the node 0 of an ODA X9-2-HA, where I was preparing the next database patching operation, I wanted to run some cleanup.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA-HA_node0 ~]# odacli cleanup-patchrepo -comp DB,GI -v 19.20.0.0.0
DCS-10009:Failed to create new service job report.
</pre>
</br>



<p>For which I could get a DCS failure.</p>



<p>I checked the job and realised that an ODA cleaning job where still in running status for about 3 months&#8230;</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,10]">
[root@ODA-HA_node0 ~]# odacli list-jobs

ID                                       Description                                                                 Created                             Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------------
80f2bfbc-a02e-47bb-b57c-754d3d6d3d3a     Server Patching                                                             2025-11-12 08:00:14 CET             Success
2e36d676-f175-402d-a7e4-735b4eb965de     Patch pre-checks for [STORAGE]                                              2025-11-12 08:58:19 CET             Success
...
c4611880-fdc8-44fd-90a5-c2dd27d12f7c     Auto purge job data                                                         2025-12-09 03:59:48 CET             Success
ed09f270-5eff-4141-9b7b-51a2e5d30e32     Auto purge job data                                                         2025-12-10 03:59:50 CET             Success
aecd8ca5-44fb-4e2c-af2b-0e42e954381a     Auto purge job data                                                         2025-12-11 03:59:52 CET             Running

[root@ODA-HA_node0 ~]#
</pre>
</br>



<h3>Troubleshooting</h3>



<p>I restarted the DCS agent.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,5]">
[root@ODA-HA_node0 ~]# systemctl stop initdcsagent

[root@ODA-HA_node0 ~]# systemctl start initdcsagent

[root@ODA-HA_node0 ~]# systemctl status initdcsagent
● initdcsagent.service - Oracle dcs-agent startup
   Loaded: loaded (/etc/systemd/system/initdcsagent.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2026-03-18 14:35:41 CET; 2s ago
 Main PID: 92038 (sh)
    Tasks: 96 (limit: 79998)
   Memory: 331.7M
   CGroup: /system.slice/initdcsagent.service
           ├─92038 /bin/sh -c . /opt/oracle/dcs/bin/setupJreAgent.sh;LD_LIBRARY_PATH=/opt/oracle/rhp/lib:$JRE_HOME/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib $JAVA -Xms128m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -XX:ParallelGCThreads=4 -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/opt/oracle/dcs/log/gc-dcs-agent-%t-%p.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFi&gt;
           └─92039 /opt/oracle/dcs/java/1.8.0_441/bin/java -Xms128m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -XX:ParallelGCThreads=4 -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/opt/oracle/dcs/log/gc-dcs-agent-%t-%p.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Doracle.security.jps.config=/opt/oracle/dcs/agent/jps-config.xml -Dio.nett&gt;

Mar 18 14:35:41 ODA-HA_node0 systemd[1]: Started Oracle dcs-agent startup.
[root@ODA-HA_node0 ~]# odacli list-jobs | tail -n3
</pre>
</br>



<p>Which did not help. In the DCS Agent log I could find some errors with HAMI. Oracle HAMI is the Oracle High Availability Metadata Infrastructure service providing distributed services required by DCS including locking and synchronizing configuration details in the cluster.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA-HA_node0 log]# view dcs-agent-infra.log
...
...
...
2026-03-18 14:59:37,776 DEBUG [DcsInfraProvisioningThread] [] c.o.d.i.h.c.CommandExecutor: Going to execute command '/opt/oracle/dcs/hami/bin/hamictl.sh ssh-equiv --ensemble ODA_DCS --hosts ODA-HA_node0-priv,ODA-HA_node1-priv --json'
2026-03-18 14:59:38,014 DEBUG [DcsInfraProvisioningThread] [] c.o.d.i.h.c.CommandExecutor: Got result from execution of '/opt/oracle/dcs/hami/bin/hamictl.sh ssh-equiv --ensemble ODA_DCS --hosts ODA-HA_node0-priv,ODA-HA_node1-priv --json':
 - RC:     1
 - OUTPUT: /opt/oracle/dcs/oda-python3/lib/python3.12/getpass.py:91: GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
hamictl_oda_dcs's password: *********
{"operation": "ssh-equiv", "result": "FAILED", "message": "Invalid password"}

2026-03-18 14:59:38,015 ERROR [DcsInfraProvisioningThread] [] c.o.d.a.i.DcsInfraProvisioningThread: Could not provision DCS infrastructure
com.oracle.dcs.infra.hams.ctl.HamiCtl$HamiCtlException: Invalid password
</pre>
</br>



<p>I decided to restart MySQL service.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[root@ODA-HA_node0 ~]# systemctl stop oda-mysql

[root@ODA-HA_node0 ~]# systemctl start oda-mysql
Job for oda-mysql.service failed because the control process exited with error code.
See "systemctl status oda-mysql.service" and "journalctl -xe" for details.
</pre>
</br>




<p>Which failed&#8230;</p>



<p>Checking the logs:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,5]">
[root@ODA-HA_node0 ~]# journalctl -xe
...
-- Unit oda-mysql.service has begun starting up.
Mar 31 09:23:10 ODA-HA_node0 systemd[90052]: oda-mysql.service: Failed to execute command: Permission denied
Mar 31 09:23:10 ODA-HA_node0 systemd[90052]: oda-mysql.service: Failed at step EXEC spawning /opt/oracle/dcs/mysql/bin/mysqld: Permission denied
</pre>
</br>



<p>I could see that it was complaining about permissions.</p>



<p>I checked the permissions on the MySQL binary:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA-HA_node0 ~]# ls -ltrh /opt/oracle/dcs/mysql/bin/mysqld
-rwxr-x--- 1 odamysql odamysql 338M Mar 26 16:55 /opt/oracle/dcs/mysql/bin/mysqld
[root@ODA-HA_node0 ~]#
</pre>
</br>



<p>And that one was ok. The linux user starting MySQL, odamysql, was having the right permissions.</p>



<p>I then checked all permissions including the directories:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@ODA-HA_node0 log]# ls -ld /opt /opt/oracle /opt/oracle/dcs /opt/oracle/dcs/mysql /opt/oracle/dcs/mysql/bin
drwxrwx---  11 root     oinstall 4096 Nov 21 13:58 /opt
drwxr-xr-x.  9 root     root     4096 Nov 14 16:31 /opt/oracle
drwxr-xr-x. 30 root     root     4096 Nov 14 12:40 /opt/oracle/dcs
drwxr-xr-x. 13 root     root     4096 Nov 14 09:10 /opt/oracle/dcs/mysql
drwxr-x---.  2 odamysql odamysql 4096 Mar 26 16:55 /opt/oracle/dcs/mysql/bin
[root@ODA-HA_node0 log]#
</pre>
</br>



<p>And  I could see that there were wrong on the /opt directory&#8230; The odamysql directory is not able to enter and read in the /opt directory, as it does not belong to the group and there is no permissions on the other users&#8230;</p>



<p>I checked on a valid ODA and as expected the permissions should be:</p>



<pre class="wp-block-code"><code>drwxr-xr-x. 11 root     root     4096 Mar 18 10:02 /opt</code></pre>



<p>So this is mainly due to an human mistake&#8230;</p>



<h3>Resolution</h3>



<p>I first checked and could confirm the issue only affect the /opt directory itself.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[root@ODA-HA_node0 opt]# pwd
/opt

[root@ODA-HA_node0 opt]# ls -ltrh
total 48K
drwxr-xr-x.  3 root root     4.0K Sep 17  2024 lsi
drwxr-xr-x   2 root root     4.0K Jan 15  2025 oracle.ahf
drwx------.  2 root root      16K Nov 11 15:42 lost+found
drwxr-xr-x.  4 root root     4.0K Nov 11 16:32 MegaRAID
drwxr-xr-x   3 root root     4.0K Nov 12 10:20 ORCLfmap
drwxr-xr-x   5 root root     4.0K Nov 12 13:36 odabr
drwxr-xr-x.  9 root root     4.0K Nov 14 16:31 oracle
drwxrwx---  16 root oinstall 4.0K Feb 16 11:19 commvault
drwx------  11 root root     4.0K Mar 30 02:08 splunkforwarder
[root@ODA-HA_node0 opt]#
</pre>
</br>



<p>I change the permissions for other users.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,4]">
[root@ODA-HA_node0 /]# chmod o+rx /opt

[root@ODA-HA_node0 /]# ls -ld /opt /opt/oracle /opt/oracle/dcs /opt/oracle/dcs/mysql /opt/oracle/dcs/mysql/bin
drwxrwxr-x  11 root     oinstall 4096 Nov 21 13:58 /opt
drwxr-xr-x.  9 root     root     4096 Nov 14 16:31 /opt/oracle
drwxr-xr-x. 30 root     root     4096 Nov 14 12:40 /opt/oracle/dcs
drwxr-xr-x. 13 root     root     4096 Nov 14 09:10 /opt/oracle/dcs/mysql
drwxr-x---.  2 odamysql odamysql 4096 Mar 26 16:55 /opt/oracle/dcs/mysql/bin
[root@ODA-HA_node0 /]#
</pre>
</br>




<p>And I could successfully start the MySQL service.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,6]">
[root@ODA-HA_node0 /]# systemctl start oda-mysql

[root@ODA-HA_node0 /]# systemctl status oda-mysql
● oda-mysql.service - MySQL Server for ODA
   Loaded: loaded (/etc/systemd/system/oda-mysql.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2026-03-31 09:55:48 CEST; 6s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 55837 (mysqld)
   Status: "Server is operational"
    Tasks: 33 (limit: 79998)
   Memory: 423.5M
   CGroup: /system.slice/oda-mysql.service
           └─55837 /opt/oracle/dcs/mysql/bin/mysqld --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf --skip-mysqlx

Mar 31 09:55:48 ODA-HA_node0 systemd[1]: Starting MySQL Server for ODA...
Mar 31 09:55:48 ODA-HA_node0 systemd[1]: Started MySQL Server for ODA.
[root@ODA-HA_node0 /]#
</pre>
</br>



<p>And I could successfully start the DCS Agent.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,18,20,23]">
[root@ODA-HA_node0 /]# systemctl status initdcsagent
● initdcsagent.service - Oracle dcs-agent startup
   Loaded: loaded (/etc/systemd/system/initdcsagent.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2026-03-18 15:22:48 CET; 1 weeks 5 days ago
 Main PID: 84546 (code=killed, signal=TERM)

Mar 19 16:18:04 ODA-HA_node0 systemd[1]: Dependency failed for Oracle dcs-agent startup.
Mar 19 16:18:04 ODA-HA_node0 systemd[1]: initdcsagent.service: Job initdcsagent.service/start failed with result 'dependency'.
Mar 24 13:38:38 ODA-HA_node0 systemd[1]: Dependency failed for Oracle dcs-agent startup.
Mar 24 13:38:38 ODA-HA_node0 systemd[1]: initdcsagent.service: Job initdcsagent.service/start failed with result 'dependency'.
Mar 25 09:46:35 ODA-HA_node0 systemd[1]: Dependency failed for Oracle dcs-agent startup.
Mar 25 09:46:35 ODA-HA_node0 systemd[1]: initdcsagent.service: Job initdcsagent.service/start failed with result 'dependency'.
Mar 26 11:06:50 ODA-HA_node0 systemd[1]: Dependency failed for Oracle dcs-agent startup.
Mar 26 11:06:50 ODA-HA_node0 systemd[1]: initdcsagent.service: Job initdcsagent.service/start failed with result 'dependency'.
Mar 30 16:07:15 ODA-HA_node0 systemd[1]: Dependency failed for Oracle dcs-agent startup.
Mar 30 16:07:15 ODA-HA_node0 systemd[1]: initdcsagent.service: Job initdcsagent.service/start failed with result 'dependency'.

[root@ODA-HA_node0 /]# systemctl start initdcsagent

[root@ODA-HA_node0 /]# systemctl status initdcsagent
● initdcsagent.service - Oracle dcs-agent startup
   Loaded: loaded (/etc/systemd/system/initdcsagent.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2026-03-31 09:57:34 CEST; 1s ago
 Main PID: 59253 (sh)
    Tasks: 96 (limit: 79998)
   Memory: 270.0M
   CGroup: /system.slice/initdcsagent.service
           ├─59253 /bin/sh -c . /opt/oracle/dcs/bin/setupJreAgent.sh;LD_LIBRARY_PATH=/opt/oracle/rhp/lib:$JRE_HOME/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib $JAVA -Xms128m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -XX:ParallelGCThreads=4 -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/opt/oracle/dcs/log/gc-dcs-agent-%t-%p.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFi&gt;
           └─59254 /opt/oracle/dcs/java/1.8.0_441/bin/java -Xms128m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -XX:ParallelGCThreads=4 -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/opt/oracle/dcs/log/gc-dcs-agent-%t-%p.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Doracle.security.jps.config=/opt/oracle/dcs/agent/jps-config.xml -Dio.nett&gt;

Mar 31 09:57:34 ODA-HA_node0 systemd[1]: Started Oracle dcs-agent startup.
[root@ODA-HA_node0 /]#
</pre>
</br>



<p>And I could successfully run the cleanup:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,15,21]">
[root@ODA-HA_node0 ~]# odacli cleanup-patchrepo -comp DB,GI -v 19.20.0.0.0
{
  "jobId" : "08b395be-ae5a-4d6f-8e5d-1c0fa232f672",
  "status" : "Created",
  "message" : "",
  "reports" : [ ],
  "createTimestamp" : "March 31, 2026 11:21:58 CEST",
  "resourceList" : [ ],
  "description" : "Cleanup patchrepos",
  "updatedTime" : "March 31, 2026 11:21:58 CEST",
  "jobType" : null,
  "cpsMetadata" : null
}

[root@ODA-HA_node0 ~]# odacli describe-job -i 08b395be-ae5a-4d6f-8e5d-1c0fa232f672

Job details
----------------------------------------------------------------
                     ID:  08b395be-ae5a-4d6f-8e5d-1c0fa232f672
            Description:  Cleanup patchrepos
                 Status:  Success
                Created:  March 31, 2026 11:21:58 CEST
                Message:

Task Name                                Node Name                 Start Time                               End Time                                 Status
---------------------------------------- ------------------------- ---------------------------------------- ---------------------------------------- ----------------
Cleanup Repository                       ODA-HA_node1                 March 31, 2026 11:21:58 CEST             March 31, 2026 11:21:59 CEST             Success
Cleanup old ASR rpm                      ODA-HA_node0                 March 31, 2026 11:21:59 CEST             March 31, 2026 11:21:59 CEST             Success

[root@ODA-HA_node0 ~]#
</pre>
</br>



<p>Finally, I have also changed the group for /opt accordingly to root group.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,4]">
[root@ODA-HA_node0 /]# chgrp root /opt

[root@ODA-HA_node0 /]# ls -ld /opt /opt/oracle /opt/oracle/dcs /opt/oracle/dcs/mysql /opt/oracle/dcs/mysql/bin
drwxrwxr-x  11 root     root     4096 Nov 21 13:58 /opt
drwxr-xr-x.  9 root     root     4096 Nov 14 16:31 /opt/oracle
drwxr-xr-x. 30 root     root     4096 Nov 14 12:40 /opt/oracle/dcs
drwxr-xr-x. 13 root     root     4096 Nov 14 09:10 /opt/oracle/dcs/mysql
drwxr-x---.  2 odamysql odamysql 4096 Mar 26 16:55 /opt/oracle/dcs/mysql/bin
[root@ODA-HA_node0 /]#
</pre>
</br>



<h3>To wrap up&#8230;</h3>



<p>DCS Agent and MySQL database will have no effect on the well working of your databases, but if they are not working you are not able to manage your appliance any more. Here, wrong permissions (for sure a human mistake) had sad effects on appliance software. Solving the permissions issue resolved my problem.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/mysql-metadata-store-service-not-able-to-start-on-an-oda/">MySQL Metadata Store service not able to start on an ODA</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/mysql-metadata-store-service-not-able-to-start-on-an-oda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Undocumented GoldenGate &#8216;all&#8217; Role You Should Know About</title>
		<link>https://www.dbi-services.com/blog/the-undocumented-goldengate-all-role-you-should-know-about/</link>
					<comments>https://www.dbi-services.com/blog/the-undocumented-goldengate-all-role-you-should-know-about/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 05:27:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[ogg-12430]]></category>
		<category><![CDATA[recreate]]></category>
		<category><![CDATA[restapi]]></category>
		<category><![CDATA[role]]></category>
		<category><![CDATA[user]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43582</guid>

					<description><![CDATA[<p>Let me tell you a story about how I discovered an undocumented role in GoldenGate that could break your automation. Recently, I wanted to do a massive update of the role of a GoldenGate user on multiple deployments. First of all, you should know that GoldenGate users are assigned to a role within the following [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-undocumented-goldengate-all-role-you-should-know-about/">The Undocumented GoldenGate &#8216;all&#8217; Role You Should Know About</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Let me tell you a story about how <strong>I discovered an undocumented role in GoldenGate</strong> that could break your automation. Recently, I wanted to do a massive update of the role of a GoldenGate user on multiple deployments. First of all, you should know that <strong>GoldenGate users are assigned to a role</strong> within the following list: <code>User</code>, <code>Operator</code>, <code>Administrator</code> and <code>Security</code>.</p>



<p>I will not dwell on the differences between them, but you just have to know something important here: <strong>you cannot change the role assigned to a GoldenGate user</strong>. If you try to edit a user, the only thing that you can change is the password.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="390" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_1-4-1024x390.png" alt="" class="wp-image-43605" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_1-4-1024x390.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_1-4-300x114.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_1-4-768x293.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_1-4.png 1281w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>That being said, the <strong>only possible option to change the role of a user</strong> in GoldenGate is to <strong>recreate it</strong>. In the web UI, it is rather simple. You just delete it, and recreate it with the same credentials, but a different role.</p>



<p>But as mentioned, I wanted to do it for multiple deployments and users, without having to do the operation manually.every time. That is why I decided to use the GoldenGate REST API to quickly iterate over users and deployments. And this is where the trouble began.</p>



<p>According to the GoldenGate documentation on the REST API, there are two endpoints that appear to replicate the web UI behavior :</p>



<ul class="wp-block-list">
<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-authorizations-role-user-delete.html" target="_blank" rel="noreferrer noopener">Delete User</a> : <code>DELETE /services/{version}/authorizations/{role}/{user}</code></li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="555" height="118" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_delete_user.png" alt="" class="wp-image-43607" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_delete_user.png 555w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_delete_user-300x64.png 300w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure>
</div>


<ul class="wp-block-list">
<li><a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-authorizations-role-user-post.html" target="_blank" rel="noreferrer noopener">Create User</a> : <code>POST /services/{version}/authorizations/{role}/{user}</code></li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="555" height="120" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_create_user-2.png" alt="" class="wp-image-43606" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_create_user-2.png 555w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_create_user-2-300x65.png 300w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure>
</div>


<p>However, <strong>when calling the API</strong> with these endpoints and the Python client I presented in <a href="https://www.dbi-services.com/blog/production-ready-goldengate-rest-client-in-python/" target="_blank" rel="noreferrer noopener">another blog</a>, I <strong>had the following error</strong> after trying to recreate the user:</p>



<pre class="wp-block-code"><code># Deletion works as intended
&gt;&gt;&gt; ogg_client.delete_user('dbiblog','Operator')
{'$schema': 'api:standardResponse', 'links': &#091;{'rel': 'canonical', 'href': 'https://vmogg/se/Operator', 'mediaType': 'application/json'}, {'rel': 'self', 'href': 'https://vmogg/se/Operator', 'mediaType': 'application/json'}], 'messages': &#091;]}

# Creation doesn't work
&gt;&gt;&gt; ogg_client.create_user('dbiblog', 'User', data={'credential':'**'})
Exception: ERROR - https://vmogg/services/ogg_test_01/adminsrvr/v2/authorizations/Operator/dbiblog: The specified user already exists.</code></pre>



<p>In the UI, <strong>the user was gone, but I couldn&#8217;t recreate it</strong> with the REST API. And even from the UI, the user couldn&#8217;t be recreated. Instead, I had the following error: <code>OGG-12430 : The specified user already exists.</code></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="221" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_err_webui-1024x221.png" alt="" class="wp-image-43608" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_err_webui-1024x221.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_err_webui-300x65.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_err_webui-768x166.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ogg_blog_undocumented_role_err_webui.png 1304w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>At first, I thought something was wrong with either my deployment or my client, but I found nothing wrong. So I checked the <code>restapi.log</code> files of my deployment to understand:</p>



<ul class="wp-block-list">
<li>What the REST API calls were doing</li>



<li>What the web UI was doing.</li>
</ul>



<h2 class="wp-block-heading" id="h-restapi-log-analysis"><code>restapi.log</code> analysis</h2>



<p>Let&#8217;s try to create the exact same user (<code>dbiblog</code> / <code>Operator</code>) from the UI, and see <strong>what passes through the API</strong>. For more insight about how to query the <code>restapi.log</code> file efficiently, you can read a <a href="https://www.dbi-services.com/blog/querying-goldengate-rest-api-log-efficiently/" target="_blank" rel="noreferrer noopener">blog</a> I wrote on the topic. Otherwise, you can just search through the logs.</p>



<p>As shown below, the <strong>creation of a user from the UI</strong> only generated one call to the API (excluding <code>GET</code> calls) to the same endpoint used by my method.</p>



<pre class="wp-block-code"><code>{
&nbsp; "content": {
&nbsp;&nbsp;&nbsp; "credential": "** Masked **",
&nbsp;&nbsp;&nbsp; "type": "Basic"
&nbsp; },
&nbsp; "uri": "/services/v2/authorizations/Operator/dbiblog",
&nbsp; "uriTemplate": "/services/{version}/authorizations/{role}/{user}",
&nbsp; "verb": "POST",
&nbsp; "restapi_datetime": "2026-03-27 05:40:58.776+0000",
&nbsp; "restapi_reqno": 1840,
&nbsp; "restapi_service": "adminsrvr",
&nbsp; "restapi_status": "INFO"
}</code></pre>



<p>Now, when <strong>deleting the user from the UI</strong>, <strong>two <code>DELETE</code> operations</strong> go through the API.</p>



<pre class="wp-block-code"><code>{
&nbsp; "content": null,
&nbsp; "uri": "/services/v2/authorizations/Operator/dbiblog",
&nbsp; "uriTemplate": "/services/{version}/authorizations/{role}/{user}",
&nbsp; "verb": "DELETE",
&nbsp; "restapi_datetime": "2026-03-27 05:42:20.994+0000",
&nbsp; "restapi_reqno": 1926,
&nbsp; "restapi_service": "adminsrvr",
&nbsp; "restapi_status": "INFO"
}
{
&nbsp; "content": null,
&nbsp; "uri": "/services/v2/authorizations/all/dbiblog",
&nbsp; "uriTemplate": "/services/{version}/authorizations/{role}/{user}",
&nbsp; "verb": "DELETE",
&nbsp; "restapi_datetime": "2026-03-27 05:42:21.012+0000",
&nbsp; "restapi_reqno": 1927,
&nbsp; "restapi_service": "adminsrvr",
&nbsp; "restapi_status": "INFO"
}</code></pre>



<p>On top of making a <code>DELETE</code> call to the <code>dbiblog</code> / <code>Operator</code> pair, the UI generates another <code>DELETE</code> call on the <code>dbiblog</code> user with an undocumented <code>all</code> role !</p>



<p>This <strong>explains why you get an error</strong> when recreating a user with the REST API. If the user was deleted by a single REST API call, <strong>it still exists with the hidden <code>all</code> role</strong>.</p>



<p>To verify this hypothesis, let&#8217;s look at the <strong>list of users</strong> with the <code>Operator</code> and <code>all</code> roles <strong>before and after the user creation</strong>. <strong>Before</strong>, we only have the default <code>ogg</code> user (with the <code>Security</code> role, not shown here).</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; ogg_client.list_users('Operator')
&#091;]

&gt;&gt;&gt; ogg_client.list_users('all')
&#091;{'username': 'ogg'}]</code></pre>



<p>But <strong>after, the newly created user</strong> also gets the <code>all</code> role.</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; ogg_client.create_user(user='dbiblog', role='Operator', data={'credential':'**'})
{'$schema': 'api:standardResponse', 'links': &#091;{'rel': 'canonical', 'href': 'https://vmogg/ser/Operator/dbiblog', 'mediaType': 'application/json'}, {'rel': 'self', 'href': 'https://vmogg/ser/Operator/dbiblog', 'mediaType': 'application/json'}], 'messages': &#091;]}

&gt;&gt;&gt; ogg_client.list_users('Operator')
&#091;{'username': 'dbiblog'}]

&gt;&gt;&gt; ogg_client.list_users('all')
&#091;{'username': 'ogg'}, {'username': 'dbiblog'}]</code></pre>



<p>And of course, when deleting the user, <strong>I was only deleting it with the role I knew about</strong>.</p>



<h2 class="wp-block-heading" id="h-how-to-recreate-a-goldengate-user-with-the-rest-api">How to recreate a GoldenGate user with the REST API ?</h2>



<p>The conclusion is simple: to<strong> recreate a GoldenGate user with the REST API</strong>, you need to <strong>delete the user on its current role, but also on the <code>all</code> role</strong>. After doing this, you can recreate the user:</p>



<pre class="wp-block-code"><code># User deletion on the 'Operator' role
&gt;&gt;&gt; ogg_client.delete_user(user='dbiblog', role='Operator')
{'$schema': 'api:standardResponse', 'links': &#091;{'rel': 'canonical', 'href': 'https://vmogg/Operator', 'mediaType': 'application/json'}, {'rel': 'self', 'href': 'https://vmogg/ser/Operator', 'mediaType': 'application/json'}], 'messages': &#091;]}

# User deletion on the 'all' role
&gt;&gt;&gt; ogg_client.delete_user(user='dbiblog', role='all')
{'$schema': 'api:standardResponse', 'links': &#091;{'rel': 'canonical', 'href': 'https://vmogg/ser/All', 'mediaType': 'application/json'}, {'rel': 'self', 'href': 'https://vmogg/ser/All', 'mediaType': 'application/json'}], 'messages': &#091;]}

# User creation on the 'Operator' role
&gt;&gt;&gt; ogg_client.create_user(user='dbiblog', role='Operator', data={'credential':'**'})
{'$schema': 'api:standardResponse', 'links': &#091;{'rel': 'canonical', 'href': 'https://vmogg/ser/Operator/dbiblog', 'mediaType': 'application/json'}, {'rel': 'self', 'href': 'https://vmogg/ser/Operator/dbiblog', 'mediaType': 'application/json'}], 'messages': &#091;]}</code></pre>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-undocumented-goldengate-all-role-you-should-know-about/">The Undocumented GoldenGate &#8216;all&#8217; Role You Should Know About</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/the-undocumented-goldengate-all-role-you-should-know-about/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Starting ODA 19.29 &#8211; Old grid version cleanup</title>
		<link>https://www.dbi-services.com/blog/starting-oda-19-29-old-grid-version-cleanup/</link>
					<comments>https://www.dbi-services.com/blog/starting-oda-19-29-old-grid-version-cleanup/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 17:05:27 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[cleanup]]></category>
		<category><![CDATA[Grid]]></category>
		<category><![CDATA[oda]]></category>
		<category><![CDATA[patching]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43683</guid>

					<description><![CDATA[<p>We know that during the ODA patching, a new grid version will be installed. To avoid the /u01 file system to fill up, we need to cleanup the old version. In this blog, I will show you how you can do it and also few changes coming with version 19.29, as you might need a [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/starting-oda-19-29-old-grid-version-cleanup/">Starting ODA 19.29 &#8211; Old grid version cleanup</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We know that during the ODA patching, a new grid version will be installed. To avoid the /u01 file system to fill up, we need to cleanup the old version. In this blog, I will show you how you can do it and also few changes coming with version 19.29, as you might need a reboot before.</p>



<p>Remember that until 19.28, the patch of the server was done with odacli update-server command, and this will patch the whole server (OS, ILOM, BIOS, &#8230;) and the grid in the same step.</p>



<p>Starting 19.29 you will run the server and the grid patching separately. odacli update-servercomponents will patch the server (OS, ILOM, HMP, firmware for local disk and controller, &#8230;) and odacli update-gihome will patch and install the new grid version. A reboot of the node will only be performed after the servercomponents update due to the ILOM and BIOS update.</p>



<p>Once the patching process was successfully done, we can cleanup old grid version. In my example, I patched the ODA from version 19.28 to 19.30.</p>



<h3>Check usage</h3>



<p>First of all we check usage of the grid files. The new grid version is 19.30, so I expect to have file using 19.30 grid.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# lsof | grep "/u01/app/19.30.0.0/" | wc -l
29545
</pre>
</br>



<p>Before any cleanup, I need to ensure the old 19.28 grid infrastructure is not used any more.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | wc -l
3295
</pre>
</br>



<p>Which is definitely note the case.</p>



<p>I check which process are still using old grid infra.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,71]">
[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -i oakd | wc -l
3233

[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -iv oakd | wc -l
62

[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -iv oakd
java      86061                            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2390 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2394 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2440 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2545 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2546 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2547 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  2548 LegacyRun            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061  4274 ForkJoinP            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 16159 process              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86062 TFAServer            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86063 ParGC\x20            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86064 ParGC\x20            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86065 ParGC\x20            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86066 VM\x20Thr            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86068 Reference            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86069 Finalizer            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86071 Signal               root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86072 Service              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86073 C2\x20Com            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86074 C1\x20Com            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86075 Sweeper              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86078 VM\x20Per            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86079 Common-Cl            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86145 process              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86252 LogFlushe            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86253 DataCorru            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86296 INCompres            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86297 Cleaner-1            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86298 Checkpoin            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86396 pool-3-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86397 pool-3-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86398 pool-3-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86551 TFAIndexe            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 86983 TFAMonito            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87763 ActionHan            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87776 ClusterEv            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87777 Repositor            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87782 PeriodicC            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87786 InstanceM            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87788 Thread-13            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87790 DiskUsage            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87794 process              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87797 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87799 PurgeMana            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87800 TFAMaster            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87804 LegacyTel            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87805 TFAPlugin            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87806 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87807 TFAInvent            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87808 TFADbUtlS            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87809 TFADbUtlP            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 87810 RetryUplo            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 88715 Tailing              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 88718 Tailing              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 88719 Tailing              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 88720 Tailing              root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 91944 pool-6-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 98253 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 98254 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 98331 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar
java      86061 98388 pool-2-th            root   26r      REG             252,10     16284857    1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar

[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -i oakd | tail -n3
oakd      65702 71035 oakd                 root  118r      REG             252,10       174592    1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb
oakd      65702 71035 oakd                 root  119r      REG             252,10       174592    1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb
oakd      65702 71035 oakd                 root  120r      REG             252,10       174592    1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb
[root@ODA01 ~]#
</pre>
</br>



<p>So OAK and TFA are still running on old grid version and using old grid jar library.</p>



<p>This comes from the fact that after the server components patches, the server is rebooted, the oak, tfa and other process will start with the existing grid version, 19.28. The grid patch will not reboot the server and not restart those processes, so they will still run with old grid infra.</p>



<p>This is why before any cleanup and starting 19.29 only, we need to reboot the ODA.</p>



<p>Reboot the DOA:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# systemctl reboot
[root@ODA01 ~]#
</pre>
</br>



<p>After reboot we can see that only new grid version is used:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7]">
[root@ODA01 ~]# uptime
 16:16:17 up 3 min,  1 user,  load average: 2.06, 1.58, 0.65

[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | wc -l
0

[root@ODA01 ~]# lsof | grep "/u01/app/19.30.0.0" | wc -l
45798
[root@ODA01 ~]#
</pre>
</br>



<h3>Cleanup old grid</h3>



<p>Current space for /u1 is 6.2 GB:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# df -h / /opt /u01
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolRoot   30G  5.1G   23G  19% /
/dev/mapper/VolGroupSys-LogVolOpt    48G   26G   20G  57% /opt
/dev/mapper/VolGroupSys-LogVolU01    49G   41G  6.2G  87% /u01
[root@ODA01 ~]#
</pre>
</br>



<p>Remove old version of grid:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,5,8,11]">
[root@ODA01 ~]# cd /u01/app

[root@ODA01 app]# mv 19.28.0.0 BAK_19.28.0.0

[root@ODA01 app]# lsof | grep "/u01/app/19.28.0.0" | wc -l
0

[root@ODA01 app]# lsof | grep "/u01/app/BAK_19.28.0.0" | wc -l
0

[root@ODA01 app]# rm -rf BAK_19.28.0.0
[root@ODA01 app]#
</pre>
</br>



<p>Check current space:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 app]# df -h / /u01 /opt /boot
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolRoot   30G  5.1G   23G  19% /
/dev/mapper/VolGroupSys-LogVolU01    49G   27G   20G  58% /u01
/dev/mapper/VolGroupSys-LogVolOpt    48G   26G   20G  57% /opt
/dev/md126p2                        488M  218M  235M  49% /boot
[root@ODA01 app]#
</pre>
</br>




<p>We have taken back about 14 GB.</p>



<h3> Check oracle inventory</h3>



<p>Checking oracle inventory:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[root@ODA01 app]# cd /u01/app/oraInventory/ContentsXML/

[root@ODA01 ContentsXML]# cat inventory.xml
</pre>
</br>



<p>You will see both grid home:</p>



<pre class="wp-block-code"><code>&lt;HOME NAME="OraGrid192800" LOC="/u01/app/19.28.0.0/grid" TYPE="O" IDX="13"/&gt;
&lt;HOME NAME="OraGrid193000" LOC="/u01/app/19.30.0.0/grid" TYPE="O" IDX="15" CRS="true"/&gt;</code></pre>



<p>The current running one is the one having CRS option to true.</p>



<h3>Detach old grid home from the inventory</h3>



<p>We can now detach old grid from the inventory:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,9]">
[grid@ODA01 ~]$ echo $ORACLE_SID
+ASM1

[grid@ODA01 ~]$ echo $ORACLE_HOME
/u01/app/19.30.0.0/grid

[grid@ODA01 ~]$ cd $ORACLE_HOME/oui/bin

[grid@ODA01 bin]$ ./runInstaller -detachHome -silent -local ORACLE_HOME=/u01/app/19.28.0.0/grid
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 24575 MB    Passed
The inventory pointer is located at /etc/oraInst.loc
You can find the log of this install session at:
 /u01/app/oraInventory/logs/DetachHome2026-03-29_04-34-43PM.log
'DetachHome' was successful.
</pre>
</br>



<h3>Check inventory</h3>



<p>Checking the inventory again:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[grid@ODA01 bin]$ cd /u01/app/oraInventory/ContentsXML/

[grid@ODA01 ContentsXML]$ cat inventory.xml
</pre>
</br>



<p>We will see old grid with option REMOVE=&#8221;T&#8221;</p>



<pre class="wp-block-code"><code>&lt;HOME NAME="OraGrid193000" LOC="/u01/app/19.30.0.0/grid" TYPE="O" IDX="15" CRS="true"/&gt;
&lt;HOME NAME="OraGrid192800" LOC="/u01/app/19.28.0.0/grid" TYPE="O" IDX="13" REMOVED="T"/&gt;
</code></pre>
<p>L’article <a href="https://www.dbi-services.com/blog/starting-oda-19-29-old-grid-version-cleanup/">Starting ODA 19.29 &#8211; Old grid version cleanup</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/starting-oda-19-29-old-grid-version-cleanup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ODA 19.30 prepatch report failing on OS patches</title>
		<link>https://www.dbi-services.com/blog/oda-19-30-prepatch-report-failing-on-os-patches/</link>
					<comments>https://www.dbi-services.com/blog/oda-19-30-prepatch-report-failing-on-os-patches/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 15:03:50 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oda]]></category>
		<category><![CDATA[ODA 19.30]]></category>
		<category><![CDATA[patching]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43662</guid>

					<description><![CDATA[<p>I had to recently patch several ODAs from 19.28 to 19.30, and one ODA patching failed running the prepatch report which is mandatory and helpful before going to patch the ODA. For each step (server, grid or storage) a prepatch report is needed. I had to troubleshoot and I could solve the problem, and I [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oda-19-30-prepatch-report-failing-on-os-patches/">ODA 19.30 prepatch report failing on OS patches</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I had to recently patch several ODAs from 19.28 to 19.30, and one ODA patching failed running the prepatch report which is mandatory and helpful before going to patch the ODA. For each step (server, grid or storage) a prepatch report is needed. I had to troubleshoot and I could solve the problem, and I thought it would be more than interesting to share it, expecting it might be helpful.</p>



<span id="more-43662"></span>



<h3>Problem description</h3>



<p>After dcs-admin update, dcs components update, repository update with grid and rdbms clones, I have run a prepatch report, and decided to run it already for all components : server, grid and storage.</p>



<p>This is why we will see in the output following part : OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI.</p>



<p>Running the prepatch report:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# /opt/oracle/dcs/bin/odacli create-prepatchreport -sc -gi -st -v 19.30.0.0.0

Job details
----------------------------------------------------------------
                     ID:  6681af21-907a-4ffc-8add-d40af11441ae
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  Created
                Created:  March 29, 2026 10:35:01 CEST
                Message:  Use 'odacli describe-prepatchreport -i 6681af21-907a-4ffc-8add-d40af11441ae' to check details of results

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------

[root@ODA01 ~]#
</pre>
</br>



<p>Describing the report, I could see that it failed on the OS rpm verification:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,7,21]">
[root@ODA01 ~]# odacli describe-prepatchreport -i 6681af21-907a-4ffc-8add-d40af11441ae

Prepatch Report
------------------------------------------------------------------------
                 Job ID:  6681af21-907a-4ffc-8add-d40af11441ae
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  FAILED
                Created:  March 29, 2026 10:35:01 AM CEST
                 Result:  One or more pre-checks failed for [OS]

Node Name
---------------
ODA01

Pre-Check                      Status   Comments
------------------------------ -------- --------------------------------------
__OS__
Validate supported versions     Success   Validated minimum supported versions.
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is patch location available     Success   Patch location is available.
Verify All OS patches           Failed    DCS-10252 - dnf dry-run execution
                                          failed: check
                                          /opt/oracle/dcs/log/jobfiles/
                                          dnfdryrunout_2026-03-29_10-35-
                                          15.0673_536.log file for more details
Validate command execution      Success   Validated command execution

__ILOM__
Validate ILOM server reachable  Success   Successfully connected with ILOM
                                          server using public IP and USB
                                          interconnect
Validate supported versions     Success   Validated minimum supported versions.
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is patch location available     Success   Patch location is available.
Checking Ilom patch Version     Success   Successfully verified the versions
Patch location validation       Success   Successfully validated location
Validate command execution      Success   Validated command execution

__ORACHK__
Running orachk                  Success   Successfully ran Orachk
Validate command execution      Success   Validated command execution

__SERVER__
Validate local patching         Success   Successfully validated server local
                                          patching
Validate all KVM ACFS           Success   All KVM ACFS resources are running
resources are running
Validate DB System VM states    Success   All DB System VMs states are expected
Validate command execution      Success   Validated command execution

__STORAGE__
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Patch location validation       Success   Verified patch location
Patch tag validation            Success   Verified patch tag
Storage patch tag validation    Success   Verified storage patch location
Verify ASM disks status         Success   ASM disks are online
Validate command execution      Success   Validated command execution

__RHPGI__
Validate available space        Success   Validated free space under /u01
Evaluate GI patching            Success   Successfully validated GI patching
Validate command execution      Success   Validated command execution

__GI__
Validate GI metadata            Success   Successfully validated GI metadata
Validate supported GI versions  Success   Successfully validated minimum version
Is clusterware running          Success   Clusterware is running
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is system provisioned           Success   Verified system is provisioned
Validate ASM is online          Success   ASM is online
Validate kernel log level       Success   Successfully validated the OS log
                                          level
Validate Central Inventory      Success   oraInventory validation passed
Validate patching locks         Success   Validated patching locks
Validate clones location exist  Success   Validated clones location
Validate DB start dependencies  Success   DBs START dependency check passed
Validate DB stop dependencies   Success   DBs STOP dependency check passed
Validate space for clones       Success   Clones volume is already created
volume
Validate command execution      Success   Validated command execution

[root@ODA01 ~]#
</pre>
</br>



<p>I checked the appropriate log, and could easily guess that the process complained about missing rhn-client-tools:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,28]">
[root@ODA01 ~]# view /opt/oracle/dcs/log/jobfiles/dnfdryrunout_2026-03-29_10-35-15.0673_536.log
2026-03-29 10:35:29,977 [DNFHelper] INFO    : File path /tmp/dcsfiles/dnfoperation_2026-03-29_10-35-15.0676_536.json exists
2026-03-29 10:35:29,977 [DNFHelper] INFO    : File path /tmp/dcsfiles/dnfoperation_2026-03-29_10-35-15.0676_536.json is a regular file
2026-03-29 10:35:29,979 [dnf      ] DEBUG   : User-Agent: constructed: 'libdnf (Oracle Linux Server 8.10; server; Linux.x86_64)'
2026-03-29 10:35:29,991 [dnf      ] DEBUG   : User-Agent: constructed: 'libdnf (Oracle Linux Server 8.10; server; Linux.x86_64)'
2026-03-29 10:35:30,139 [dnf      ] DEBUG   : repo: using cache for: PrecheckOSPatchRepo
2026-03-29 10:35:30,147 [dnf      ] DEBUG   : PrecheckOSPatchRepo: using metadata from Sun 29 Mar 2026 10:35:12 AM CEST.
2026-03-29 10:35:30,148 [dnf      ] INFO    : Last metadata expiration check: 0:00:18 ago on Sun 29 Mar 2026 10:35:12 AM CEST.
2026-03-29 10:35:31,907 [DNFHelper] DEBUG   : === DNF Plugin Status ===
2026-03-29 10:35:31,907 [DNFHelper] DEBUG   : DNF plugins are enabled
2026-03-29 10:35:31,910 [DNFHelper] DEBUG   : === Debug Info ===
2026-03-29 10:35:31,910 [DNFHelper] DEBUG   : Operation RPM Metadata: {"install": ["hmpipmitool.x86_64", "rhn-setup.x86_64", "uptrack-updates-5.15.0-316.196.4.1.el8uek.x86_64.noarch", "ksplice-offline.x86_64", "ksplice.x86_64"], "exclude": ["linux-firmware-core.noarch"], "remove": ["uptrack-updates-5.15.0-310.184.5.2.el8uek.x86_64.noarch"]}
2026-03-29 10:35:31,910 [DNFHelper] DEBUG   : Installed packages: ['MegaCli-8.07.07-1.noarch', 'NetworkManager-1:1.40.16-19.0.1.el8_10.x86_64', 'NetworkManager-config-server-1:1.40.16-19.0.1.el8_10.noarch', 'NetworkManager-libnm-1:1.40.16-19.0.1.el8_10.x86_64', 'NetworkManager-team-1:1.40.16-19.0.1.el8_10.x86_64', 'NetworkManager-tui-1:1.40.16-19.0.1.el8_10.x86_64', 'VRTSnbcfg-10.2.0.1-1686143553.x86_64', 'VRTSnbclibs-10.2.0.1-1686143611.x86_64', 'VRTSnbclt-10.2.0.1-1686143729.x86_64', 'VRTSnbpck-10.2.0.1-1686143786.x86_64', 'VRTSpbx-1.17.62.5-5.x86_64', 'VRTSpddea-18.0.1.0-0023.x86_64', 'abattis-cantarell-fonts-0.0.25-6.el8.noarch', 'acl-2.2.53-3.el8.x86_64', 'adcli-0.9.2-1.el8.x86_64', 'adwaita-cursor-theme-3.28.0-3.el8.noarch', 'adwaita-icon-theme-3.28.0-3.el8.noarch', 'aide-0.16-14.el8_5.1.x86_64', 'alsa-lib-1.2.10-2.el8.x86_64', 'annobin-11.13-2.0.6.el8.x86_64', 'at-3.1.20-12.el8.x86_64', 'at-spi2-atk-2.26.2-1.el8.x86_64', 'at-spi2-core-2.28.0-1.el8.x86_64', 'atk-2.28.1-1.el8.x86_64', 'attr-2.4.48-3.el8.x86_64', 'audit-3.1.2-1.0.1.el8.x86_64', 'audit-libs-3.1.2-1.0.1.el8.x
...
...
...
2026-03-29 10:35:32,505 [DNFHelper] ERROR   : Dependency solving failed
2026-03-29 10:35:32,505 [DNFHelper] ERROR   : Error occured:
Traceback (most recent call last):
  File "/opt/oracle/oak/pkgrepos/scripts/19.30.0.0.0/dnfhelper.py", line 315, in main
    metadata_file=metadata_file
  File "/opt/oracle/oak/pkgrepos/scripts/19.30.0.0.0/dnfhelper.py", line 226, in run_combined_dnf_txn
    base.resolve()
  File "/usr/lib/python3.6/site-packages/dnf/base.py", line 906, in resolve
    raise exc
dnf.exceptions.DepsolveError:
 Problem: conflicting requests
  - nothing provides rhn-client-tools = 2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe needed by rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64 from PrecheckOSPatchRepo
</pre>
</br>




<h3>Analysing problem and root cause</h3>



<p>I first checked if the package is really missing:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# rpm -qa | grep -i rhn-client-tools
[root@ODA01 ~]#
</pre>
</br>



<p>And it was definitively missing, when on other ODA it was existing:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA02 ~]# rpm -qa | grep -i rhn-client-tools
python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
[root@ODA02 ~]#
</pre>
</br>



<p> I checked in the history of the package management if one transaction could have affected this.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@ODA01 ~]# dnf history | grep -i rhn-client-tools
     2 | remove -y rhn-client-tools                                    | 2024-03-12 17:27 | Removed        |   16  &lt;
[root@ODA01 ~]#
</pre>
</br>



<p>And it was the case! Someone manually removed the package 2 years ago. And also we can see that 16 dependencies rpm have been removed as well. What a mess!</p>



<p>I take the opportunity here to remind that an ODA IS AN APPLIANCE, and not a normal linux server. Any yum or dnf changes will have huge impact on the ODA patching, knowing that each version is coming with its bundle patch version, and the ODA will lock the repository. If a package is needed (for example, veeam agent plugin) it is always better to prioritise an installation with a tar file which will be totally transparent for the ODA patching. Otherwise it is better to install each rpm individually, avoiding if possible yum or dnf. The worst of course is removing a package with several dependencies. dnf remove including dependencies is of course something that I would never recommend to run on an ODA.</p>



<p>The second question we can raise, is why now? We have been running several version from 2024 to 2026 and it seems only the 19.30 version is complaining about it.</p>



<p>Let&#8217;s list all the dependant packages that have been removed during this dnf transaction&#8230;</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# dnf history info 2
Transaction ID : 2
Begin time     : Tue 12 Mar 2024 05:27:35 PM CET
Begin rpmdb    : 1162:21b3b42bf2d4360e1ace842a41737674018ff3da
End time       : Tue 12 Mar 2024 05:27:36 PM CET (1 seconds)
End rpmdb      : 1146:a140a149ea28fdac865a8abdbe954771f896a078
User           : root 
Return-Code    : Success
Releasever     : 8
Command Line   : remove -y rhn-client-tools
Comment        :
Packages Altered:
    Removed dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch         @@System
    Removed python3-dmidecode-3.12.3-2.el8.x86_64                                          @@System
    Removed python3-dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch @@System
    Removed python3-dnf-plugin-ulninfo-0.3-2.module+el8.4.0+20142+f119a2fa.noarch          @@System
    Removed python3-hwdata-2.3.6-3.el8.noarch                                              @@System
    Removed python3-librepo-1.14.2-4.el8.x86_64                                            @@System
    Removed python3-netifaces-0.10.6-4.el8.x86_64                                          @@System
    Removed python3-newt-0.52.20-11.el8.x86_64                                             @@System
    Removed python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64           @@System
    Removed python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64    @@System
    Removed python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64           @@System
    Removed rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                   @@System
    Removed rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64            @@System
    Removed rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                   @@System
    Removed rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64                             @@System
    Removed usermode-1.113-2.el8.x86_64                                                    @@System
[root@ODA01 yum.repos.d]#
</pre>
</br>



<p>Of course, I do not need to mention that such action has not been performed on the other ODA from the customer field, and this is why the patching did not raise this issue on the other ODAs.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA02 ~]# dnf history | grep -i rhn-client-tools
[root@ODA02 ~]#
</pre>
</br>



<h3>Resolution</h3>



<p>The ODA had no internet access. That was a pity as I could have easily installed the needed packages that were removed from the official oracle linux distribution package manager, using dnf. So the only way of resolution for me was to download and install each package manually. In any case it was not worth to try otherwise the patching activity could have been stopped here. Stuff work as I had to download and install about 16 RPMs.</p>



<p>At the beginning, I tried to find the needed rpm from the Oracle linux distribution (yum.oracle.com) directly, but I need to say that it was not that so easy to find all the rpm. Also the maintenance windows was running on, and I had to find quickly a solution. I then get used of pkgs.org project which is a kind of search engine linking to the appropriate distribution mirror to download the package. We can see the home page of each project. It was much helpful because you can easily find the package, and in the download part it refers you to the exact rpm package you need from the official documentation. I found it so helpful knowing the time constraints.</p>



<p>For example for rhn-setup package, we can easily find it from pkgs.org:</p>



<p><a href="https://oraclelinux.pkgs.org/8/ol8-appstream-x86_64/rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm.html">https://oraclelinux.pkgs.org/8/ol8-appstream-x86_64/rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm.html</a></p>



<p>In the download part you will find the exact distribution link for the source and the binary, as well as the mirror, as displayed in next table:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Type</strong></td><td><strong>URL</strong></td></tr><tr><td><strong>Binary Package</strong></td><td>https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm</td></tr><tr><td><strong>Source Package</strong></td><td>https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackageSource/rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.src.rpm</td></tr><tr><td><strong>Mirror</strong></td><td>yum.oracle.com</td></tr></tbody></table></figure>



<p>So the package comes from the official distribution, and you can confirm for each of your downloads.</p>



<p>I could install the first package which are needed for rhn-client-tools:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,8,15,22]">
[root@ODA01 19.30]# rpm -ivh python3-newt-0.52.20-11.el8.x86_64.rpm
warning: python3-newt-0.52.20-11.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:python3-newt-0.52.20-11.el8      ################################# [100%]

[root@ODA01 19.30]# rpm -ivh python3-netifaces-0.10.6-4.el8.x86_64.rpm
warning: python3-netifaces-0.10.6-4.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:python3-netifaces-0.10.6-4.el8   ################################# [100%]

[root@ODA01 19.30]# rpm -ivh python3-hwdata-2.3.6-3.el8.noarch.rpm
warning: python3-hwdata-2.3.6-3.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:python3-hwdata-2.3.6-3.el8       ################################# [100%]

[root@ODA01 19.30]# rpm -ivh python3-dmidecode-3.12.2-15.el8.x86_64.rpm
warning: python3-dmidecode-3.12.2-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:python3-dmidecode-3.12.2-15.el8  ################################# [100%]
</pre>
</br>




<p>I then tried to install rhn-client-tools and python3-rhn-client-tools:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6]">
[root@ODA01 19.30]# rpm -ivh python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm
warning: python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
error: Failed dependencies:
        rhn-client-tools = 2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe is needed by python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64

[root@ODA01 19.30]# rpm -ivh rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm
warning: rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
error: Failed dependencies:
        python3-rhn-client-tools = 2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe is needed by rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
[root@ODA01 19.30]#
</pre>
</br>



<p>But it was like each one needs the other, so it was not possible to install it with rpm binary. I then used dnf to install them.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5]">
[root@ODA01 19.30]# mkdir local_repo_issue_rhn
[root@ODA01 19.30]# mv rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm ./local_repo_issue_rhn/
[root@ODA01 19.30]# mv python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm ./local_repo_issue_rhn/
[root@ODA01 19.30]# cd local_repo_issue_rhn/
[root@ODA01 local_repo_issue_rhn]# dnf install *.rpm
BKB_Common                                                                                                                                                                                                                            95 kB/s | 1.5 kB     00:00
Dependencies resolved.
=====================================================================================================================================================================================================================================================================
 Package                                                           Architecture                                    Version                                                                               Repository                                             Size
=====================================================================================================================================================================================================================================================================
Installing:
 python3-rhn-client-tools                                          x86_64                                          2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                           @commandline                                          110 k
 rhn-client-tools                                                  x86_64                                          2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                           @commandline                                          394 k

Transaction Summary
=====================================================================================================================================================================================================================================================================
Install  2 Packages

Total size: 503 k
Installed size: 2.4 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                                             1/1
  Installing       : rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                         1/2
  Running scriptlet: rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                         1/2
  Installing       : python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                 2/2
  Running scriptlet: python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                 2/2
  Verifying        : python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                 1/2
  Verifying        : rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                         2/2

Installed:
  python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                           rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64

Complete!
[root@ODA01 local_repo_issue_rhn]#
</pre>
</br>



<p>Working, I had now the rhn-client-tools installed:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 local_repo_issue_rhn]# rpm -qa | grep -i rhn-client
rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
[root@ODA01 local_repo_issue_rhn]#
</pre>
</br>



<p>I tried a new prepatch report:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 local_repo_issue_rhn]# cd
[root@ODA01 ~]# /opt/oracle/dcs/bin/odacli create-prepatchreport -sc -gi -st -v 19.30.0.0.0

Job details
----------------------------------------------------------------
                     ID:  0af9bc46-2bfe-42a1-a6dc-bb89b9c0abb8
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  Created
                Created:  March 29, 2026 12:57:10 CEST
                Message:  Use 'odacli describe-prepatchreport -i 0af9bc46-2bfe-42a1-a6dc-bb89b9c0abb8' to check details of results

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------

[root@ODA01 ~]#
</pre>
</br>



<p>Which failed again on the same OS patches verification step:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,21]">
[root@ODA01 ~]# odacli describe-prepatchreport -i 0af9bc46-2bfe-42a1-a6dc-bb89b9c0abb8

Prepatch Report
------------------------------------------------------------------------
                 Job ID:  0af9bc46-2bfe-42a1-a6dc-bb89b9c0abb8
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  FAILED
                Created:  March 29, 2026 12:57:10 PM CEST
                 Result:  One or more pre-checks failed for [OS]

Node Name
---------------
ODA01

Pre-Check                      Status   Comments
------------------------------ -------- --------------------------------------
__OS__
Validate supported versions     Success   Validated minimum supported versions.
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is patch location available     Success   Patch location is available.
Verify All OS patches           Failed    DCS-10252 - dnf dry-run execution
                                          failed: check
                                          /opt/oracle/dcs/log/jobfiles/
                                          dnfdryrunout_2026-03-29_12-57-
                                          23.0066_1614.log file for more details
...
...
...
</pre>
</br>



<p>And the log showed other missing packages that was part of the dependencies removed by the manual dnf remove command.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6,7,9]">
[root@ODA01 ~]# view /opt/oracle/dcs/log/jobfiles/dnfdryrunout_2026-03-29_12-57-23.0066_1614.log
...
...
...
dnf.exceptions.DepsolveError:
 Problem: package rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64 from PrecheckOSPatchRepo requires rhnsd, but none of the providers can be installed
  - package rhnsd-5.0.35-3.0.2.module+el8.10.0+90373+b70ceaf0.x86_64 from PrecheckOSPatchRepo requires rhn-check &gt;= 0.0.8, but none of the providers can be installed
  - conflicting requests
  - nothing provides dnf-plugin-spacewalk &gt;= 2.4.0 needed by rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64 from PrecheckOSPatchRepo
</pre>
</br>



<p>So I installed all other dependencies rpm.</p>



<p>I installed usermode rpm:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 19.30]# rpm -ivh usermode-1.113-2.el8.x86_64.rpm
warning: usermode-1.113-2.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing..a
   1:usermode-1.113-2.el8             ################################# [100%]
[root@ODA01 19.30]#
</pre>
</br>



<p>And finally all others with dnf:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,14]">
[root@ODA01 local_repo_issue_rhn]# ls -ltrh
total 568K
-rw-r--r--. 1 root root 33K Mar 29 13:24 rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm
-rw-r--r--. 1 root root 26K Mar 29 13:31 rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm
-rw-r--r--. 1 root root 72K Mar 29 13:31 python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm
-rw-r--r--. 1 root root 52K Mar 29 13:41 rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64.rpm
-rw-r--r--. 1 root root 31K Mar 29 13:53 python3-dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch.rpm
-rw-r--r--. 1 root root 54K Mar 29 14:08 python3-librepo-1.14.2-4.el8.x86_64.rpm
-rw-r--r--. 1 root root 24K Mar 29 14:08 dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch.rpm
-rw-r--r--. 1 root root 12K Mar 29 14:31 python3-dnf-plugin-ulninfo-0.3-3.module+el8.10.0+90380+96a02ce9.noarch.rpm
-rw-r--r--. 1 root root 93K Mar 29 14:31 librepo-1.14.2-4.el8.x86_64.rpm
-rw-r--r--. 1 root root 40K Mar 29 14:43 python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64.rpm

[root@ODA01 local_repo_issue_rhn]# dnf install *.rpm
BKB_Common                                                                                                                                                                                                                            37 kB/s | 1.5 kB     00:00
Dependencies resolved.
=====================================================================================================================================================================================================================================================================
 Package                                                              Architecture                                   Version                                                                              Repository                                            Size
=====================================================================================================================================================================================================================================================================
Installing:
 dnf-plugin-spacewalk                                                 noarch                                         2.8.5-11.0.3.module+el8.3.0+20070+f5719e00                                           @commandline                                          24 k
 python3-dnf-plugin-spacewalk                                         noarch                                         2.8.5-11.0.3.module+el8.3.0+20070+f5719e00                                           @commandline                                          31 k
 python3-dnf-plugin-ulninfo                                           noarch                                         0.3-3.module+el8.10.0+90380+96a02ce9                                                 @commandline                                          11 k
 python3-librepo                                                      x86_64                                         1.14.2-4.el8                                                                         @commandline                                          54 k
 python3-rhn-check                                                    x86_64                                         2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                          @commandline                                          39 k
 python3-rhn-setup                                                    x86_64                                         2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                          @commandline                                          71 k
 rhn-check                                                            x86_64                                         2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                          @commandline                                          26 k
 rhn-setup                                                            x86_64                                         2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe                                          @commandline                                          32 k
 rhnsd                                                                x86_64                                         5.0.35-3.0.1.module+el8+5192+3173336a                                                @commandline                                          51 k
Downgrading:
 librepo                                                              x86_64                                         1.14.2-4.el8                                                                         @commandline                                          93 k

Transaction Summary
=====================================================================================================================================================================================================================================================================
Install    9 Packages
Downgrade  1 Package

Total size: 432 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                                             1/1
  Downgrading      : librepo-1.14.2-4.el8.x86_64                                                                                                                                                                                                                1/11
  Installing       : python3-librepo-1.14.2-4.el8.x86_64                                                                                                                                                                                                        2/11
  Running scriptlet: dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                                     3/11
  Installing       : dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                                     3/11
  Running scriptlet: dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                                     3/11
  Installing       : python3-dnf-plugin-ulninfo-0.3-3.module+el8.10.0+90380+96a02ce9.noarch                                                                                                                                                                     4/11
  Installing       : python3-dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                             5/11
  Installing       : python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                       6/11
  Installing       : rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                               7/11
  Installing       : rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64                                                                                                                                                                                         8/11
  Running scriptlet: rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64                                                                                                                                                                                         8/11
  Installing       : python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                       9/11
  Installing       : rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                              10/11
  Cleanup          : librepo-1.14.2-5.el8.x86_64                                                                                                                                                                                                               11/11
  Running scriptlet: librepo-1.14.2-5.el8.x86_64                                                                                                                                                                                                               11/11
  Verifying        : librepo-1.14.2-4.el8.x86_64                                                                                                                                                                                                                1/11
  Verifying        : librepo-1.14.2-5.el8.x86_64                                                                                                                                                                                                                2/11
  Verifying        : dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                                     3/11
  Verifying        : python3-dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch                                                                                                                                                             4/11
  Verifying        : python3-dnf-plugin-ulninfo-0.3-3.module+el8.10.0+90380+96a02ce9.noarch                                                                                                                                                                     5/11
  Verifying        : python3-librepo-1.14.2-4.el8.x86_64                                                                                                                                                                                                        6/11
  Verifying        : python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                       7/11
  Verifying        : python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                       8/11
  Verifying        : rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                               9/11
  Verifying        : rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64                                                                                                                                                                                        10/11
  Verifying        : rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                                                                                                                                                              11/11

Downgraded:
  librepo-1.14.2-4.el8.x86_64
Installed:
  dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch              python3-dnf-plugin-spacewalk-2.8.5-11.0.3.module+el8.3.0+20070+f5719e00.noarch              python3-dnf-plugin-ulninfo-0.3-3.module+el8.10.0+90380+96a02ce9.noarch
  python3-librepo-1.14.2-4.el8.x86_64                                                 python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                        python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
  rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                        rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64                                rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64

Complete!
[root@ODA01 local_repo_issue_rhn]#
</pre>
</br>



<p>I checked the packages were there:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 local_repo_issue_rhn]# rpm -qa | grep -i rhn
python3-rhnlib-2.8.6-8.0.2.module+el8.7.0+21027+f0093b7a.noarch
rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
python3-rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
python3-rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
rhnsd-5.0.35-3.0.1.module+el8+5192+3173336a.x86_64
python3-rhn-client-tools-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
rhn-check-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
rhn-setup-2.8.16-13.0.6.module+el8.7.0+21032+057d0dfe.x86_64
rhnlib-2.8.6-8.0.2.module+el8.7.0+21027+f0093b7a.noarch
[root@ODA01 local_repo_issue_rhn]#
</pre>
</br>



<p>And rerun a precheck report:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# /opt/oracle/dcs/bin/odacli create-prepatchreport -sc -gi -st -v 19.30.0.0.0

Job details
----------------------------------------------------------------
                     ID:  3d5f5d96-f566-40c7-ad84-38c436fa3bba
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  Created
                Created:  March 29, 2026 14:46:06 CEST
                Message:  Use 'odacli describe-prepatchreport -i 3d5f5d96-f566-40c7-ad84-38c436fa3bba' to check details of results

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------

[root@ODA01 ~]#
</pre>
</br>



<p>Which was that time successful:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,7,21]">
[root@ODA01 ~]# odacli describe-prepatchreport -i 3d5f5d96-f566-40c7-ad84-38c436fa3bba

Prepatch Report
------------------------------------------------------------------------
                 Job ID:  3d5f5d96-f566-40c7-ad84-38c436fa3bba
            Description:  Patch pre-checks for [OS, ILOM, ORACHKSERVER, SERVER, STORAGE, RHPGI, GI] to 19.30.0.0.0
                 Status:  SUCCESS
                Created:  March 29, 2026 2:46:06 PM CEST
                 Result:  All pre-checks succeeded

Node Name
---------------
ODA01

Pre-Check                      Status   Comments
------------------------------ -------- --------------------------------------
__OS__
Validate supported versions     Success   Validated minimum supported versions.
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is patch location available     Success   Patch location is available.
Verify All OS patches           Success   No dependencies found for RPMs being
                                          removed, updated and installed. Check
                                          /opt/oracle/dcs/log/jobfiles/
                                          dnfdryrunout_2026-03-29_14-46-
                                          18.0970_2312.log file for more details
Validate command execution      Success   Validated command execution

__ILOM__
Validate ILOM server reachable  Success   Successfully connected with ILOM
                                          server using public IP and USB
                                          interconnect
Validate supported versions     Success   Validated minimum supported versions.
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is patch location available     Success   Patch location is available.
Checking Ilom patch Version     Success   Successfully verified the versions
Patch location validation       Success   Successfully validated location
Validate command execution      Success   Validated command execution

__ORACHK__
Running orachk                  Success   Successfully ran Orachk
Validate command execution      Success   Validated command execution

__SERVER__
Validate local patching         Success   Successfully validated server local
                                          patching
Validate all KVM ACFS           Success   All KVM ACFS resources are running
resources are running
Validate DB System VM states    Success   All DB System VMs states are expected
Validate command execution      Success   Validated command execution

__STORAGE__
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Patch location validation       Success   Verified patch location
Patch tag validation            Success   Verified patch tag
Storage patch tag validation    Success   Verified storage patch location
Verify ASM disks status         Success   ASM disks are online
Validate command execution      Success   Validated command execution

__RHPGI__
Validate available space        Success   Validated free space under /u01
Evaluate GI patching            Success   Successfully validated GI patching
Validate command execution      Success   Validated command execution

__GI__
Validate GI metadata            Success   Successfully validated GI metadata
Validate supported GI versions  Success   Successfully validated minimum version
Is clusterware running          Success   Clusterware is running
Validate patching tag           Success   Validated patching tag: 19.30.0.0.0.
Is system provisioned           Success   Verified system is provisioned
Validate ASM is online          Success   ASM is online
Validate kernel log level       Success   Successfully validated the OS log
                                          level
Validate Central Inventory      Success   oraInventory validation passed
Validate patching locks         Success   Validated patching locks
Validate clones location exist  Success   Validated clones location
Validate DB start dependencies  Success   DBs START dependency check passed
Validate DB stop dependencies   Success   DBs STOP dependency check passed
Validate space for clones       Success   Clones volume is already created
volume
Validate command execution      Success   Validated command execution

[root@ODA01 ~]#
</pre>
</br>



<p>I could then successfully patch the server components part:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@ODA01 ~]# /opt/oracle/dcs/bin/odacli update-servercomponents -v 19.30.0.0.0
{
  "jobId" : "fd6ed1d5-1982-46da-8c8c-dfa862f6427a",
  "status" : "Created",
  "message" : "A server update job has been initiated. If a reboot is required, it will be performed as part of the update process. The final status will be provided once the update operation has been completed on all nodes.",
  "reports" : [ ],
  "createTimestamp" : "March 29, 2026 15:00:09 CEST",
  "resourceList" : [ ],
  "description" : "Server Patching to 19.30.0.0.0",
  "updatedTime" : "March 29, 2026 15:00:09 CEST",
  "jobType" : null,
  "cpsMetadata" : null,
  "ecJobId" : null
}
[root@ODA01 ~]#
</pre>
</br>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,7]">
[root@ODA01 ~]# odacli describe-job -i fd6ed1d5-1982-46da-8c8c-dfa862f6427a

Job details
----------------------------------------------------------------
                     ID:  fd6ed1d5-1982-46da-8c8c-dfa862f6427a
            Description:  Server Patching to 19.30.0.0.0
                 Status:  Success
                Created:  March 29, 2026 15:00:09 CEST
                Message:

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------
Modify BM udev rules                     March 29, 2026 15:00:14 CEST             March 29, 2026 15:00:26 CEST             Success
Validate ILOM server reachable           March 29, 2026 15:00:14 CEST             March 29, 2026 15:00:14 CEST             Success
Validating GI user metadata              March 29, 2026 15:00:14 CEST             March 29, 2026 15:00:14 CEST             Success
Stop oakd                                March 29, 2026 15:00:26 CEST             March 29, 2026 15:00:30 CEST             Success
Creating local repository                March 29, 2026 15:00:30 CEST             March 29, 2026 15:00:31 CEST             Success
OSPatchBaseRepo
Updating versionlock plugin              March 29, 2026 15:00:31 CEST             March 29, 2026 15:00:34 CEST             Success
Applying OS Patches                      March 29, 2026 15:00:34 CEST             March 29, 2026 15:07:16 CEST             Success
Applying HMP Patches                     March 29, 2026 15:07:16 CEST             March 29, 2026 15:07:19 CEST             Success
Creating local repository HMPPatchRepo   March 29, 2026 15:07:16 CEST             March 29, 2026 15:07:16 CEST             Success
Patch location validation                March 29, 2026 15:07:19 CEST             March 29, 2026 15:07:19 CEST             Success
Setting SELinux mode                     March 29, 2026 15:07:19 CEST             March 29, 2026 15:07:19 CEST             Success
Oda-hw-mgmt upgrade                      March 29, 2026 15:07:20 CEST             March 29, 2026 15:07:53 CEST             Success
Installing SQLcl software                March 29, 2026 15:07:53 CEST             March 29, 2026 15:07:57 CEST             Success
OSS Patching                             March 29, 2026 15:07:53 CEST             March 29, 2026 15:07:53 CEST             Success
Applying Firmware local Disk Patches     March 29, 2026 15:07:57 CEST             March 29, 2026 15:07:59 CEST             Success
Applying Firmware local Controller Patch March 29, 2026 15:07:59 CEST             March 29, 2026 15:11:23 CEST             Success
Applying Firmware shared Controller      March 29, 2026 15:11:23 CEST             March 29, 2026 15:11:42 CEST             Success
Patch
Checking Ilom patch Version              March 29, 2026 15:11:43 CEST             March 29, 2026 15:11:43 CEST             Success
Disabling IPMI v2                        March 29, 2026 15:11:43 CEST             March 29, 2026 15:11:44 CEST             Success
Patch location validation                March 29, 2026 15:11:43 CEST             March 29, 2026 15:11:43 CEST             Success
Save password in Wallet                  March 29, 2026 15:11:43 CEST             March 29, 2026 15:11:43 CEST             Success
Apply Ilom patch                         March 29, 2026 15:11:44 CEST             March 29, 2026 15:22:19 CEST             Success
Copying Flash Bios to Temp location      March 29, 2026 15:22:19 CEST             March 29, 2026 15:22:19 CEST             Success
Start oakd                               March 29, 2026 15:22:20 CEST             March 29, 2026 15:22:36 CEST             Success
Add SYSNAME in Env                       March 29, 2026 15:22:37 CEST             March 29, 2026 15:22:37 CEST             Success
Cleanup JRE Home                         March 29, 2026 15:22:37 CEST             March 29, 2026 15:22:37 CEST             Success
Starting the clusterware                 March 29, 2026 15:22:37 CEST             March 29, 2026 15:23:29 CEST             Success
Update lvm.conf file                     March 29, 2026 15:23:30 CEST             March 29, 2026 15:23:30 CEST             Success
Generating and saving BOM                March 29, 2026 15:23:31 CEST             March 29, 2026 15:25:37 CEST             Success
Update System full patch version         March 29, 2026 15:23:31 CEST             March 29, 2026 15:23:31 CEST             Success
Update System rebootless patch version   March 29, 2026 15:23:31 CEST             March 29, 2026 15:23:31 CEST             Success
PreRebootNode Actions                    March 29, 2026 15:25:37 CEST             March 29, 2026 15:26:16 CEST             Success
Reboot Node                              March 29, 2026 15:26:16 CEST             March 29, 2026 15:39:48 CEST             Success

[root@ODA01 ~]#
</pre>
</br>



<h3>To wrap up&#8230;</h3>



<p>ODA is an appliance. Any bad behaviour with the rpm and dependencies will bring life more difficult to the consultant coming to patch your ODA. So thanks for sparing a thought for the consultant who will have to patch your ODA before you start playing with yum or dnf on your ODA. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oda-19-30-prepatch-report-failing-on-os-patches/">ODA 19.30 prepatch report failing on OS patches</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oda-19-30-prepatch-report-failing-on-os-patches/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deployment Creation INS-85037 Error With GoldenGate 26ai for DB2 z/OS</title>
		<link>https://www.dbi-services.com/blog/deployment-creation-ins-85037-error-with-goldengate-26ai-for-db2-z-os/</link>
					<comments>https://www.dbi-services.com/blog/deployment-creation-ins-85037-error-with-goldengate-26ai-for-db2-z-os/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 07:38:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[clidriver]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[INS-85037]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[oggca]]></category>
		<category><![CDATA[zOS]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43563</guid>

					<description><![CDATA[<p>Among all the automation I was doing around a GoldenGate installation for DB2, I recently ended up with an INS-85037 error when running the configuration assistant oggca.sh. And because this error is quite common and has many different possible root causes, I wanted to write about it. Differences in GoldenGate setup between Oracle and DB2 [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/deployment-creation-ins-85037-error-with-goldengate-26ai-for-db2-z-os/">Deployment Creation INS-85037 Error With GoldenGate 26ai for DB2 z/OS</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Among all the automation I was doing around a GoldenGate installation for DB2, I recently ended up with an <code>INS-85037</code> error when running the configuration assistant <code>oggca.sh</code>. And because this error is quite common and has many different possible root causes, I wanted to write about it.</p>



<h2 class="wp-block-heading" id="h-differences-in-goldengate-setup-between-oracle-and-db2">Differences in GoldenGate setup between Oracle and DB2</h2>



<p>If you&#8217;re wondering how to set up <strong>GoldenGate 26ai for DB2 z/OS</strong>, it is <strong>very similar</strong> to what you would do with GoldenGate for Oracle. For more information on standard GoldenGate setups, you can read my blog posts about both <a href="https://www.dbi-services.com/blog/goldengate-26ai-installation-and-new-administration-features/">26ai</a> and <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/">23ai</a> installations.</p>



<p>For the binary installation, the main difference is that <code>INSTALL_OPTION</code> should be set to <code>DB2ZOS</code>. A complete <code>oggcore.rsp</code> response file would look like this:</p>



<pre class="wp-block-code"><code>oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v23_1_0
INSTALL_OPTION=DB2ZOS
SOFTWARE_LOCATION=/u01/app/oracle/product/oggzos
INVENTORY_LOCATION=/u01/app/oraInventory
UNIX_GROUP_NAME=oinstall</code></pre>



<p>When running the configuration assistant, some options are not available, but the main difference is in the environment variables section of the response file. You should have an <code>IBMCLIDRIVER</code> variable set to your DB2 driver&#8217;s path.</p>



<pre class="wp-block-code"><code>ENV_LD_LIBRARY_PATH=${IBMCLIDRIVER}/1ib:${OGG_HOME}/1ib
IBMCLIDRIVER=/path/to/ibmclidriver
ENV_USER_VARS=</code></pre>



<h2 class="wp-block-heading" id="h-possible-solution-for-ins-85037">Possible Solution for INS-85037</h2>



<p>That being said, here is the exact error I had when running the Configuration Assistant <code>oggca.sh</code>:</p>



<pre class="wp-block-code"><code>&#091;FATAL] &#091;INS-85037] Deployment creation failed.
  ACTION: Check logs at /u01/app/oraInventory/logs/OGGCAConfigActions2026-03-22_15-19-15PM for more information.
*MORE DETAILS*
Return code 503 (Service Unavailable) does not match the expected code 201 (Created).
Verification failed for REST call to 'http://127.0.0.1:7810/services/v2/authorizations/security/ogguser'
Results for "Add a new deployment":
..."Verifying Service Manager deployment status.": SUCCEEDED
..."Adding 'zos_test' deployment.": SUCCEEDED
...."Configuring and starting the Administration Service.": SUCCEEDED
..."Verifying the initial Administration Service configuration.": SUCCEEDED
..."Adding user 'ogguser' to administer the deployment.": FAILED
Log of this session available at: /u01/app/oraInventory/logs/OGGCAConfigActions2026-03-22_15-19-15PM
The deployment creation failed and the associated files will be deleted from disk. Oracle recommends that if you want to keep the log files, you should move them to another location.
Log files will be copied to:
/u01/app/oraInventory/logs/OGGCAConfigActions2026-03-22_15-19-15PM/userdeploy_logs_2026-03-22_15-19-15PM
&#091;WARNING] &#091;INS-32090] Software installation was unsuccessful.
ACTION: Refer to the log files for details or contact Oracle Support Services.</code></pre>



<p>Unfortunately, the installation logs did not show anything other than the following:</p>



<pre class="wp-block-code"><code>SEVERE: Deployment creation job failed.
INFO: Service Manager deployment that was created as part of the process needs to be removed.
INFO: Running clean-up job for Service Manager.
SEVERE: Removing Service Manager deployment.</code></pre>



<p>The deployment and the service manager get deleted after the installation failure, but the logs are also copied to the <code>oraInventory</code> installation logs. Looking at the <code>ServiceManager.log</code> in the <code>smdeploy</code> folder, we don&#8217;t get much information.</p>



<pre class="wp-block-code"><code>ERROR| Configuration does not contain a 'config/network' specification. (ServiceManager.Topology)</code></pre>



<p>The same applies to the <code>restapi.log</code>, where the logs start after the initial deployment creation error. Unfortunately, none of this was really helpful in my case. After quite some digging, I found that the <strong>response file I was using</strong> when running <code>oggca.sh</code> had <strong>an error</strong>. In the custom section for environment variables, I had the following settings:</p>



<pre class="wp-block-code"><code># SECTION G - ENVIRONMENT VARIABLES
ENY_LD_LIBRARY_PATH-S{IBMCLIDRIVER}/1ib:${OGG_HOME}/11b
IBMCLIDRIVER=/u01/app/ibm/db2_odbc_cli_11_5
ENV_USER_VARS=</code></pre>



<p>It looks like what I gave earlier, except that the path for the clidriver was incomplete.</p>



<pre class="wp-block-code"><code>oracle@vmogg:/home/oracle/ &#091;ogg] ls -l /u01/app/ibm/db2_odbc_cli_11_5
drwxr-xr-x 3 oracle oinstall 23 Mar 22 2026 odbc_cli

oracle@vmogg:/home/oracle/ &#091;ogg] ls -l /u01/app/ibm/db2_odbc_cli_11_5/odbc_cli/clidriver/
-r-xr-xr-x 1 oracle oinstall 4170 Mar 17 2021 Readme.txt
drwxr-xr-x 2 oracle oinstall 36 Mar 22 2026 adm
drwxr-xr-x 2 oracle oinstall 122 Mar 22 2026 bin
drwxr-xr-x 2 oracle oinstall 197 Mar 22 2026 bnd
drwxr-xr-x 2 oracle oinstall 157 Mar 22 09:16 cfg
drwxr-xr-x 2 oracle oinstall 24 Mar 22 2026 cfecache
drwxr-xr-x 4 oracle oinstall 27 Mar 22 2026 conv
drwxr-xr-x 3 oracle oinstall 49 Mar 22 09:26 db2dump
drwxr-xr-x 3 oracle oinstall 217 Mar 22 2026 lib
drwxr-xr-x 3 oracle oinstall 124 Mar 22 09:26 license
drwxr-xr-x 3 oracle oinstall 28 Mar 22 2026 msg
drwxr-xr-x 3 oracle oinstall 21 Mar 22 2026 properties
drwxr-xr-x 3 oracle oinstall 20 Mar 22 2026 security32
drwxr-xr-x 3 oracle oinstall 20 Mar 22 2026 security64</code></pre>



<p>After correcting the <code>oggca.rsp</code> response file with the correct path, the configuration assistant ran successfully.</p>



<pre class="wp-block-code"><code>oracle@vmogg:/u01/app/oracle/product/ogg26/bin &#091;ogg] oggca.sh -silent -responseFile /home/oracle/oggca.rsp
Successfully Setup Software.</code></pre>



<p>Next time you encounter an error like this when setting up GoldenGate for DB2, make sure to check not only the variable value but also the actual content of the <code>IBMCLIDRIVER</code> directory !</p>



<p><em><strong>NB:</strong> If you had this error for any other kind of setup, make sure to always check all the content of the response file you are using, as well as the prerequisites. (CLIDRIVER in this case, but it could be XAG, etc.)</em></p>
<p>L’article <a href="https://www.dbi-services.com/blog/deployment-creation-ins-85037-error-with-goldengate-26ai-for-db2-z-os/">Deployment Creation INS-85037 Error With GoldenGate 26ai for DB2 z/OS</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/deployment-creation-ins-85037-error-with-goldengate-26ai-for-db2-z-os/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Discover refreshable clone PDB with Autoupgrade</title>
		<link>https://www.dbi-services.com/blog/discover-refreshable-clone-pdb-with-autoupgrade/</link>
					<comments>https://www.dbi-services.com/blog/discover-refreshable-clone-pdb-with-autoupgrade/#respond</comments>
		
		<dc:creator><![CDATA[Xavier Franck Godard]]></dc:creator>
		<pubDate>Tue, 24 Mar 2026 14:12:49 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[autoupgrade]]></category>
		<category><![CDATA[refreshable PDB]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43559</guid>

					<description><![CDATA[<p>AutoUpgrade with a refreshable clone is basically “zero‑panic upgrades with a live copy of your database.”. What problem it solves Traditionally you had to schedule a maintenance window, stop everything, take a backup, upgrade, and hope nothing went wrong. With a refreshable clone PDB, AutoUpgrade builds and continuously syncs a copy of your database while [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/discover-refreshable-clone-pdb-with-autoupgrade/">Discover refreshable clone PDB with Autoupgrade</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AutoUpgrade with a refreshable clone is basically “zero‑panic upgrades with a live copy of your database.”.</p>



<h2 class="wp-block-heading" id="h-what-problem-it-solves">What problem it solves</h2>



<p>Traditionally you had to schedule a maintenance window, stop everything, take a backup, upgrade, and hope nothing went wrong. </p>



<p>With a <strong>refreshable</strong> clone PDB, AutoUpgrade builds and continuously syncs a copy of your database while production stays online. At cutover time, you just stop users, do a last refresh, convert/upgrade the clone, and switch them over. If something goes wrong, the original source is untouched and you can fall back quickly.</p>



<h2 class="wp-block-heading" id="h-core-idea-in-simple-terms">Core idea in simple terms</h2>



<p>Think of your non‑CDB or old‑version PDB as the “master” and the refreshable clone PDB as a “follow‑me” copy sitting in the target CDB. </p>



<p>AutoUpgrade:</p>



<ul class="wp-block-list">
<li>Creates a PDB in the target CDB via database link (initial clone of datafiles).</li>



<li>Marks it as refreshable, so redo from the source is applied and it keeps rolling forward.</li>



<li>Lets you test the clone (read‑only) while users are still working on the source.</li>



<li>At a controlled start time, runs a last refresh, disconnects it from the source, converts it to a normal PDB, and upgrades it.</li>
</ul>



<p>From your point of view: you prepare everything days in advance, and the real downtime shrinks to “final refresh + upgrade + app switch.”</p>



<h2 class="wp-block-heading" id="h-high-level-lifecycle">High‑level lifecycle</h2>



<p>For a non‑CDB to PDB migration or a PDB upgrade, the flow looks like this:</p>



<h2 class="wp-block-heading" id="h-preparation"><strong>Preparation</strong></h2>



<ul class="wp-block-list">
<li>You have a source: non‑CDB 12.2/19c or older PDB.</li>



<li>You have a target: a higher‑version CDB (for example 23ai/26ai) with enough space and network.</li>
</ul>



<h2 class="wp-block-heading" id="h-initial-deploy-with-autoupgrade"><strong>Initial deploy with AutoUpgrade</strong></h2>



<ul class="wp-block-list">
<li>You configure AutoUpgrade with the source and target, plus the parameter telling it to use refreshable clone PDB.</li>



<li>In deploy mode, AutoUpgrade creates the pluggable database in the target CDB via DB link, copies the datafiles, and defines it as refreshable.</li>



<li>From now on, redo is shipped from source to target and applied, so the clone stays close to current.</li>
</ul>



<h2 class="wp-block-heading" id="h-sync-phase-low-risk-testing"><strong>Sync phase (low‑risk testing)</strong></h2>



<ul class="wp-block-list">
<li>The source database stays fully online; business keeps running.</li>



<li>The refreshable clone is read‑only, so you can query it, run app smoke tests, check performance characteristics, etc.</li>



<li>AutoUpgrade keeps the job running in the background, doing periodic refreshes.</li>
</ul>



<h2 class="wp-block-heading" id="h-cutover-final-refresh-and-conversion"><strong>Cutover (final refresh and conversion)</strong></h2>



<ul class="wp-block-list">
<li>When you reach the maintenance window, users leave the system and you quiesce activity on the source.</li>



<li>AutoUpgrade performs a final refresh: last redo from source is applied on the clone so you don’t lose any committed data.</li>



<li>The clone is then disconnected from the source, turned into a regular PDB, and AutoUpgrade moves into the upgrade and conversion steps (non‑CDB to PDB conversion if needed, then catalog/PSU/UTLRP, etc.).</li>
</ul>



<h2 class="wp-block-heading" id="h-post-upgrade-and-fallback"><strong>Post‑upgrade and fallback</strong></h2>



<ul class="wp-block-list">
<li>You point applications to the new PDB in the target CDB.</li>



<li>The original source database still exists; if you hit a show‑stopper, you can redirect apps back to it and plan a new attempt.</li>
</ul>



<p>In practice, the “scary” part is only the final refresh and the moment you switch your apps.</p>



<h2 class="wp-block-heading" id="h-why-dbas-like-this-pattern">Why DBAs like this pattern</h2>



<p>Some clear advantages:</p>



<ul class="wp-block-list">
<li><strong>Minimal downtime</strong>: Most of the heavy lifting (copy + sync) happens while production is running; downtime is limited to final refresh and upgrade.</li>



<li><strong>Built‑in rollback</strong>: Because the source stays untouched, you always have a clean fallback without restore/recovery.</li>



<li><strong>Realistic testing</strong>: You test against a clone built from real production data that is almost up‑to‑date, not a weeks‑old backup.</li>



<li><strong>Automation</strong>: AutoUpgrade orchestrates the create‑clone, refresh, disconnect, convert, and upgrade steps; you mostly steer with parameters and commands instead of custom scripts.</li>
</ul>



<p>Trade‑offs are mainly around resources: you need disk, CPU, and network to maintain the refreshable clone, and you have to ensure redo shipping is reliable (archivelog gaps or network glitches can break the refresh and need fixing).</p>



<h2 class="wp-block-heading" id="h-typical-example">Typical example</h2>



<p>Imagine you need to move a 19c non‑CDB to a new 26ai CDB on a different host, with less than 30 minutes downtime:</p>



<ul class="wp-block-list">
<li>Monday: you configure AutoUpgrade with the refreshable clone option, start the job. The tool creates the PDB clone in the 26ai CDB and starts streaming redo. Users never notice.</li>



<li>Next days: you let it refresh every few minutes, developers connect read‑only to the clone and test their application against 26ai. Everything looks good.</li>



<li>Saturday night: you enter the maintenance window, let open transactions finish, stop app traffic, and tell AutoUpgrade to proceed to the <strong>final refresh</strong>. Once that’s done, it disconnects the clone, upgrades it, and runs post‑upgrade steps.</li>



<li>After checks, you change the service names on the app side so they point to the new PDB. Your downtime is mostly spent waiting for the upgrade scripts, not copying terabytes of data.</li>
</ul>
<p>L’article <a href="https://www.dbi-services.com/blog/discover-refreshable-clone-pdb-with-autoupgrade/">Discover refreshable clone PDB with Autoupgrade</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/discover-refreshable-clone-pdb-with-autoupgrade/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-04-16 04:49:26 by W3 Total Cache
-->