<?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>Thu, 20 Aug 2026 06:47:32 +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>GoldenGate 26ai out-of-place patching with Python</title>
		<link>https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-python/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-python/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 20 Aug 2026 06:54:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[out of place]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[rest]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44875</guid>

					<description><![CDATA[<p>I already covered out-of-place patching from the web UI, but patching tasks should be automated, and clicking through the same screens for every deployment can get repetitive. Let’s do the exact same out-of-place patch of a GoldenGate Microservices Architecture deployment, this time entirely with the REST API. Every step below shows two ways to make [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-python/">GoldenGate 26ai out-of-place patching with Python</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I already covered <a href="https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/" target="_blank" rel="noopener noreferrer">out-of-place patching from the web UI</a>, but patching tasks should be automated, and clicking through the same screens for every deployment can get repetitive. Let’s do the exact same <strong>out-of-place patch of a GoldenGate Microservices Architecture deployment</strong>, this time entirely with the <strong>REST API</strong>.</p>



<p class="wp-block-paragraph">Every step below shows two ways to make the same call:</p>



<ul class="wp-block-list">
<li>A <strong>standard <code>requests</code> call</strong>, the default Python module to handle REST APIs.</li>



<li>The equivalent call using <strong><code>oggrestapi.py</code></strong>, the <code>OGGRestAPI</code> <a href="https://github.com/juliendlttr/ogg/blob/main/26/oggrestapi.py" target="_blank" rel="noopener noreferrer">Python client</a> I presented in <a href="https://www.dbi-services.com/blog/production-ready-goldengate-rest-client-in-python/" target="_blank" rel="noopener noreferrer">another blog</a>, which handles everything for you.</li>
</ul>



<h2 id="installing-the-latest-version-of-goldengate" class="wp-block-heading">Installing the latest version of GoldenGate</h2>



<p class="wp-block-paragraph">This part does not change: the REST API cannot install software on the server, so you still need to <strong>unzip the patched installation</strong> to a new <code>OGG_HOME</code> and run <code>runInstaller</code> in silent mode, as described in the web UI blog.</p>



<h2 id="patching-the-service-manager-with-the-rest-api" class="wp-block-heading">Patching the Service Manager with the REST API</h2>



<p class="wp-block-paragraph">As with the web UI, the Service Manager has to be patched first. Assume the following setup:</p>



<ul class="wp-block-list">
<li><code>sm_url</code>: <code>https://vmogg:7809</code></li>



<li><code>new_ogg_home</code>: <code>/u01/app/ogg/product/23.26.2.0.1</code></li>



<li><code>username</code> / <code>password</code>: an administrator on the Service Manager</li>
</ul>



<p class="wp-block-paragraph"><strong>Updating <code>OGG_HOME</code></strong> is a <code>PATCH</code> call on the <code>ServiceManager</code> deployment:</p>



<pre class="wp-block-code"><code>import requests

sm_url = "https://vmogg:7809"
auth = ("oggadmin", "password")

requests.patch(
    f"{sm_url}/services/v2/deployments/ServiceManager",
    json={"oggHome": "/u01/app/ogg/product/23.26.2.0.1"},
    auth=auth,
)</code></pre>



<p class="wp-block-paragraph">With <code>oggrestapi.py</code>:</p>



<pre class="wp-block-code"><code>from oggrestapi import OGGRestAPI

client = OGGRestAPI(url="https://vmogg:7809", username="oggadmin", password="password")
client.update_deployment(deployment="ServiceManager", ogg_home="/u01/app/ogg/product/23.26.2.0.1")</code></pre>



<p class="wp-block-paragraph">Already, you can see that the REST API client simplifies the patching a lot.</p>



<p class="wp-block-paragraph"><strong>Restarting the Service Manager</strong> is the same endpoint, this time setting <code>status</code>:</p>



<pre class="wp-block-code"><code>requests.patch(
    f"{sm_url}/services/v2/deployments/ServiceManager",
    json={"status": "restart"},
    auth=auth,
)</code></pre>



<pre class="wp-block-code"><code>client.restart_deployment(deployment="ServiceManager")</code></pre>



<p class="wp-block-paragraph"><code>restart_deployment</code> is a dedicated method in <code>oggrestapi.py</code>, following the same pattern already used for <code>restart_service</code>, <code>restart_extract</code> and <code>restart_replicat</code>. It makes it easier to use the API, instead of building the <code>{"status": "restart"}</code> payload yourself. It also takes an optional <code>only_if_running</code> argument, so a deployment that was already stopped before the patch is left alone rather than being started by the restart call.</p>



<p class="wp-block-paragraph">As with the web UI, all your deployment processes are still running on the old <code>OGG_HOME</code> at this point. The <code>AIService</code>, introduced in 26ai, does not pick up the new home automatically either. You should then <strong>list the services</strong> attached to the Service Manager and <strong>restart the ones that are not <code>ServiceManager</code> itself</strong>:</p>



<pre class="wp-block-code"><code>services = requests.get(
    f"{sm_url}/services/v2/deployments/ServiceManager/services",
    auth=auth,
).json()&#091;"response"]&#091;"items"]

for service in services:
    if service&#091;"name"] != "ServiceManager":
        requests.patch(
            f"{sm_url}/services/v2/deployments/ServiceManager/services/{service&#091;'name']}",
            json={"status": "restart"},
            auth=auth,
        )</code></pre>



<pre class="wp-block-code"><code>for service in client.list_services("ServiceManager"):
    if service.get("name") != "ServiceManager":
        client.restart_service(deployment="ServiceManager", service=service.get("name"))</code></pre>



<h2 id="patching-each-deployment-with-the-rest-api" class="wp-block-heading">Patching each deployment with the REST API</h2>



<p class="wp-block-paragraph">Once the Service Manager runs on the new home, repeat the same <strong>update, then restart</strong> sequence for each deployment (<code>oggHome</code>, then <code>status: restart</code>):</p>



<pre class="wp-block-code"><code>deployment = "ogg_test_01"

requests.patch(
    f"{sm_url}/services/v2/deployments/{deployment}",
    json={"oggHome": "/u01/app/ogg/product/23.26.2.0.1"},
    auth=auth,
)

requests.patch(
    f"{sm_url}/services/v2/deployments/{deployment}",
    json={"status": "restart"},
    auth=auth,
)</code></pre>



<pre class="wp-block-code"><code>client.update_deployment(deployment="ogg_test_01", ogg_home="/u01/app/ogg/product/23.26.2.0.1")
client.restart_deployment(deployment="ogg_test_01")</code></pre>



<p class="wp-block-paragraph">Once the deployment is back up, restart its extracts and replicats. Since these processes are not accessible through the Service Manager port, you need to change the URL. If you use a reverse proxy setup, or <code>auto_discovery=True</code> (see below), this is also easier with the Python client.</p>



<pre class="wp-block-code"><code>admin_url = "https://vmogg:7810"

extracts = requests.get(f"{admin_url}/services/v2/extracts", auth=auth).json()&#091;"response"]&#091;"items"]
for extract in extracts:
    requests.patch(f"{admin_url}/services/v2/extracts/{extract&#091;'name']}", json={"status": "stopped"}, auth=auth)
    requests.patch(f"{admin_url}/services/v2/extracts/{extract&#091;'name']}", json={"status": "running"}, auth=auth)

replicats = requests.get(f"{admin_url}/services/v2/replicats", auth=auth).json()&#091;"response"]&#091;"items"]
for replicat in replicats:
    requests.patch(f"{admin_url}/services/v2/replicats/{replicat&#091;'name']}", json={"status": "stopped"}, auth=auth)
    requests.patch(f"{admin_url}/services/v2/replicats/{replicat&#091;'name']}", json={"status": "running"}, auth=auth)</code></pre>



<p class="wp-block-paragraph">With <code>oggrestapi.py</code>, <code>restart_all_extracts</code> and <code>restart_all_replicats</code> do the same thing on an <code>OGGRestAPI</code> client already pointed at the deployment (either connected directly to its Administration Service, or through an NGINX reverse proxy with <code>deployment=</code> set):</p>



<pre class="wp-block-code"><code>admin_client = OGGRestAPI(url="https://vmogg:7810", username="oggadmin", password="password")
admin_client.restart_all_extracts(only_if_running=True)
admin_client.restart_all_replicats(only_if_running=True)</code></pre>



<h2 id="automating-the-whole-patching-in-one-call" class="wp-block-heading">Automating the whole patching in one call</h2>



<p class="wp-block-paragraph">The steps listed above (update home, restart deployment, restart processes for every deployment) is exactly what <code>patch_deployment</code> (a single deployment) and <code>patch_deployments</code> (all of them) already do in <code>oggrestapi.py</code>, internally calling <code>restart_deployment</code> for the restart step. They also handle the <code>ServiceManager</code> special case (patch and restart the deployment and its services, but never restart extracts and replicats on it) and the <code>wait_until_deployment_status</code> polling in between:</p>



<pre class="wp-block-code"><code>client = OGGRestAPI(url="https://vmogg:7809", username="oggadmin", password="password", reverse_proxy=True)
client.patch_deployments(new_home="/u01/app/ogg/product/23.26.2.0.1", ask_credentials=False)</code></pre>



<p class="wp-block-paragraph">Both methods take <code>restart_after_patch</code> and <code>restart_processes_after_patch</code> (both default to <code>True</code>) if you need to skip either step, for example to patch every home first and restart everything in a separate maintenance window:</p>



<pre class="wp-block-code"><code>client.patch_deployments(
    new_home="/u01/app/ogg/product/23.26.2.0.1",
    restart_after_patch=False,
    restart_processes_after_patch=False,
    ask_credentials=False,
)</code></pre>



<p class="wp-block-paragraph"><code>restart_processes_after_patch=True</code> needs per-deployment routing: restarting extracts and replicats on <code>ogg_test_01</code> is a different call than on <code>ogg_test_02</code>, and a plain connection to the Service Manager’s own port has no way to reach either one. <code>oggrestapi.py</code> gives you two ways to get that routing from a single client:</p>



<ul class="wp-block-list">
<li><code>reverse_proxy=True</code>, shown above, if you already run NGINX in front of your deployments.</li>



<li><code>auto_discovery=True</code>, with no reverse proxy at all. The client looks up each deployment’s real Administration/Distribution/Performance Metrics Service port through the Service Manager itself (the same <code>GET .../deployments/{deployment}/services/{service}</code> call), the first time each one is actually needed, and reuses that lookup for the rest of the run:</li>
</ul>



<pre class="wp-block-code"><code>client = OGGRestAPI(url="https://vmogg:7809", username="oggadmin", password="password", auto_discovery=True)
client.patch_deployments(new_home="/u01/app/ogg/product/23.26.2.0.1", ask_credentials=False)</code></pre>



<p class="wp-block-paragraph">Without either flag, patch with <code>restart_processes_after_patch=False</code> and restart each deployment’s processes yourself through a separate client pointed at that deployment’s own admin URL.</p>



<h2 id="some-services-are-still-running-on-the-old-ogg_home" class="wp-block-heading">Some services are still running on the old <code>OGG_HOME</code></h2>



<p class="wp-block-paragraph">Same as with the web UI: a <code>restart</code> call on a deployment returns as soon as the Administration Service (<code>adminsrvr</code>) is back up. The Receiver Service (<code>recvsrvr</code>) or the Distribution Service (<code>distsrvr</code>) can take a bit longer to restart. If, after polling for a few minutes, a service is still reporting the old home, restart it individually with the same <code>PATCH .../services/{service}</code> call shown above for the <code>AIService</code>, or with the <code>restart_service</code> method.</p>



<h2 id="other-things-to-consider" class="wp-block-heading">Other things to consider</h2>



<p class="wp-block-paragraph">If you change the name of your home at every release, remember to update <code>OGG_HOME</code> in every script and environment that references it, for example:</p>



<ul class="wp-block-list">
<li>DMK environment files.</li>



<li><code>systemd</code> service files, which might hardcode the <code>OGG_HOME</code> variable.</li>
</ul>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-python/">GoldenGate 26ai out-of-place patching with Python</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/goldengate-26ai-out-of-place-patching-with-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Checking Long Running Transactions in GoldenGate</title>
		<link>https://www.dbi-services.com/blog/checking-long-running-transactions-in-goldengate/</link>
					<comments>https://www.dbi-services.com/blog/checking-long-running-transactions-in-goldengate/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 17 Aug 2026 06:11:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[restapi]]></category>
		<category><![CDATA[transactions]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=45630</guid>

					<description><![CDATA[<p>When doing complex operations with GoldenGate, checking for long running transactions is mandatory if you don’t want to miss transactions. Let’s look at two ways of retrieving such information, first with the adminclient, and then with the REST API. When and why should I worry about long running transactions ? In a standard extract life-cycle, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/checking-long-running-transactions-in-goldengate/">Checking Long Running Transactions 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 class="wp-block-paragraph">When doing complex operations with GoldenGate, checking for long running transactions is mandatory if you don’t want to miss transactions. Let’s look at two ways of retrieving such information, first with the <code>adminclient</code>, and then with the REST API.</p>



<h2 id="h-when-and-why-should-i-worry-about-long-running-transactions" class="wp-block-heading">When and why should I worry about long running transactions ?</h2>



<p class="wp-block-paragraph">In a standard extract life-cycle, you should not be worrying about long running transactions. In fact, the only time you should think about these is when you plan an extract migration. By this, I mean moving an ongoing extract to a new GoldenGate environment.</p>



<p class="wp-block-paragraph">This could be the case if you are moving the extract to a new GoldenGate deployment, whether it’s because of a version upgrade, system change or architecture change.</p>



<p class="wp-block-paragraph">Another candidate scenario would be if you wanted to rename an extract.</p>



<h2 id="h-checking-for-long-running-transactions-with-the-adminclient" class="wp-block-heading">Checking for Long Running Transactions with the <code>adminclient</code></h2>



<p class="wp-block-paragraph">To check for long running transactions in the source database, you can use the <code>adminclient</code> and the <code>showtrans tabular</code> option of the <code>send</code> command.</p>



<pre class="wp-block-code"><code>OGG (https://vmogg ogg_test_01) 1&gt; send extract ext showtrans tabular

Sending showtrans tabular request to Extract group EXT ...



XID                     Items    Extract   Redo Thread  Start Time           SCN                               Redo Seq  Redo RBA            Status
------------------------------------------------------------------------------------------------------------------------------------------------------
0.17.18.1700953         0        EXT       1            2026-06-06:08:04:12  629.3084780551 (2704619209735)    48911     156909584           Running</code></pre>



<p class="wp-block-paragraph"><strong>WARNING:</strong> This command will query the database for <strong>ALL</strong> active transactions ! There is absolutely no filter in place to only show transactions that are relevant for the extract you are targeting. To confirm this, let’s look in the database to get more information about this transaction.</p>



<pre class="wp-block-code"><code>-- Query to get the schema associated with a specific transaction, based on the XID column from the OGG output above
SELECT s.username, t.xidusn, t.xidslot, t.xidsqn, t.start_time, t.start_scn
FROM v$transaction t
JOIN v$session s ON t.ses_addr = s.saddr
WHERE t.xidusn = 17
AND t.xidslot = 18
AND t.xidsqn = 1700953;

USERNAME       XIDUSN     XIDSLOT      XIDSQN START_TIME          START_SCN
---------  ----------  ----------  ---------- ------------------- ----------------
DBIBLOG            17          18     1700953 06/06/26 08:04:12   2704619209735</code></pre>



<p class="wp-block-paragraph">But if I look at the extract parameter file, the <code>DBIBLOG</code> schema is not even being extracted.</p>



<pre class="wp-block-code"><code>OGG (https://vmogg ogg_test_01) 1&gt; view params EXT
EXTRACT EXT
USERIDALIAS source_cdb DOMAIN OracleGoldenGate
EXTTRAIL pdb1/aa
SOURCECATALOG PDB1
TABLE APP_SCHEMA.*;</code></pre>



<p class="wp-block-paragraph">Of course, the <code>DBIBLOG</code> user might be editing data in the <code>APP_SCHEMA</code> schema, but there is no way to know for sure just by looking at the output of <code>adminclient</code> command above.</p>



<p class="wp-block-paragraph">When searching for long running transactions, you should retrieve the <code>START_SCN</code> of the transaction. In the example given above, the <code>START_SCN</code> is <code>2704619209735</code>.</p>



<p class="wp-block-paragraph">Now that we have the <code>START_SCN</code>, we can check if the extract has already processed it or not by looking at the checkpoint information. From the <code>adminclient</code>, run the <code>info extract EXT showch</code> command:</p>



<pre class="wp-block-code"><code>OGG (https://vmogg ogg_test_01) 1&gt; info extract EXT showch

Extract    EXT       Last Started 2026-06-06 07:45   Status RUNNING
Description          'Test extract'
Checkpoint Lag       00:01:45 (updated 00:00:32 ago)
Process ID           11711
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2026-06-06:09:01:45
                     SCN 629.3086233843 (2704620663027)
Settings Profile     ogg:managedProcessSettings:dbiDefault


Current Checkpoint Detail:

Read Checkpoint #1

  Oracle Integrated Redo Log

  Startup Checkpoint (starting position in the data source):
    Timestamp: 2026-06-06:07:45:45.000000
    SCN: 0.0 (0)

  Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Timestamp: 2026-06-06:08:04:13.000000
    SCN: 629.3084780551 (2704619209735)

  Current Checkpoint (position of last record read in the data source):
    Timestamp: 2026-06-06:09:01:45.000000
    SCN: 629.3086233843 (2704620663027)

  BR Startup Recovery Checkpoint:
    Timestamp: 2026-06-02 10:17:33.403806
    SCN: 0.0 (0)

  BR Begin Recovery Checkpoint:
    Timestamp: 2026-06-06 08:04:13.000000
    SCN: 629.3084780551 (2704619209735)

  BR End Recovery Checkpoint:
    Timestamp: 2026-06-06 08:08:45.000000
    SCN: 629.3084879559 (2704619308743)

Write Checkpoint #1

  GGS Log Trail

  Current Checkpoint (current write position):
    Sequence #: 41
    RBA: 50476
...</code></pre>



<p class="wp-block-paragraph">If we put side to side the <code>START_SCN</code> of the long running transaction and the <code>SCN</code> of the recovery checkpoint, we can see that they are exactly the same (<code>2704619209735</code>). This is expected, and it means that the extract has not yet processed this transaction.</p>



<pre class="wp-block-code"><code># From SQL query on the source database
USERNAME       XIDUSN     XIDSLOT      XIDSQN START_TIME          START_SCN
---------  ----------  ----------  ---------- ------------------- ----------------
DBIBLOG            17          18     1700953 06/06/26 08:04:12   2704619209735

# From adminclient
  Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Timestamp: 2026-06-06:08:04:13.000000
    SCN: 629.3084780551 (2704619209735)</code></pre>



<p class="wp-block-paragraph">If you wanted to <strong>move the extract</strong> to another GoldenGate installation or <strong>rename it</strong>, this would be the <code>SCN</code> at which you would need to start the new extract to avoid missing transactions.</p>



<h2 id="h-checking-for-long-running-transactions-from-the-rest-api" class="wp-block-heading">Checking for Long Running Transactions from the REST API</h2>



<p class="wp-block-paragraph">If you are trying to <strong>automate</strong> the process of checking for long running transactions, using the <code>adminclient</code> might not be the best option. In fact, the display of long running transactions in the <code>adminclient</code> is not designed to be easily parsed by scripts.</p>



<p class="wp-block-paragraph">Fortunately, you can also <strong>check for long running transactions</strong> using the official <strong>GoldenGate REST API</strong>. The endpoint that you need to call is <code>GET /services/{version}/connections/{connection}/activeTransactions</code>. It is described in the GoldenGate <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-connections-connection-activetransactions-get.html" target="_blank" rel="noreferrer noopener">REST API documentation</a>.</p>



<p class="wp-block-paragraph">The endpoint path parameters explain why the transactions shown in the output are not specific to the endpoint. In GoldenGate, a <code>connection</code> is database specific. Combine the domain name and the alias name with a dot separator to form the <code>connection</code> name. In my case, the <code>connection</code> name is <code>OracleGoldenGate.source_cdb</code>.</p>



<p class="wp-block-paragraph">In Python, let’s see two ways of getting the same information:</p>



<ul class="wp-block-list">
<li>Using the production-ready 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>.</li>



<li>Using the <code>requests</code> library to call the REST API directly.</li>
</ul>



<p class="wp-block-paragraph">Using the Python client, you can just call the <code>get_active_transactions</code> method as follows:</p>



<pre class="wp-block-code"><code>from oggrestapi import OGGRestAPI

ogg_client = OGGRestAPI(
    url="https://vmogg:7809",
    username="ogg",
)

active_transactions = ogg_client.get_active_transactions('OracleGoldenGate.source_cdb')

&gt;&gt;&gt; active_transactions
{'activeTransactions': &#091;{'txnStartScn': 2704619209735, 'txnStatus': 'ACTIVE', 'txnStartDate': '2026-06-06T08:04:12.000Z', 'sid': 834, 'serialNum': 16450, 'instanceId': 1, 'userName': 'DBIBLOG', 'osUser': 'oracle', 'sessionStatus': 'INACTIVE', 'logonTime': '2026-06-06T08:04:11.456Z'}], 'currentScn': {'csn': 2704620465717, 'currentDate': '2026-06-06T08:27:45.717Z', 'userName': 'SYS'}, '$schema': 'ogg:activeTransactions'}</code></pre>



<p class="wp-block-paragraph">Otherwise, with the <code>requests</code> library, you can call the <code>activeTransactions</code> endpoint as follows:</p>



<pre class="wp-block-code"><code>import requests

connection_name = "OracleGoldenGate.source_cdb"
# Basic configuration
# Direct connection (no reverse proxy)
# url = f"https://vmogg:7809/services/v2/connections/{connection_name}/activeTransactions"
# NGINX reverse proxy
url = f"https://vmogg/services/ogg_test_01/adminsrvr/v2/connections/{connection_name}/activeTransactions"

auth = ("ogg", "ogg_password")
response = requests.get(
    url,
    auth=auth
)</code></pre>



<p class="wp-block-paragraph">Here is an example of the output that you should get when looking at the <code>response.json()</code> value:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; active_transactions = response.json()&#091;'response']
&gt;&gt;&gt; active_transactions
{'activeTransactions': &#091;{'txnStartScn': 2704619209735, 'txnStatus': 'ACTIVE', 'txnStartDate': '2026-06-06T08:04:12.000Z', 'sid': 834, 'serialNum': 16450, 'instanceId': 1, 'userName': 'DBIBLOG', 'osUser': 'oracle', 'sessionStatus': 'INACTIVE', 'logonTime': '2026-06-06T08:04:11.456Z'}], 'currentScn': {'csn': 2704620465717, 'currentDate': '2026-06-06T08:27:45.717Z', 'userName': 'SYS'}, '$schema': 'ogg:activeTransactions'}</code></pre>



<p class="wp-block-paragraph">Or using the <code>json.dumps()</code> method to get a more readable output:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; import json
&gt;&gt;&gt; print(json.dumps(active_transactions, indent=4))
{
    "activeTransactions": &#091;
        {
            "txnStartScn": 2704619209735,
            "txnStatus": "ACTIVE",
            "txnStartDate": "2026-06-06T08:04:12.000Z",
            "sid": 834,
            "serialNum": 16450,
            "instanceId": 1,
            "userName": "DBIBLOG",
            "osUser": "oracle",
            "sessionStatus": "INACTIVE",
            "logonTime": "2026-06-06T08:04:11.456Z"
        }
    ],
    "currentScn": {
        "csn": 2704620465717,
        "currentDate": "2026-06-06T08:27:45.717Z",
        "userName": "SYS"
    },
    "$schema": "ogg:activeTransactions"
}</code></pre>



<p class="wp-block-paragraph">Using the REST API, the information is more complete and easier to parse. As mentioned before, retrieving the <code>SCN</code> at which the transaction started is sometimes necessary. In that case, you can get it from the following command:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; start_scn = active_transactions&#091;'activeTransactions']&#091;0]&#091;'txnStartScn']
&gt;&gt;&gt; start_scn
2704619209735</code></pre>



<p class="wp-block-paragraph">If you have multiple long running transactions, you should retrieve the minimum value for the <code>txnStartScn</code> to be sure to get the <code>SCN</code> of the oldest long running transaction.</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; start_scns = &#091;txn&#091;'txnStartScn'] for txn in active_transactions&#091;'activeTransactions']]
&gt;&gt;&gt; min(start_scns)
2704619209735</code></pre>



<p class="wp-block-paragraph">Now that we’ve retrieved the <code>START_SCN</code> of the long running transaction, we should check the checkpoint information.</p>



<p class="wp-block-paragraph">Using the Python client, you can call the <code>get_extract_checkpoint</code> method as follows:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; extract_checkpoints = ogg_client.get_extract_checkpoint('EXT')
&gt;&gt;&gt; extract_checkpoints
{'$schema': 'ogg:extractCheckpoints', 'current': {'input': &#091;{'starting': {'timestamp': '2026-06-06T07:45:45.000Z', 'thread': 1, 'sequence': 0, 'offset': 0, 'csn': None, 'name': None}, 'recovery': {'timestamp': '2026-06-06T08:04:13.000Z', 'thread': 1, 'sequence': 48911, 'offset': 156909584, 'csn': 2704619209735, 'name': None}, 'current': {'timestamp': '2026-06-06T09:01:45.000Z', 'thread': 1, 'sequence': 0, 'offset': 0, 'csn': 2704620663027, 'name': None}, 'boundedRecoveryPrevious': {'timestamp': '2026-06-02 10:17:33.404Z', 'thread': 0, 'sequence': 0, 'offset': 0, 'csn': None, 'name': None}, 'boundedRecoveryBegin': {'timestamp': '2026-06-06T08:04:13.000Z', 'thread': 0, 'sequence': 48911, 'offset': 156909584, 'csn': 2704619209735, 'name': None}, 'boundedRecoveryEnd': {'timestamp': '2026-06-06T08:08:45.000Z', 'thread': 1, 'sequence': 48912, 'offset': 156918384, 'csn': 2704619308743, 'name': None}}]}</code></pre>



<p class="wp-block-paragraph">Or, using the <code>requests</code> library:</p>



<pre class="wp-block-code"><code>response = requests.get(
    "https://vmogg/services/ogg_test_01/adminsrvr/v2/extracts/EXT/checkpoint",
    auth=auth
)

extract_checkpoints = response.json()&#091;'response']</code></pre>



<p class="wp-block-paragraph">Here is a more readable output from the checkpoint information:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; print(json.dumps(extract_checkpoints, indent=4))
{
    "$schema": "ogg:extractCheckpoints",
    "current": {
        "input": &#091;
            {
                "starting": {
                    "timestamp": "2026-06-06T07:45:45.000Z",
                    "thread": 1,
                    "sequence": 0,
                    "offset": 0,
                    "csn": null,
                    "name": null
                },
                "recovery": {
                    "timestamp": "2026-06-06T08:04:13.000Z",
                    "thread": 1,
                    "sequence": 48911,
                    "offset": 156909584,
                    "csn": 2704619209735,
                    "name": null
                },
                "current": {
                    "timestamp": "2026-06-06T09:01:45.000Z",
                    "thread": 1,
                    "sequence": 0,
                    "offset": 0,
                    "csn": 2704620663027,
                    "name": null
                },
                "boundedRecoveryPrevious": {
                    "timestamp": "2026-06-02T10:17:33.404Z",
                    "thread": 0,
                    "sequence": 0,
                    "offset": 0,
                    "csn": null,
                    "name": null
                },
                "boundedRecoveryBegin": {
                    "timestamp": "2026-06-06T08:04:13.000Z",
                    "thread": 0,
                    "sequence": 48911,
                    "offset": 156909584,
                    "csn": 2704619209735,
                    "name": null
                },
                "boundedRecoveryEnd": {
                    "timestamp": "2026-06-06T08:08:45.000Z",
                    "thread": 1,
                    "sequence": 48912,
                    "offset": 156918384,
                    "csn": 2704619308743,
                    "name": null
                }
            }
        ]
    }
}</code></pre>



<p class="wp-block-paragraph">And to finish with, from the json, you can retrieve the <code>SCN</code> of the recovery checkpoint:</p>



<pre class="wp-block-code"><code>&gt;&gt;&gt; recovery_checkpoint_scn = extract_checkpoints&#091;'current']&#091;'input']&#091;0]&#091;'recovery']&#091;'csn']
&gt;&gt;&gt; recovery_checkpoint_scn
2704619209735</code></pre>



<p class="wp-block-paragraph">Whether it’s to rename or move an extract, you now know why you should check long running transactions in GoldenGate, and how to do it from the <code>adminclient</code> and the REST API.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/checking-long-running-transactions-in-goldengate/">Checking Long Running Transactions 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/checking-long-running-transactions-in-goldengate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DB2 SQL1598N Licensing Error When Upgrading GoldenGate</title>
		<link>https://www.dbi-services.com/blog/db2-sql1598n-licensing-error-when-upgrading-goldengate/</link>
					<comments>https://www.dbi-services.com/blog/db2-sql1598n-licensing-error-when-upgrading-goldengate/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 13 Aug 2026 06:18:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[clidriver]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[db2cli]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[execsql]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Licensing]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[sql1598n]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46175</guid>

					<description><![CDATA[<p>While upgrading GoldenGate to 26ai for a DB2 z/OS source, I had to update the IBM Data Server Driver for ODBC and CLI (CLI Driver, in short) alongside it. Since I realized that DB2 driver know-how was rare in companies, I figured it would be worth writing a blog about the topic. In this GoldenGate [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/db2-sql1598n-licensing-error-when-upgrading-goldengate/">DB2 SQL1598N Licensing Error When Upgrading GoldenGate</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">While upgrading GoldenGate to 26ai for a DB2 z/OS source, I had to update the <em><a href="https://www.ibm.com/support/pages/db2-odbc-cli-driver-download-and-installation-information" target="_blank" rel="noreferrer noopener">IBM Data Server Driver for ODBC and CLI</a></em> (<em><strong>CLI Driver</strong></em>, in short) alongside it. Since I realized that DB2 driver know-how was rare in companies, I figured it would be worth writing a blog about the topic.</p>



<p class="wp-block-paragraph">In this GoldenGate upgrade, the previous driver was version 11.1 and the target version was 12.1. After installing the new driver, <code>db2cli execsql</code> commands that previously worked started failing with the following error:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
db2cli execsql -db &amp;lt;database_alias&amp;gt; -user &amp;lt;username&amp;gt; -passwd &amp;lt;password&amp;gt; \
  -inputsql /home/oracle/input.sql
</pre></div>


<p class="wp-block-paragraph">Where <code>/home/oracle/input.sql</code> just contains a trivial test query:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
select 1 from sysibm.sysdummy1;
</pre></div>


<p class="wp-block-paragraph">The <code>sysibm.sysdummy1</code> table is DB2’s equivalent of Oracle’s <code>DUAL</code>, so this is about the simplest query you can run to check connectivity. It failed with the following error:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
SQLError: 1 = 0 (SQL_SUCCESS)
SQLGetDiagRec: SQLState : 42968
NativeError : -1598
DiagMsg: &#x5B;IBM]&#x5B;CLI Driver] SQL1598N An attempt to connect to the database server failed because of a licensing problem. SQLSTATE=42968
</pre></div>


<h2 id="h-what-sql1598n-means" class="wp-block-heading">What SQL1598N means</h2>



<p class="wp-block-paragraph"><code>SQL1598N</code> means the DB2 client does not have a valid license to connect to this database. The CLI driver loaded fine. But when it tried to establish an authenticated connection the server rejected it on licensing grounds.</p>



<p class="wp-block-paragraph">This is distinct from a connection failure or an authentication failure.</p>



<h2 id="h-root-cause" class="wp-block-heading">Root cause</h2>



<p class="wp-block-paragraph">It might not be obvious for Oracle-accustomed DBAs, but the <strong>DB2 CLI Driver does not ship with a license file</strong> for connecting to DB2 for z/OS. A separate license file named <code>db2consv_zs.lic</code> must be placed manually in the <code>clidriver/license/</code> directory of the driver installation.</p>



<p class="wp-block-paragraph">The critical point is that <strong>the license file is version-specific and cannot be reused across driver versions</strong>. The license file that worked with driver 11.1 is not valid for driver 12.1. After upgrading the driver, the new installation directory does not contain the license file in the <code>license/</code> folder, and copying the old license file into it will not resolve the error.</p>



<h2 id="h-observed-behavior" class="wp-block-heading">Observed behavior</h2>



<p class="wp-block-paragraph">The error was reproducible every time the same command was run against the new driver. For reference, a successful run against a properly licensed driver returns:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
FetchAll: Columns: 1
1
1
FetchAll: 1 rows fetched.
</pre></div>


<h2 id="h-license-file-location" class="wp-block-heading">License file location</h2>



<p class="wp-block-paragraph">It is important to keep in mind that the license file belongs in the <code>license/</code> subdirectory of the CLI driver installation. With CLI driver 11.1, the path looked like:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/opt/ibm/db2_odbc_cli_11_1/clidriver/license/db2consv_zs.lic
</pre></div>


<p class="wp-block-paragraph">After upgrading to 12.1, the <strong>new driver</strong> has its own separate installation directory with <strong>its own <code>license/</code> subdirectory</strong>. Placing the old 11.1 license file there will not work &#8211; the file is tied to the driver version.</p>



<h2 id="h-how-to-fix-the-issue" class="wp-block-heading">How to fix the issue ?</h2>



<p class="wp-block-paragraph">Since the old file is unusable, you must obtain a new license file matching the installed driver version from IBM. Essentially, you have two options here:</p>



<ul class="wp-block-list">
<li><strong>Contact your DB2 engineers</strong>: if someone on the team manages IBM software licenses, they should be able to provide the correct <code>db2consv_zs.lic</code> for the version you installed.</li>



<li><strong>Open a case with IBM customer support</strong>: IBM will provide the appropriate license file for the new driver version.</li>
</ul>



<p class="wp-block-paragraph">Once you have the correct file, place it in the <code>clidriver/license/</code> directory of the new driver installation and retry the same <code>db2cli execsql</code> command given above. No restart is required.</p>



<p class="wp-block-paragraph">DB2 CLI drivers are not that complicated to use and to debug. However, there are a few fundamentals that GoldenGate administrators should know before attempting a migration. Renewing the license file is one of them.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/db2-sql1598n-licensing-error-when-upgrading-goldengate/">DB2 SQL1598N Licensing Error When Upgrading 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/db2-sql1598n-licensing-error-when-upgrading-goldengate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate Extract Abending on NFS Trail: OGG-02897 / OGG-01668 Input/Output Error</title>
		<link>https://www.dbi-services.com/blog/goldengate-extract-abending-on-nfs-trail-ogg-02897-ogg-01668-input-output-error/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-extract-abending-on-nfs-trail-ogg-02897-ogg-01668-input-output-error/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 06:02:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[19]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[NFS]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[ogg-01668]]></category>
		<category><![CDATA[ogg-02897]]></category>
		<category><![CDATA[trail]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46068</guid>

					<description><![CDATA[<p>While working on a client’s GoldenGate 26ai environment, I ran into a NFS-related replication issue that could have been serious, had it happened in production. Here is what happened and how the issue was fixed. The client’s GoldenGate extract was running on a dedicated server, capturing changes from an Oracle 19c source database. Trail files [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-extract-abending-on-nfs-trail-ogg-02897-ogg-01668-input-output-error/">GoldenGate Extract Abending on NFS Trail: OGG-02897 / OGG-01668 Input/Output Error</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">While working on a client’s GoldenGate 26ai environment, I ran into a NFS-related replication issue that could have been serious, had it happened in production. Here is what happened and how the issue was fixed.</p>



<p class="wp-block-paragraph">The client’s GoldenGate extract was running on a dedicated server, capturing changes from an Oracle 19c source database. Trail files were written on an NFS. Depending on the configuration, this is officially supported by Oracle, and works rather well.</p>



<h2 id="h-ogg-02897-ogg-01668-input-output-error" class="wp-block-heading"><code>OGG-02897</code> / <code>OGG-01668</code> Input/Output Error</h2>



<p class="wp-block-paragraph">On a Monday morning, however, the extract was <code>ABENDED</code>. The extract had been down since Saturday night, with the following error messages:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
2026-06-07T00:19:11.404+0200  ERROR   OGG-02897  Oracle GoldenGate Capture for Oracle, EXT.prm:  Failed to synchronize trail file. Error detail: Could not sync &quot;PDB1/aa000000009&quot; (error 5, Input/output error).
2026-06-07T00:19:11.404+0200  ERROR   OGG-01668  Oracle GoldenGate Capture for Oracle, EXT.prm:  PROCESS ABENDING.
</pre></div>


<p class="wp-block-paragraph">The extract was failing with an <code>OGG-02897</code> error. The OS-level error, <code>errno 5: Input/output error</code>, did not seem to indicate any good news for us. Needless to say that restarting the extract did not fix the issue.</p>



<h2 id="h-root-cause-analysis" class="wp-block-heading">Root Cause Analysis</h2>



<p class="wp-block-paragraph">A firewall upgrade had taken place that Saturday night. The firewall between the GoldenGate server and the NFS server was upgraded, and it briefly went down during the operation.</p>



<p class="wp-block-paragraph">The real problem was what happened after the firewall came back up: some extracts caught up and managed to restart properly, while other were left in this <code>ABENDED</code> state, unable to restart. For these extracts, I/O operations kept failing even though the network path was healthy again.</p>



<h2 id="h-solution-remount-the-nfs" class="wp-block-heading">Solution: Remount the NFS</h2>



<p class="wp-block-paragraph">The solution was to stop all GoldenGate processes whose trail files were generated on the NFS, including all the processes which were running fine, and then unmount and remount the NFS filesystem.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
# Unmount the NFS path
umount /path/to/nfs

# Remount all filesystems defined in /etc/fstab, including the NFS
mount -a
</pre></div>


<p class="wp-block-paragraph">Once that came back up, I restarted the extracts from the <code>adminclient</code> and they all started successfully.</p>



<p class="wp-block-paragraph">In this case, the firewall upgrade happened during the night with no GoldenGate-aware procedure in place. Next time, a scheduled GoldenGate maintenance spanning over the firewall upgrade window will probably avoid crashing multiple replications during the week-end, or worse.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-extract-abending-on-nfs-trail-ogg-02897-ogg-01668-input-output-error/">GoldenGate Extract Abending on NFS Trail: OGG-02897 / OGG-01668 Input/Output Error</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/goldengate-extract-abending-on-nfs-trail-ogg-02897-ogg-01668-input-output-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle: Standard Edition 2 available with 23.26.3.?</title>
		<link>https://www.dbi-services.com/blog/oracle-standard-edition-2-available-with-23-26-3/</link>
					<comments>https://www.dbi-services.com/blog/oracle-standard-edition-2-available-with-23-26-3/#respond</comments>
		
		<dc:creator><![CDATA[Clemens Bleile]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 09:17:25 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[23.26.3.]]></category>
		<category><![CDATA[AI Databse 26ai]]></category>
		<category><![CDATA[Standard Edition]]></category>
		<category><![CDATA[standard edition 2]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46254</guid>

					<description><![CDATA[<p>When downloading Release Update 23.26.3., I could see this: As you can see in the Product info it also has &#8220;Oracle Server &#8211; Standard Edition&#8221;. However, I haven&#8217;t found anything official yet. I tried it and could install 23.26.3. as a Standard Edition ORACLE_HOME: After running the root-scripts I created a Database and verified that [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-standard-edition-2-available-with-23-26-3/">Oracle: Standard Edition 2 available with 23.26.3.?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When downloading Release Update 23.26.3., I could see this:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="361" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/image-30-1024x361.png" alt="" class="wp-image-46255" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/image-30-1024x361.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/image-30-300x106.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/image-30-768x270.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/image-30.png 1460w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">As you can see in the Product info it also has &#8220;Oracle Server &#8211; Standard Edition&#8221;. However, I haven&#8217;t found anything official yet.</p>



<p class="wp-block-paragraph">I tried it and could install 23.26.3. as a Standard Edition ORACLE_HOME:</p>



<pre class="wp-block-code"><code>&#091;oracle@oel10db26ai dbhome_1]$ mkdir -p /u01/app/oracle/product/26.0.0/dbhome_1
&#091;oracle@oel10db26ai dbhome_1]$ cd /u01/app/oracle/product/26.0.0/dbhome_1
&#091;oracle@oel10db26ai dbhome_1]$ unzip -q /tmp/p39581612_230000_Linux-x86-64.zip
&#091;oracle@oel10db26ai dbhome_1]$ vi install/response/db_install_26ai.rsp
&#091;oracle@oel10db26ai dbhome_1]$ cat install/response/db_install_26ai.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v23.0.0
installOption=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/26.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
installEdition=<strong>SE2</strong>
OSDBA=oinstall
OSOPER=oinstall
OSBACKUPDBA=oinstall
OSDGDBA=oinstall
OSKMDBA=oinstall
OSRACDBA=oinstall
executeRootScript=false
dbType=GENERAL_PURPOSE
&#091;oracle@oel10db26ai dbhome_1]$ 

&#091;oracle@oel10db26ai dbhome_1]$ ./runInstaller -ignorePrereq -waitforcompletion -silent -responseFile install/response/db_install_26ai.rsp
Launching Oracle AI Database Setup Wizard...
...
&#091;WARNING] &#091;INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. installActions2026-08-04_07-18-59PM.log.
   ACTION: Identify the list of failed prerequisite checks from the log: installActions2026-08-04_07-18-59PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/app/oracle/product/26.0.0/dbhome_1/install/response/db_2026-08-04_07-18-59PM.rsp

You can find the log of this install session at:
 /tmp/InstallActions2026-08-04_07-18-59PM/installActions2026-08-04_07-18-59PM.log


As a root user, run the following script(s):
	1. /u01/app/oraInventory/orainstRoot.sh
	2. /u01/app/oracle/product/26.0.0/dbhome_1/root.sh

Run /u01/app/oraInventory/orainstRoot.sh on the following nodes: 
&#091;oel10db26ai]
Run /u01/app/oracle/product/26.0.0/dbhome_1/root.sh on the following nodes: 
&#091;oel10db26ai]


Successfully Setup Software with warning(s).
Moved the install session logs to:
 /u01/app/oraInventory/logs/InstallActions2026-08-04_07-18-59PM
&#091;oracle@oel10db26ai dbhome_1]$ </code></pre>



<p class="wp-block-paragraph">After running the root-scripts I created a Database and verified that it is really a Standard Edition 2 DB:</p>



<pre class="wp-block-code"><code>&#091;root@oel10db26ai ~]# mkdir /u02
&#091;root@oel10db26ai ~]# chown oracle:oinstall /u02
&#091;root@oel10db26ai ~]# 

&#091;oracle@oel10db26ai ~]$ mkdir /u02/oradata
&#091;oracle@oel10db26ai ~]$ 
&#091;oracle@oel10db26ai ~]$ . oraenv
ORACLE_SID = &#091;oracle] ? dummyx
ORACLE_HOME = &#091;/home/oracle] ? /u01/app/oracle/product/26.0.0/dbhome_1
The Oracle base has been set to /u01/app/oracle
&#091;oracle@oel10db26ai ~]$ 

&#091;oracle@oel10db26ai ~]$ export ORACLE_SID=DB26SE2
&#091;oracle@oel10db26ai ~]$ export PDB_NAME=pdb1
&#091;oracle@oel10db26ai ~]$ export DATA_DIR=/u02/oradata

&#091;oracle@oel10db26ai ~]$ dbca -silent -createDatabase                                                   \
     -templateName General_Purpose.dbc                                         \
     -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} -responseFile NO_VALUE         \
     -characterSet AL32UTF8                                                    \
     -sysPassword HEllo01__01                                                 \
     -systemPassword HEllo01__01                                              \
     -createAsContainerDatabase true                                           \
     -numberOfPDBs 1                                                           \
     -pdbName ${PDB_NAME}                                                      \
     -pdbAdminPassword HEllo01__01                                            \
     -databaseType MULTIPURPOSE                                                \
     -memoryMgmtType auto_sga                                                  \
     -totalMemory 2000                                                         \
     -storageType FS                                                           \
     -datafileDestination "${DATA_DIR}"                                        \
     -redoLogFileSize 100                                                       \
     -emConfiguration NONE                                                     \
     -ignorePreReqs
...
</code></pre>



<p class="wp-block-paragraph"></p>



<pre class="wp-block-code"><code>&#091;oracle@oel10db26ai ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.3.0.0 - Production on Wed Aug 5 10:42:48 2026
Version 23.26.3.0.0

Copyright (c) 1982, 2026, Oracle.  All rights reserved.


Connected to:
Oracle AI Database <strong>26ai Standard Edition 2</strong> Release 23.26.3.0.0 - Production
Version 23.26.3.0.0

SQL&gt; select banner from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle AI Database <strong>26ai Standard Edition 2</strong> Release 23.26.3.0.0 - Production

SQL&gt; show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 PDB1 			  READ WRITE NO
SQL&gt; show parameter control_management_pack_access

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access	     string	 NONE
SQL&gt; 
</code></pre>



<p class="wp-block-paragraph">It really seems a Standard Edition 2 DB. But let me check if it restricts me for a command not allowed in SE2:</p>



<pre class="wp-block-code"><code>SQL&gt; select min(snap_id), max(snap_id) from dba_hist_snapshot;

MIN(SNAP_ID) MAX(SNAP_ID)
------------ ------------
	   1	       14

SQL&gt; var retval number;
SQL&gt; exec :retval:=dbms_spm.load_plans_from_awr(1,14);
BEGIN :retval:=dbms_spm.load_plans_from_awr(1,14); END;

*
ERROR at line 1:
ORA-38153: Software edition is incompatible with SQL plan management.
ORA-06512: at "SYS.DBMS_SPM", line 4009
ORA-06512: at "SYS.DBMS_SPM_INTERNAL", line 6479
ORA-06512: at "SYS.DBMS_SPM", line 3991
ORA-06512: at line 1
Help: https://docs.oracle.com/error-help/db/ora-38153/


SQL&gt; ! oerr ora 38153
38153, 00000, "Software edition is incompatible with SQL plan management."
// *Cause: SQL plan management could be used only with Oracle Database Enterprise Edition.
// *Action: Ensure that Oracle is linked with the Enterprise Edition options.
</code></pre>



<p class="wp-block-paragraph">Yes, it does not allow me to run a command, which is restricted for the use in Enterprise Edition DBs.</p>



<h2 id="h-summary" class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Oracle has released Release Update 23.26.3. recently for on-premises installations. According the download screen it contains the possibility to run a Standard Edition 2 DB with it. First tests showed that you really can use 23.26.3. as an ORACLE_HOME for Standard Edition 2 DBs. However, Oracle has not officially published this yet. Before using this release with a Standard Edition 2 DB I would recommend to wait for the official announcement from Oracle. </p>



<p class="wp-block-paragraph">If there are news on this, I&#8217;ll update this Blog.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-standard-edition-2-available-with-23-26-3/">Oracle: Standard Edition 2 available with 23.26.3.?</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/oracle-standard-edition-2-available-with-23-26-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Simplified Distribution Path Creation in GoldenGate 26.3</title>
		<link>https://www.dbi-services.com/blog/simplified-distribution-path-creation-in-goldengate-26-3/</link>
					<comments>https://www.dbi-services.com/blog/simplified-distribution-path-creation-in-goldengate-26-3/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 03 Aug 2026 06:20:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[receiver]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[restapi]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46172</guid>

					<description><![CDATA[<p>The&#160;23.26.3.0.0&#160;release update of GoldenGate 26ai (July 2026) ships a small but welcome usability change, listed in the&#160;New Enhancements&#160;section of the release notes: Bug 39415027: Generic &#8211; Simplified Distribution and Receiver Service Path Configuration Enhanced the Create Distribution and Receiver Service Paths experience by introducing Simple and Advanced configuration modes. The simplified view displays only the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/simplified-distribution-path-creation-in-goldengate-26-3/">Simplified Distribution Path Creation in GoldenGate 26.3</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The&nbsp;<code>23.26.3.0.0</code>&nbsp;release update of GoldenGate 26ai (July 2026) ships a small but welcome usability change, listed in the&nbsp;<em><strong>New Enhancements</strong></em>&nbsp;section of the release notes:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Bug 39415027: Generic &#8211; Simplified Distribution and Receiver Service Path Configuration</strong></p>



<p class="wp-block-paragraph">Enhanced the Create Distribution and Receiver Service Paths experience by introducing Simple and Advanced configuration modes. The simplified view displays only the required settings by default, while advanced options remain available for users who need additional configuration.</p>
</blockquote>



<p class="wp-block-paragraph">Anyone who has created a distribution path from the web UI knows the form used to be long. I already walked through the full setup in a&nbsp;<a href="https://www.dbi-services.com/blog/create-distribution-paths-in-nginx-secured-goldengate-26ai/" target="_blank" rel="noreferrer noopener">previous blog on distribution paths in NGINX-secured deployments</a>. This enhancement simplifies the creation form for most common use cases.</p>



<p class="wp-block-paragraph">In this blog, I want to look at what changes: first in the web UI, then what the hidden fields default to, and finally whether anything changes at the REST API level.</p>



<h2 id="h-what-changes-in-the-web-ui" class="wp-block-heading">What changes in the web UI</h2>



<p class="wp-block-paragraph">This enhancement is in fact&nbsp;<strong>two separate changes</strong>, shipped together.</p>



<p class="wp-block-paragraph">First, the&nbsp;<strong>form collapsed to a single step</strong>. In&nbsp;<code>23.26.2</code>&nbsp;and earlier version of GoldenGate, creating a path was a six-step process:&nbsp;<em>Path Information</em>,&nbsp;<em>Source Options</em>,&nbsp;<em>Target Options</em>,&nbsp;<em>Advanced Options</em>,&nbsp;<em>Filtering Options</em>&nbsp;and&nbsp;<em>Managed Options</em>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="1024" height="1019" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/ogg_blog_nginx_dist_path_1-1024x1019-3a55af10.png" alt="" class="wp-image-46176" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/ogg_blog_nginx_dist_path_1-1024x1019-3a55af10.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/ogg_blog_nginx_dist_path_1-1024x1019-3a55af10-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/ogg_blog_nginx_dist_path_1-1024x1019-3a55af10-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/ogg_blog_nginx_dist_path_1-1024x1019-3a55af10-768x764.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Starting with&nbsp;<code>23.26.3.0.0</code>, these steps are gone. Instead, there are now only&nbsp;<strong>two steps: a configuration page, and a review page.</strong>&nbsp;Most of what used to be spread across the six screens now lives on the first page; the rest (the managed, format and network tuning options) moved onto the&nbsp;<em><strong>Review</strong></em>&nbsp;page, which is interactive rather than a read-only summary.</p>



<p class="wp-block-paragraph">The second change is that this single page has a&nbsp;<strong>Default / Advanced toggle</strong>. This is the part the release notes mention:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="480" height="175" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-advanced-toggle.png" alt="" class="wp-image-46177" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-advanced-toggle.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-advanced-toggle-300x109.png 300w" sizes="(max-width: 480px) 100vw, 480px" /></figure>
</div>


<p class="wp-block-paragraph"><strong>Default mode</strong>: only the required settings are displayed, like path name, source (extract and trail) and target (host, port, protocol and target trail).</p>



<p class="wp-block-paragraph"><strong>Advanced mode</strong>: the same single page, but every optional field is revealed: air gap security, trail file size, target type, HPE NonStop toggle, format options and network options. The reverse proxy toggle, encryption and filtering checkboxes are present in both modes (see below).</p>



<p class="wp-block-paragraph">Switching to Advanced in&nbsp;<code>23.26.3</code>&nbsp;does&nbsp;<strong>not</strong>&nbsp;bring back the six steps. It stays on one page, revealing the hidden fields. Here are the two forms:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="480" height="735" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-ogg.png" alt="" class="wp-image-46178" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-ogg.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-ogg-196x300.png 196w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="480" height="840" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-advanced-mode-ogg.png" alt="" class="wp-image-46179" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-advanced-mode-ogg.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-advanced-mode-ogg-171x300.png 171w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>
</div>


<p class="wp-block-paragraph"><em><strong>NB</strong></em>: The same&nbsp;<strong>Default / Advanced mechanism</strong>&nbsp;applies to the&nbsp;<strong>Receiver Service</strong>&nbsp;path creation form.</p>



<h2 id="h-what-do-the-hidden-fields-default-to" class="wp-block-heading">What do the hidden fields default to?</h2>



<p class="wp-block-paragraph">When Default mode hides a field, nothing is left blank. GoldenGate will silently apply a default value when calling the REST API. Knowing these defaults will help you decide whether to use the Default or the Advanced mode. Here is the list of what Advanced mode reveals.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Field only editable in Advanced</th><th class="has-text-align-left" data-align="left">Applies to</th><th class="has-text-align-left" data-align="left">Default value</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">Air Gap Security Enabled</td><td class="has-text-align-left" data-align="left">all protocols</td><td class="has-text-align-left" data-align="left">Disabled</td></tr><tr><td class="has-text-align-left" data-align="left">Trail Size (MB)</td><td class="has-text-align-left" data-align="left">all protocols</td><td class="has-text-align-left" data-align="left">2000 MB</td></tr><tr><td class="has-text-align-left" data-align="left">Target Type (Manager / Collector / Receiver Service)</td><td class="has-text-align-left" data-align="left"><code>ogg</code></td><td class="has-text-align-left" data-align="left">Manager</td></tr><tr><td class="has-text-align-left" data-align="left">Target is HPE NonStop</td><td class="has-text-align-left" data-align="left"><code>ogg</code></td><td class="has-text-align-left" data-align="left">Disabled</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">So a path created in Default mode always gets a 2000 MB trail, no air gap security, and (for an&nbsp;<code>ogg</code>&nbsp;target) a Manager target type. If any of those needs to change, you should switch to Advanced mode.</p>



<h3 id="h-the-review-step-carries-the-managed-and-tuning-options" class="wp-block-heading">The Review step carries the managed and tuning options</h3>



<p class="wp-block-paragraph">The second step (<strong>Review</strong>) is not a read-only summary. It always shows a summary of the path&nbsp;<em>and</em>&nbsp;an editable&nbsp;<strong>Managed Options</strong>&nbsp;section. In Advanced mode, it also shows&nbsp;<strong>Format options</strong>&nbsp;and a large&nbsp;<strong>Network Options</strong>&nbsp;section. The Default/Advanced mode toggle also changes what you see here:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Section on the Review step</th><th class="has-text-align-left" data-align="left">Default</th><th class="has-text-align-left" data-align="left">Advanced</th><th class="has-text-align-left" data-align="left">Notable defaults</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">Managed Options (Critical, Auto Restart, retries, delay)</td><td class="has-text-align-left" data-align="left">Shown</td><td class="has-text-align-left" data-align="left">Shown</td><td class="has-text-align-left" data-align="left">Auto Restart&nbsp;<strong>on</strong>, 10 retries, 2 minute delay; Critical&nbsp;<strong>off</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Format options (target format Type)</td><td class="has-text-align-left" data-align="left">Hidden</td><td class="has-text-align-left" data-align="left">Shown</td><td class="has-text-align-left" data-align="left">Target Type = Default</td></tr><tr><td class="has-text-align-left" data-align="left">Network Options (compression, TCP tuning, buffers, keep-alive)</td><td class="has-text-align-left" data-align="left">Hidden</td><td class="has-text-align-left" data-align="left">Shown</td><td class="has-text-align-left" data-align="left">Compression off, EOF delay 10 tenths, checkpoint frequency 10, DSCP / TOS DEFAULT, TCP_NODELAY on</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">To summarize,&nbsp;<strong>auto restart is on by default</strong>&nbsp;(10 retries, 2 minute delay) and you can adjust it without leaving Default mode. The network tuning parameters (compression, EOF delay, DSCP / TOS, TCP flags, socket buffers) keep their usual defaults unless you switch to Advanced mode and change them.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="480" height="519" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-default.png" alt="" class="wp-image-46180" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-default.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-default-277x300.png 277w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="480" height="913" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-advanced.png" alt="" class="wp-image-46181" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-advanced.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-review-advanced-158x300.png 158w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>
</div>


<h3 id="h-default-mode-nbsp-does-not-mean-nbsp-no-security" class="wp-block-heading"><em>Default mode</em>&nbsp;does not mean&nbsp;<em>no security</em></h3>



<p class="wp-block-paragraph">The distribution path creation form is also adapted to the protocol you choose. Selecting the&nbsp;<strong>Target Protocol</strong>&nbsp;changes which fields appear, in both modes:</p>



<ul class="wp-block-list">
<li><strong><code>ogg</code></strong>&nbsp;is the classic mode, without authentication fields. Advanced adds the Target Type and the HPE NonStop toggle.</li>



<li><strong><code>ws</code></strong>&nbsp;and&nbsp;<strong><code>wss</code></strong>: both add a reverse proxy toggle (disabled by default) and a&nbsp;<strong>Target Authentication Method</strong>: Certificate is the pre-selected value for&nbsp;<code>wss</code>. Switching to UserID Alias shows&nbsp;<code>Domain: Network</code>&nbsp;(greyed out, not editable) and an&nbsp;<code>Alias</code>&nbsp;dropdown (the same reserved&nbsp;<code>Network</code>&nbsp;domain used for path connection credentials).</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="480" height="825" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-wss-cert.png" alt="" class="wp-image-46182" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-wss-cert.png 480w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/08/dist-path-default-mode-wss-cert-175x300.png 175w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>
</div>


<p class="wp-block-paragraph">Since GoldenGate 26ai, the default for trail file size is no longer 500 MB but 2000 MB. If you are fine with a 2000 MB trail, no air gap, a Manager target (for&nbsp;<code>ogg</code>&nbsp;protocol), and the default auto restart behaviour, you can keep the default mode. Switch to Advanced when you want a different trail size, air gap setup, a Collector or Receiver Service target, HPE NonStop, a specific target format, or any of the network tuning options.</p>



<h2 id="h-nothing-changes-in-goldengate-rest-api" class="wp-block-heading">Nothing changes in GoldenGate REST API</h2>



<p class="wp-block-paragraph">The Default / Advanced switch is&nbsp;<strong>purely a web UI convenience</strong>. It changes which fields the form renders, not what GoldenGate stores or how you create a path programmatically. The REST endpoints are unchanged:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Operation</th><th class="has-text-align-left" data-align="left">Verb</th><th class="has-text-align-left" data-align="left">Endpoint</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">Create distribution path</td><td class="has-text-align-left" data-align="left"><code>POST</code></td><td class="has-text-align-left" data-align="left"><code>/services/{version}/sources/{distpath}</code></td></tr><tr><td class="has-text-align-left" data-align="left">Update distribution path</td><td class="has-text-align-left" data-align="left"><code>PATCH</code></td><td class="has-text-align-left" data-align="left"><code>/services/{version}/sources/{distpath}</code></td></tr><tr><td class="has-text-align-left" data-align="left">Create receiver (collector) path</td><td class="has-text-align-left" data-align="left"><code>POST</code></td><td class="has-text-align-left" data-align="left"><code>/services/{version}/targets/{path}</code></td></tr><tr><td class="has-text-align-left" data-align="left">Update receiver path</td><td class="has-text-align-left" data-align="left"><code>PATCH</code></td><td class="has-text-align-left" data-align="left"><code>/services/{version}/targets/{path}</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">If you automate distribution path creation (I will publish a blog about this soon) in your environments,&nbsp;<strong>nothing changes</strong>. The payload you send is identical before and after patching to&nbsp;<code>23.26.3.0.0</code>.</p>



<p class="wp-block-paragraph">From a web UI perspective, paths are created with the exact same payloads in Default and Advanced mode. For instance, I created one path from the web UI in Default mode (<code>DEFPATH</code>) and an equivalent one in Advanced mode (<code>ADVPATH</code>), with the same source and target, as well as every optional field left at its pre-filled value. Analyzing the <a href="https://www.dbi-services.com/blog/querying-goldengate-rest-api-log-efficiently/" target="_blank" rel="noreferrer noopener">restapi.log files</a>, here is the content of the payload:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
oracle@vmogg: jq -c &#039;select(.request.context.verb == &quot;POST&quot; and .request.context.uriTemplate == &quot;/services/{version}/sources/{distpath}&quot;)&#039; restapi.ndjson
</pre></div>


<p class="wp-block-paragraph">Captured&nbsp;<code>DEFPATH</code>&nbsp;(Default mode),&nbsp;<code>POST /services/v2/sources/DEFPATH</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
{
  &quot;name&quot;: &quot;DEFPATH&quot;,
  &quot;status&quot;: &quot;stopped&quot;,
  &quot;source&quot;: {
    &quot;uri&quot;: &quot;trail://localhost:7811/services/v2/sources?trail=e1&quot;,
    &quot;details&quot;: {}
  },
  &quot;target&quot;: {
    &quot;isDynamicOggPort&quot;: true,
    &quot;uri&quot;: &quot;ogg://vmogg2:7812/services/v2/targets?trail=ea&quot;,
    &quot;details&quot;: {
      &quot;trail&quot;: { &quot;seqLength&quot;: 9, &quot;sizeMB&quot;: 2000 },
      &quot;compression&quot;: { &quot;enabled&quot;: false }
    }
  },
  &quot;options&quot;: {
    &quot;eofDelayCSecs&quot;: 10,
    &quot;checkpointFrequency&quot;: 10,
    &quot;critical&quot;: false,
    &quot;autoRestart&quot;: { &quot;retries&quot;: 10, &quot;delay&quot;: 2 },
    &quot;streaming&quot;: true
  },
  &quot;begin&quot;: { &quot;sequence&quot;: 0, &quot;offset&quot;: 0 }
}
</pre></div>


<p class="wp-block-paragraph">Captured&nbsp;<code>ADVPATH</code>&nbsp;(Advanced mode),&nbsp;<code>POST /services/v2/sources/ADVPATH</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
{
  &quot;name&quot;: &quot;ADVPATH&quot;,
  &quot;status&quot;: &quot;stopped&quot;,
  &quot;source&quot;: {
    &quot;uri&quot;: &quot;trail://localhost:7811/services/v2/sources?trail=e1&quot;,
    &quot;details&quot;: {}
  },
  &quot;target&quot;: {
    &quot;isDynamicOggPort&quot;: true,
    &quot;uri&quot;: &quot;ogg://vmogg2:7812/services/v2/targets?trail=eb&quot;,
    &quot;details&quot;: {
      &quot;trail&quot;: { &quot;seqLength&quot;: 9, &quot;sizeMB&quot;: 2000 },
      &quot;compression&quot;: { &quot;enabled&quot;: false }
    }
  },
  &quot;options&quot;: {
    &quot;eofDelayCSecs&quot;: 10,
    &quot;checkpointFrequency&quot;: 10,
    &quot;critical&quot;: false,
    &quot;autoRestart&quot;: { &quot;retries&quot;: 10, &quot;delay&quot;: 2 },
    &quot;streaming&quot;: true
  },
  &quot;begin&quot;: { &quot;sequence&quot;: 0, &quot;offset&quot;: 0 }
}
</pre></div>


<p class="wp-block-paragraph">The two bodies differ&nbsp;<strong>only in&nbsp;<code>name</code>&nbsp;and the target trail letter</strong>. Every optional key that Default mode is supposed to “hide” (<code>sizeMB</code>,&nbsp;<code>seqLength</code>,&nbsp;<code>compression.enabled</code>,&nbsp;<code>eofDelayCSecs</code>,&nbsp;<code>checkpointFrequency</code>,&nbsp;<code>critical</code>,&nbsp;<code>autoRestart</code>,&nbsp;<code>streaming</code>) is sent explicitly by&nbsp;<em>both</em>&nbsp;modes, with the same value.</p>



<p class="wp-block-paragraph">If you work mostly from the web UI and create paths by hand, the new form will help you. And if you automate with the REST API, this enhancement does not affect you at all. Your existing calls keep working exactly as before, and you were already, in effect, in “advanced mode” because you send whatever properties you choose.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/simplified-distribution-path-creation-in-goldengate-26-3/">Simplified Distribution Path Creation in GoldenGate 26.3</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/simplified-distribution-path-creation-in-goldengate-26-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Removing rpm with dnf implies removing systemd</title>
		<link>https://www.dbi-services.com/blog/removing-rpm-with-dnf-implies-removing-systemd/</link>
					<comments>https://www.dbi-services.com/blog/removing-rpm-with-dnf-implies-removing-systemd/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 20:40:04 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Linux 8]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46160</guid>

					<description><![CDATA[<p>On an Oracle Linux 8, I installed a new package and did not pay attention that dnf used an old Oracle Linux 7 repository. Trying to remove it again, I was getting following error: Error:Problem: The operation would result in removing the following protected packages: systemd(try to add '--skip-broken' to skip uninstallable packages or '--nobest' [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/removing-rpm-with-dnf-implies-removing-systemd/">Removing rpm with dnf implies removing systemd</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">On an Oracle Linux 8, I installed a new package and did not pay attention that dnf used an old Oracle Linux 7 repository. Trying to remove it again, I was getting following error:</p>



<p class="wp-block-paragraph"><code>Error:<br>Problem: The operation would result in removing the following protected packages: systemd<br>(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)</code></p>



<p class="wp-block-paragraph">In this blog I would like to share the solution with you.</p>



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



<p class="wp-block-paragraph">So I was just running dnf install, as described here:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf install libzstd
Last metadata expiration check: 0:03:23 ago on Tue 02 Jun 2026 04:18:15 PM CEST.
Package libzstd-1.4.4-1.0.1.el8.x86_64 is already installed.
Dependencies resolved.
=========================================================================================================================================================================================
Package                                     Architecture                               Version                                           Repository                                Size
=========================================================================================================================================================================================
Upgrading:
libzstd                                     x86_64                                     1.5.5-1.el7                                       epel                                     292 k

Transaction Summary
=========================================================================================================================================================================================
Upgrade  1 Package

Total download size: 292 k
Is this ok [y/N]: y
Downloading Packages:
[MIRROR] libzstd-1.5.5-1.el7.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for https://fedora-archive.ip-connect.info/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm [Received HTTP code 403 from proxy after CONNECT]
[MIRROR] libzstd-1.5.5-1.el7.x86_64.rpm: Status code: 403 for http://fedora-archive.ip-connect.info/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm (IP: 172.16.1.200)
[MIRROR] libzstd-1.5.5-1.el7.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for https://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm [Received HTTP code 403 from proxy after CONNECT]
[MIRROR] libzstd-1.5.5-1.el7.x86_64.rpm: Status code: 403 for http://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm (IP: 172.16.1.200)
libzstd-1.5.5-1.el7.x86_64.rpm                                                                                                                           384 kB/s | 292 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                    306 kB/s | 292 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                 1/1
  Upgrading        : libzstd-1.5.5-1.el7.x86_64                                                                                                                                      1/2
  Running scriptlet: libzstd-1.5.5-1.el7.x86_64                                                                                                                                      1/2
  Cleanup          : libzstd-1.4.4-1.0.1.el8.x86_64                                                                                                                                  2/2
  Running scriptlet: libzstd-1.4.4-1.0.1.el8.x86_64                                                                                                                                  2/2
  Verifying        : libzstd-1.5.5-1.el7.x86_64                                                                                                                                      1/2
  Verifying        : libzstd-1.4.4-1.0.1.el8.x86_64 
</pre>
<br>



<p class="wp-block-paragraph">Unfortunately, I was too fast and did not realize dnf was using an el7 repo. And more over the command removed the proper el8 package to install the el7 package.</p>



<p class="wp-block-paragraph">I agree, I should have pay attention and see:</p>



<p class="wp-block-paragraph"><code>Package libzstd-1.4.4-1.0.1.el8.x86_64 is already installed.</code></p>



<p class="wp-block-paragraph">Or package version to be: <code>1.5.5-1.el7</code></p>



<p class="wp-block-paragraph">Anyhow, I realized after having push y.</p>



<p class="wp-block-paragraph">And trying to remove it, gave following error message:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf remove libzstd-1.5.5-1.el7.x86_64
Error:
Problem: The operation would result in removing the following protected packages: systemd
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
</pre>
<br>




<p class="wp-block-paragraph">So it seems it is a full mess now. But checking which installed rpm package requires libzstd, I was surprised to see none:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -q --whatrequires libzstd
no package requires libzstd
</pre>
<br>




<p class="wp-block-paragraph">The problem was that after a previous upgrade to Oracle linux 8, and as leapp upgrade does not remove custom repo, there was still an el7 customized repo, epel, activated.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=http://download.example/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
</pre>
<br>




<p class="wp-block-paragraph">At that time, I asked one of my colleague having very good linux experience, Joel Cattin, who guided me to the resolution. I would like to take the opportunity here, to thank him again for the great help.</p>



<p class="wp-block-paragraph">We first tried to cleanup the cache and to upgrade the package, but it did not helped:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,8,18]">
[root@SRV yum.repos.d]# dnf clean all
66 files removed

[root@SRV yum.repos.d]# dnf make cache
No such command: make. Please use /usr/bin/dnf --help
It could be a DNF plugin command, try: "dnf install 'dnf-command(make)'"

[root@SRV yum.repos.d]# dnf upgrade libzstd
Oracle Linux 8 EPEL Packages for Development (x86_64)                                                                                                                        10 MB/s | 111 MB     00:10
Oracle Linux 8 EPEL Modular Packages for Development (x86_64)                                                                                                               2.3 MB/s | 332 kB     00:00
Oracle Linux 8 BaseOS Latest (x86_64)                                                                                                                                        10 MB/s | 143 MB     00:13
Oracle Linux 8 Application Stream (x86_64)                                                                                                                                   10 MB/s |  81 MB     00:07
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)                                                                                                   11 MB/s | 146 MB     00:13
Dependencies resolved.
Nothing to do.
Complete!

[root@SRV yum.repos.d]# rpm -qa | grep -i el7
libzstd-1.5.5-1.el7.x86_64

</pre>
<br>



<p class="wp-block-paragraph">Still getting the error:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV yum.repos.d]# dnf remove libzstd
Error:
 Problem: The operation would result in removing the following protected packages: systemd
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
[root@SRV yum.repos.d]#
</pre>
<br>



<p class="wp-block-paragraph">And we finally went to the magic command, <code>dnf distro-sync,</code> which will synchronize the installed package with the versions available in the enabled repositories, and most important  the repository that should match the version. So in my case an el8 repo.</p>



<p class="wp-block-paragraph">And this command did the work, removing the el7 package and installing the el8 version package.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,27,32,33]">[root@SRV ~]# dnf distro-sync libzstd
Last metadata expiration check: 0:23:38 ago on Wed 03 Jun 2026 07:27:26 AM CEST.
Dependencies resolved.
===========================================================================================================================================================================
 Package                             Architecture                       Version                                        Repository                                     Size
===========================================================================================================================================================================
Downgrading:
 libzstd                             x86_64                             1.4.4-1.0.1.el8                                ol8_baseos_latest                             266 k

Transaction Summary
===========================================================================================================================================================================
Downgrade  1 Package

Total download size: 266 k
Is this ok [y/N]: y
Downloading Packages:
libzstd-1.4.4-1.0.1.el8.x86_64.rpm                                                                                                         1.5 MB/s | 266 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                      1.4 MB/s | 266 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                   1/1
  Downgrading      : libzstd-1.4.4-1.0.1.el8.x86_64                                                                                                                    1/2
  Cleanup          : libzstd-1.5.5-1.el7.x86_64                                                                                                                        2/2
  Running scriptlet: libzstd-1.5.5-1.el7.x86_64                                                                                                                        2/2
  Verifying        : libzstd-1.4.4-1.0.1.el8.x86_64                                                                                                                    1/2
  Verifying        : libzstd-1.5.5-1.el7.x86_64                                                                                                                        2/2

Downgraded:
  libzstd-1.4.4-1.0.1.el8.x86_64

Complete!
</pre>
<br>



<p class="wp-block-paragraph">And finally, I did not have any remaining el7 package. The version of libzstd package was one from the ol8 distribution.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@SRV ~]# rpm -qa | grep -i el7
[root@SRV ~]# rpm -qa | grep -i libzstd
libzstd-1.4.4-1.0.1.el8.x86_64
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">And to avoid problem again, I did what should be done after all leapp upgrade&#8230; Removing any el7 repo, in my case the epel el7 repo:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep -i epel
epel-release-7-14.noarch
[root@SRV ~]# dnf remove epel-release-7-14.noarch
Dependencies resolved.
=========================================================================================================================================================================================
 Package                                          Architecture                               Version                                   Repository                                   Size
=========================================================================================================================================================================================
Removing:
 epel-release                                     noarch                                     7-14                                      @System                                      25 k

Transaction Summary
=========================================================================================================================================================================================
Remove  1 Package

Freed space: 25 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                 1/1
  Running scriptlet: epel-release-7-14.noarch                                                                                                                                        1/1
  Erasing          : epel-release-7-14.noarch                                                                                                                                        1/1
  Running scriptlet: epel-release-7-14.noarch                                                                                                                                        1/1
  Verifying        : epel-release-7-14.noarch                                                                                                                                        1/1

Removed:
  epel-release-7-14.noarch

Complete!
</pre>
<br>




<p class="wp-block-paragraph">I again checked that no other el7 repo was enabled:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf repolist all --enabled
repo id                                                         repo name
ol8_UEKR6                                                       Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                                                   Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                                               Oracle Linux 8 BaseOS Latest (x86_64)
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">I installed the el8 epel repo, as customer was using it:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV yum.repos.d]# dnf install oracle-epel-release-el8
Last metadata expiration check: 0:50:57 ago on Tue 02 Jun 2026 04:18:15 PM CEST.
Dependencies resolved.
=========================================================================================================================================================================================
 Package                                              Architecture                        Version                                   Repository                                      Size
=========================================================================================================================================================================================
Installing:
 oracle-epel-release-el8                              x86_64                              1.0-5.el8                                 ol8_baseos_latest                               15 k

Transaction Summary
=========================================================================================================================================================================================
Install  1 Package

Total download size: 15 k
Installed size: 18 k
Is this ok [y/N]: y
Downloading Packages:
oracle-epel-release-el8-1.0-5.el8.x86_64.rpm                                                                                                             136 kB/s |  15 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                    134 kB/s |  15 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                 1/1
  Installing       : oracle-epel-release-el8-1.0-5.el8.x86_64                                                                                                                        1/1
  Verifying        : oracle-epel-release-el8-1.0-5.el8.x86_64                                                                                                                        1/1

Installed:
  oracle-epel-release-el8-1.0-5.el8.x86_64

Complete!
</pre>
<br>



<p class="wp-block-paragraph">And checked again the enabled repo to ensure there is only el8 repo with now the epel el8 repo as additional one:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV yum.repos.d]# dnf repolist all --enabled
repo id                                                              repo name
ol8_UEKR6                                                            Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                                                        Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                                                    Oracle Linux 8 BaseOS Latest (x86_64)
ol8_developer_EPEL                                                   Oracle Linux 8 EPEL Packages for Development (x86_64)
ol8_developer_EPEL_modular                                           Oracle Linux 8 EPEL Modular Packages for Development (x86_64)
[root@SRV yum.repos.d]#
</pre>
<br>



<p class="wp-block-paragraph">And last repo check in the repo files directly:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,12,14,15,17,19]">
[root@SRV ~]# ls -ltrh /etc/yum.repos.d/
total 40K
-rw-r--r--. 1 root root  530 Mar 28  2022 oracle-epel-ol8.repo
-rw-r--r--. 1 root root  243 May 23  2024 virt-ol8.repo
-rw-r--r--. 1 root root 1.4K Apr 22  2025 epel-testing.repo
-rw-r--r--. 1 root root 1.8K Apr 22  2025 epel-testing-modular.repo
-rw-r--r--. 1 root root 1.7K Apr 22  2025 epel-modular.repo
-rw-r--r--. 1 root root 4.5K Sep 19  2025 leapp-upgrade-repos-ol8.repo.save
-rw-r--r--. 1 root root 4.1K Jun  2 13:46 oracle-linux-ol8.repo
-rw-r--r--. 1 root root  941 Jun  2 13:46 uek-ol8.repo

[root@SRV ~]# rm -f /etc/yum.repos.d/leapp-upgrade-repos-ol8.repo.save

[root@SRV ~]# grep -i el7 /etc/yum.repos.d/*
[root@SRV ~]# grep -i el8 /etc/yum.repos.d/* | wc -l
6
[root@SRV ~]# grep -i ol8 /etc/yum.repos.d/* | wc -l
50
[root@SRV ~]# grep -i ol7 /etc/yum.repos.d/* | wc -l
0
[root@SRV ~]#
</pre>
<br>

<p>L’article <a href="https://www.dbi-services.com/blog/removing-rpm-with-dnf-implies-removing-systemd/">Removing rpm with dnf implies removing systemd</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/removing-rpm-with-dnf-implies-removing-systemd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle Linux &#8211; Unfinished DB8actions remaining</title>
		<link>https://www.dbi-services.com/blog/oracle-linux-unfinished-db8actions-remaining/</link>
					<comments>https://www.dbi-services.com/blog/oracle-linux-unfinished-db8actions-remaining/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 19:21:46 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle linux]]></category>
		<category><![CDATA[yum]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46150</guid>

					<description><![CDATA[<p>I have been recently facing following error when using yum/dnf: There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help). And I was wondering how to deal [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-linux-unfinished-db8actions-remaining/">Oracle Linux &#8211; Unfinished DB8actions remaining</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I have been recently facing following error when using yum/dnf:</p>



<p class="wp-block-paragraph"><code>There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).</code></p>



<p class="wp-block-paragraph">And I was wondering how to deal with this. I would like in this blog share with you my troubleshooting, as it might help someone sooner than later.</p>



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



<p class="wp-block-paragraph">I was at that time running el7 and it was before upgrading the machine to el8. Let me first share with you the error message:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[root@SRV ~]# yum remove mariadb-libs-5.5.65-1.el7.x86_64
Loaded plugins: ulninfo
Resolving Dependencies
There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--&gt; Running DB8action check
---&gt; Package mariadb-libs.x86_64 1:5.5.65-1.el7 will be erased
--&gt; Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================================
 Package                                           Arch                                        Version                                             Repository                                          Size
============================================================================================================================================================================================================
Removing:
 mariadb-libs                                      x86_64                                      1:5.5.65-1.el7                                      @anaconda/7.8                                      4.4 M

DB8action Summary
============================================================================================================================================================================================================
Remove  1 Package

Installed size: 4.4 M
Is this ok [y/N]: N
Exiting on user command
Your DB8action was saved, rerun it with:
 yum load-DB8action /tmp/yum_save_tx.2026-06-17.16-16.CupcSE.yumtx
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">I ran a <code>yum history </code>command:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum history
Loaded plugins: ulninfo
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    26 | root               | 2026-06-17 15:17 | E, I, U        |  184 EE
    25 | root               | 2026-06-17 14:59 | Install        |   25
    24 | root               | 2026-06-17 14:59 | Update         |    1
    23 | root               | 2026-05-07 15:21 | Install        |    1
    22 |                  | 2022-11-18 10:42 | Install        |    1
    21 |                  | 2022-11-18 09:56 | Install        |    1
    20 | root               | 2021-11-10 11:24 | Install        |    7
    19 | root               | 2021-10-26 16:54 | Install        |    1
    18 | root               | 2021-10-26 16:54 | Install        |    1
    17 | root               | 2021-10-26 16:54 | Install        |    1
    16 | root               | 2021-10-26 16:53 | Install        |    1
    15 | root               | 2021-04-08 09:30 | Install        |   14
    14 |                  | 2021-03-19 11:28 | Install        |    1
    13 | root               | 2021-01-21 11:36 | Install        |    2
    12 | root               | 2021-01-21 10:53 | Erase          |    1
    11 | root               | 2021-01-21 10:28 | E, I, U        |   37 EE
    10 | root               | 2020-11-26 11:13 | Install        |    2
     9 | root               | 2020-11-16 14:41 | I, U           |    8 PP
     8 | root               | 2020-11-16 14:35 | I, U           |  152 **
     7 |                 | 2020-10-28 15:45 | Install        |    1
history list
[root@SRV ~]# 
</pre>
<br>



<p class="wp-block-paragraph">If I check the last transaction, it is successful. For sure, I have just run it.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum history info 26 | grep Return-Code
Return-Code    : Success
[root@SRV ~]#
</pre>
<br>




<p class="wp-block-paragraph">But if I check the transaction id 8, I see that this one was aborted:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum history info 8 | grep Return-Code
Return-Code    : ** Aborted **
</pre>
<br>



<p class="wp-block-paragraph">If I look to the RPM database changes log dated for this transaction I see the following file:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# ls -l /var/lib/yum/DB8action-*
-rw-r--r--. 1 root root 13671 Nov 16  2020 /var/lib/yum/DB8action-all.2020-11-16.14:35.57
-rw-r--r--. 1 root root  9424 Nov 16  2020 /var/lib/yum/DB8action-done.2020-11-16.14:35.57
[root@SRV ~]#
</pre>
<br>




<p class="wp-block-paragraph">I can check it&#8217;s content&#8230;</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13]">
[root@SRV ~]# tail /var/lib/yum/DB8action-all.2020-11-16.14:35.57
erase 0:file-libs-5.11-36.el7.x86_64
erase 0:iptables-1.4.21-34.el7.x86_64
erase 2:vim-minimal-7.4.629-6.0.1.el7.x86_64
erase 0:libxml2-2.9.1-6.0.1.el7.4.x86_64
erase 0:libteam-1.29-1.el7.x86_64
erase 0:mokutil-15-2.0.3.el7.x86_64
erase 0:numactl-libs-2.0.12-5.el7.x86_64
erase 1:dmidecode-3.2-3.el7.x86_64
erase 0:iprutils-2.4.17.1-3.el7.x86_64
erase 1:mariadb-libs-5.5.65-1.el7.x86_64

[root@SRV ~]# tail  /var/lib/yum/DB8action-done.2020-11-16.14:35.57
erase 999:iwl7260-firmware-22.0.7.0-999.4.el7.noarch
erase 0:ca-certificates-2019.2.32-76.el7_7.noarch
erase 999:iwl6000g2a-firmware-17.168.5.3-999.4.el7.noarch
erase 999:iwl5000-firmware-8.83.5.1_1-999.4.el7.noarch
erase 999:iwl100-firmware-39.31.5.1-999.4.el7.noarch
erase 1:NetworkManager-tui-1.18.8-1.el7.x86_64
erase 0:rpm-python-4.11.3-43.el7.x86_64
erase 1:NetworkManager-glib-1.18.8-1.el7.x86_64
erase 32:bind-utils-9.11.4-26.P2.el7.x86_64
erase 7:lvm2-2.02.186-7.0.1.el7.x86_64
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">Let&#8217;s take mariadb-libs RPM as example. Checking this package, I can see that it is duplicated.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -q --last mariadb-libs
mariadb-libs-5.5.68-1.el7.x86_64              Mon 16 Nov 2020 02:38:01 PM CET
mariadb-libs-5.5.65-1.el7.x86_64              Wed 28 Oct 2020 10:39:07 AM CET
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">Having duplicated RPM is not good. I suspect it is coming from this aborted yum transaction, old for past 6 years.</p>



<p class="wp-block-paragraph">Let&#8217;s check if there is several other duplicated RPM.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# package-cleanup --dupes
libcroco-0.6.12-6.el7_9.x86_64
libcroco-0.6.12-4.el7.x86_64
lz4-1.8.3-1.el7.x86_64
lz4-1.7.5-3.el7.x86_64
iprutils-2.4.17.1-3.el7.x86_64
iprutils-2.4.17.1-3.el7_7.x86_64
numactl-libs-2.0.12-5.el7.x86_64
numactl-libs-2.0.12-5.0.3.el7.x86_64
file-libs-5.11-36.el7.x86_64
file-libs-5.11-37.el7.x86_64
sed-4.2.2-6.el7.x86_64
sed-4.2.2-7.el7.x86_64
lshw-B.02.18-17.el7.x86_64
lshw-B.02.18-14.el7.x86_64
file-5.11-36.el7.x86_64
file-5.11-37.el7.x86_64
kmod-20-28.0.1.el7.x86_64
kmod-20-28.0.3.el7.x86_64
coreutils-8.22-24.0.1.el7.x86_64
coreutils-8.22-24.0.1.el7_9.2.x86_64
dbus-libs-1.10.24-13.0.1.el7_6.x86_64
dbus-libs-1.10.24-15.0.1.el7.x86_64
elfutils-libelf-0.176-5.el7.x86_64
elfutils-libelf-0.176-4.el7.x86_64
freetype-2.8-14.el7.x86_64
freetype-2.8-14.el7_9.1.x86_64
plymouth-core-libs-0.8.9-0.34.20140113.0.1.el7.x86_64
plymouth-core-libs-0.8.9-0.33.20140113.0.1.el7.x86_64
cpio-2.11-27.el7.x86_64
cpio-2.11-28.el7.x86_64
kmod-libs-20-28.0.3.el7.x86_64
kmod-libs-20-28.0.1.el7.x86_64
libpng-1.5.13-8.el7.x86_64
libpng-1.5.13-7.el7_2.x86_64
libteam-1.29-1.el7.x86_64
libteam-1.29-3.el7.x86_64
elfutils-libs-0.176-4.el7.x86_64
elfutils-libs-0.176-5.el7.x86_64
dbus-1.10.24-13.0.1.el7_6.x86_64
dbus-1.10.24-15.0.1.el7.x86_64
mariadb-libs-5.5.65-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
elfutils-default-yama-scope-0.176-5.el7.noarch
elfutils-default-yama-scope-0.176-4.el7.noarch
teamd-1.29-3.el7.x86_64
teamd-1.29-1.el7.x86_64
device-mapper-persistent-data-0.8.5-2.el7.x86_64
device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">Yes there are and many!</p>



<p class="wp-block-paragraph">For each of the rpm, I ran following query to find the latest one.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -q --last lz4
lz4-1.8.3-1.el7.x86_64                        Mon 16 Nov 2020 02:36:12 PM CET
lz4-1.7.5-3.el7.x86_64                        Wed 28 Oct 2020 10:34:25 AM CET
[root@SRV ~]# 
</pre>
<br>



<p class="wp-block-paragraph">And decided to remove the last oldest version. For each yum remove command, I ensured there were no dependencies issues.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum remove lz4-1.7.5-3.el7.x86_64
Loaded plugins: ulninfo
Resolving Dependencies
There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--&gt; Running DB8action check
---&gt; Package lz4.x86_64 0:1.7.5-3.el7 will be erased
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================================
 Package                                        Arch                                              Version                                                 Repository                                                Size
=========================================================================================================================================================================================================================
Removing:
 lz4                                            x86_64                                            1.7.5-3.el7                                             @anaconda/7.8                                            358 k

DB8action Summary
=========================================================================================================================================================================================================================
Remove  1 Package

Installed size: 358 k
Is this ok [y/N]: y
Downloading packages:
Running DB8action check
Running DB8action test
DB8action test succeeded
Running DB8action
  Erasing    : lz4-1.7.5-3.el7.x86_64                                                                                                                                                                                1/1
  Verifying  : lz4-1.7.5-3.el7.x86_64                                                                                                                                                                                1/1

Removed:
  lz4.x86_64 0:1.7.5-3.el7

Complete!
</pre>
<br>



<p class="wp-block-paragraph">I did that for all until having no duplicated any more.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# package-cleanup --dupes
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">So the duplicated came for sure due to this aborted transaction, id 8 that should have replaced the previous version package.</p>



<p class="wp-block-paragraph">And I can confirm it. If I look to the <strong>all</strong> DB action transaction log for this transaction 8, /var/lib/yum/DB8action-all.2020-11-16.14:35.57, I can find both install and erase:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/lib/yum/DB8action-all.2020-11-16.14:35.57
install 1:mariadb-libs-5.5.68-1.el7.x86_64
...
erase 1:mariadb-libs-5.5.65-1.el7.x86_64
</pre>
<br>



<p class="wp-block-paragraph">So it was planned that yum installs new version and removes old one.</p>



<p class="wp-block-paragraph">But if I look to the <strong>done</strong> file, /var/lib/yum/DB8action-done.2020-11-16.14:35.57, file showing what really yum did, I will only find the install and not the erase:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/lib/yum/DB8action-done.2020-11-16.14:35.57
...
install 1:mariadb-libs-5.5.68-1.el7.x86_64
...
</pre>
<br>



<p class="wp-block-paragraph">So the intention was to install version 5.5.68 and remove old 5.5.65, but as the yum transaction was aborted after the installation package, yum only installed 5.5.68 but could not remove the old one 5.5.65, thus the duplicated. Yum transaction was aborted in between.</p>



<p class="wp-block-paragraph">Knowing I resolved manually the duplication, I decided to complete the aborted transaction by just doing cleanup.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum-complete-DB8action --cleanup-only
Cleaning up unfinished DB8action journals
Cleaning up 2020-11-16.14:35.57
[root@SRV ~]#
</pre>
<br>




<p class="wp-block-paragraph">cleanup-only will simply delete the stale journal. Knowing I manually resolved the problem, I think it was the right think to do.</p>



<p class="wp-block-paragraph">And now I&#8217;m clean&#8230;</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">[root@SRV ~]# yum update
Loaded plugins: ulninfo
No packages marked for update
[root@SRV ~]#
</pre>
<br>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-linux-unfinished-db8actions-remaining/">Oracle Linux &#8211; Unfinished DB8actions remaining</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/oracle-linux-unfinished-db8actions-remaining/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle database linux service not working properly after Oracle Linux upgrade</title>
		<link>https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/</link>
					<comments>https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 17:11:47 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[oracle linux]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46145</guid>

					<description><![CDATA[<p>After performing an in-place Oracle linux upgrade I could realize that the oracle service was unusable. I would like to share with you the reason and how to resolve it. Problem description After in-place Oracle linux upgrade from el7 to el8, I could see that the oracle service was not working any more. This service [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/">Oracle database linux service not working properly after Oracle Linux upgrade</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After performing an in-place Oracle linux upgrade I could realize that the oracle service was unusable. </p>



<p class="wp-block-paragraph">I would like to share with you the reason and how to resolve it.</p>



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



<h3>Problem description</h3>



<p class="wp-block-paragraph">After in-place Oracle linux upgrade from el7 to el8, I could see that the oracle service was not working any more. This service is used to automatically start and stop the databases during server reboot according to the entry in the /etc/oratab.</p>



<p class="wp-block-paragraph">Here is the initial script:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /usr/lib/systemd/system/oracle.service
[Unit]
Description=Oracle Database Service
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=simple
RemainAfterExit=yes
User=oracle
Group=oinstall
ExecStart=/rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh start
ExecStop=/rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh stop
TimeoutStartSec=200s
TimeoutStopSec=200s

[Install]
WantedBy=multi-user.target
</pre>
<br>




<p class="wp-block-paragraph">As we can see the service goes in error when running start and stop:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,5,20,21,24]">
[root@SRV ~]# systemctl stop oracle.service
[root@SRV ~]# systemctl status oracle.service
● oracle.service - Oracle Database Service
   Loaded: loaded (/usr/lib/systemd/system/oracle.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2026-06-18 10:52:43 CEST; 2s ago
  Process: 33420 ExecStop=/rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh stop (code=exited, status=203/EXEC)
 Main PID: 1949 (code=exited, status=0/SUCCESS)

Jun 18 09:43:29 SRV.INT.custname.CH service_start_stop.ksh[8220]: 2026-06-18_09:43:29::database.ksh::SetOraEnv            ::INFO ==&gt; Environment: DB6 (/rdbms/u01/app/oracle/product/19.&gt;
Jun 18 09:43:29 SRV.INT.custname.CH service_start_stop.ksh[8221]: ls: cannot access '/rdbms/u01/app/oracle/admin/DB6/dmk/pdbs/': No such file or directory
Jun 18 09:43:29 SRV.INT.custname.CH service_start_stop.ksh[8229]: 2026-06-18_09:43:29::database.ksh::ProcessAllDB         ::INFO ==&gt; START database DB6
Jun 18 09:43:29 SRV.INT.custname.CH service_start_stop.ksh[8237]: 2026-06-18_09:43:29::database.ksh::ProcessAllDB         ::INFO ==&gt; Database DB6 not started as the ORATAB flag is "N"
Jun 18 09:43:31 SRV.INT.custname.CH service_start_stop.ksh[9889]: 2026-06-18_09:43:31::service_start_stop.ksh::ExecScripts ::INFO ==&gt; Return Code : 0
Jun 18 09:43:31 SRV.INT.custname.CH service_start_stop.ksh[9897]: 2026-06-18_09:43:31::service_start_stop.ksh::CleanExit  ::INFO ==&gt; Program exited with ExitCode : 0
Jun 18 10:52:43 SRV.INT.custname.CH systemd[1]: Stopping Oracle Database Service...
Jun 18 10:52:43 SRV.INT.custname.CH systemd[1]: oracle.service: Control process exited, code=exited status=203
Jun 18 10:52:43 SRV.INT.custname.CH systemd[1]: oracle.service: Failed with result 'exit-code'.
Jun 18 10:52:43 SRV.INT.custname.CH systemd[1]: Stopped Oracle Database Service.

[root@SRV ~]# systemctl start oracle.service
[root@SRV ~]# systemctl status oracle.service
● oracle.service - Oracle Database Service
   Loaded: loaded (/usr/lib/systemd/system/oracle.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2026-06-18 10:53:06 CEST; 1s ago
  Process: 33420 ExecStop=/rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh stop (code=exited, status=203/EXEC)
  Process: 33428 ExecStart=/rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh start (code=exited, status=203/EXEC)
 Main PID: 33428 (code=exited, status=203/EXEC)

Jun 18 10:53:06 SRV.INT.custname.CH systemd[1]: Started Oracle Database Service.
Jun 18 10:53:06 SRV.INT.custname.CH systemd[1]: oracle.service: Main process exited, code=exited, status=203/EXEC
Jun 18 10:53:06 SRV.INT.custname.CH systemd[1]: oracle.service: Failed with result 'exit-code'.
[root@SRV ~]#
</pre>
<br>



<h3>Analyzing the problem</h3>



<p class="wp-block-paragraph">Checking the output of journalctl command I could see following permission issue.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,12,13,14]">
[root@SRV ~]# journalctl -xe
Jun 02 15:30:25 SRV.INT.custname.CH su[20823]: (to root) oracle on pts/0
Jun 02 15:30:25 SRV.INT.custname.CH su[20823]: pam_unix(su-l:session): session opened for user root by oracle(uid=54321)
Jun 02 15:30:29 SRV.INT.custname.CH systemd[1]: Started Oracle Database Service.
-- Subject: Unit oracle.service has finished start-up
-- Defined-By: systemd
-- Support: https://support.oracle.com
--
-- Unit oracle.service has finished starting up.
--
-- The start-up result is done.
Jun 02 15:30:29 SRV.INT.custname.CH systemd[20852]: oracle.service: Failed to execute command: Permission denied
Jun 02 15:30:29 SRV.INT.custname.CH systemd[20852]: oracle.service: Failed at step EXEC spawning /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh: Permiss&gt;
-- Subject: Process /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh could not be executed
</pre>
<br>



<p class="wp-block-paragraph">This problem comes from SELinux, where under el8 only binaries are authorized in the service and not shell script any more.</p>



<h3>Solution</h3>



<p class="wp-block-paragraph">The solution is to add /bin/bash into both start and stop lines.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,15,16]">
[root@SRV ~]# vi /usr/lib/systemd/system/oracle.service

[root@SRV ~]# cat /usr/lib/systemd/system/oracle.service
[Unit]
Description=Oracle Database Service
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=simple
RemainAfterExit=yes
User=oracle
Group=oinstall
ExecStart=/bin/bash /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh start
ExecStop=/bin/bash /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh stop
TimeoutStartSec=200s
TimeoutStopSec=200s

[Install]
WantedBy=multi-user.target
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">And then the service could be successfully started and stopped again.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,6]">
[root@SRV ~]# systemctl start oracle.service

[root@SRV ~]# systemctl status oracle.service
● oracle.service - Oracle Database Service
   Loaded: loaded (/usr/lib/systemd/system/oracle.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2026-06-18 10:54:52 CEST; 4s ago
 Main PID: 33585 (bash)
    Tasks: 52 (limit: 3295056)
   Memory: 127.8M
   CGroup: /system.slice/oracle.service
           ├─33585 /bin/bash /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh start
           ├─33698 /bin/bash /rdbms/u01/app/oracle/local/dmk/bin/service_start_stop.ksh start
           ├─33855 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB1 -inherit
           ├─34041 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB2 -inherit
           ├─34227 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DG -inherit
           ├─34413 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB3 -inherit
           ├─34599 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB4 -inherit
           ├─34825 /rdbms/u01/app/oracle/product/19.30.260120_MX/bin/tnslsnr LISTENER_DB5 -inherit
           ├─35051 /rdbms/u01/app/oracle/product/19.30.260120_MX/bin/tnslsnr LISTENER_DB6 -inherit
...
...
...
</pre>
<br>



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



<p class="wp-block-paragraph">I took a lot of time to understand what could happen here, moreover it was working without any problem under el7. This is why I think it is good to know and decided to share it. I thank my collegue, Jérôme Witt, who could face this problem earlier and shared this good tips with me.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/">Oracle database linux service not working properly after Oracle Linux upgrade</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/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Upgrading Oracle Linux when running Oracle databases</title>
		<link>https://www.dbi-services.com/blog/upgrading-oracle-linux-when-running-oracle-databases/</link>
					<comments>https://www.dbi-services.com/blog/upgrading-oracle-linux-when-running-oracle-databases/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 16:33:10 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[oracle linux]]></category>
		<category><![CDATA[upgrade]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46019</guid>

					<description><![CDATA[<p>I recently had to upgrade an Oracle Linux production server running 19.30 Oracle databases for one of our customer. In this post, I will share with you the full set of steps that need to be carried out to run an in-place Oracle Linux upgrade when running Oracle databases. The method will be the same [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/upgrading-oracle-linux-when-running-oracle-databases/">Upgrading Oracle Linux when running Oracle databases</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently had to upgrade an Oracle Linux production server running 19.30 Oracle databases for one of our customer. In this post, I will share with you the full set of steps that need to be carried out to run an in-place Oracle Linux upgrade when running Oracle databases. The method will be the same to upgrade from Oracle Linux 7 to 8, or 8 to 9 or 9 to 10 version. In my case, customer was running Oracle Linux 7, and I had to perform an in-place upgrade to version 8.</p>



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



<h3>Backup your current server</h3>



<p class="wp-block-paragraph">Knowing we are going to run an in-place upgrade, it is important that we backup the server in order to restore it if something would not run smoothly.</p>



<p class="wp-block-paragraph">There is several why to do this. </p>



<ul class="wp-block-list">
<li>You are running a VM and can take a snapshot. This is the easiest and quicker way to backup and restore.</li>



<li>Take a full backup or image</li>



<li>Have any tool like Veeam backup that will secure your operating system</li>



<li>Look for existing free tool that will help you to create a bootable disaster recovery backup (to be previously tested)</li>



<li>Perform a manual backup</li>
</ul>



<p class="wp-block-paragraph">What is also important is to ensure your backup is usable. </p>



<p class="wp-block-paragraph">In my case, it was a physical server, no backup tool, no snapshot possibility. So I had to perform some manual backup.</p>



<ul class="wp-block-list">
<li>I ensured to have database backups and also my server was only running standby databases</li>



<li>I wrote a script to save all the important linux configurations that will help me to restore the system reinstalling it from scratch if needed</li>
</ul>



<p class="wp-block-paragraph">Here is my script:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: []">
#!/bin/bash
#-----------------------------------------------------------------
#
# Author: Marc Wagner, dbi services
#
# Purpose:To backup OS configuration before OS patching
#
# To be run as root: ./OS_backup.sh
#
# History:
# 28.05.2026 - Initial
#
#
#-----------------------------------------------------------------

# Create backup directory if not existing
if [ ! -d "/rdbms/OS_backup" ]; then
    mkdir -p "/rdbms/OS_backup"
fi

# Backup OS configuration file into tar file
cd /
tar czpf /rdbms/OS_backup/ol7-os-backup-$(hostname)-$(date +%Y%m%d_%H%M).tgz \
--xattrs \
--acls \
./etc \
./boot \
./home \
./root \
./usr/local \
./var/spool/cron \
./opt \
./var/lib/rpm

# Backup Package inventory
rpm -qa &gt; /rdbms/OS_backup/rpm-list-$(hostname)-$(date +%Y%m%d_%H%M).txt

# Backup current release version
cat /etc/oracle-release &gt; /rdbms/OS_backup/OS-release-$(hostname)-$(date +%Y%m%d_%H%M).txt

# Backup Boot loader metadata
grub2-mkconfig -o /rdbms/OS_backup//grub-$(hostname)-$(date +%Y%m%d_%H%M).cfg
echo "*************************************" &gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# lsblk" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
lsblk &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo  &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo  &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# lsblk -f" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
lsblk -f &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo  &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo  &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# blkid" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt
blkid &gt;&gt; /rdbms/OS_backup/lsblk-$(hostname)-$(date +%Y%m%d_%H%M).txt

# Backup service
systemctl list-unit-files &gt; /rdbms/OS_backup/systemd-units-$(hostname)-$(date +%Y%m%d_%H%M).txt

# Backup live Network configuration
ip addr &gt; /rdbms/OS_backup/ip-$(hostname)-$(date +%Y%m%d_%H%M).txt
ip route &gt; /rdbms/OS_backup/routes-$(hostname)-$(date +%Y%m%d_%H%M).txt

# Backup LVM configuration
echo "*************************************" &gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# vgs" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
vgs &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# lvs" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
lvs &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# pvs" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
pvs &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/LVM-$(hostname)-$(date +%Y%m%d_%H%M).txt

# SELinux
echo "*************************************" &gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# getenforce" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
getenforce &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# sestatus" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
sestatus &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# selinux config file" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
cat /etc/selinux/config &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# SELinux is enabled at kernel level?" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
cat /proc/cmdline | grep -i selinux &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "# detailed policy and booleans" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo "*************************************" &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
semanage boolean -l &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
echo &gt;&gt; /rdbms/OS_backup/SELinux-$(hostname)-$(date +%Y%m%d_%H%M).txt
</pre>
</br>



<p class="wp-block-paragraph">I ran the scripts:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# ./OS_backup.sh
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.17-2036.102.0.2.el7uek.x86_64
Found initrd image: /boot/initramfs-5.4.17-2036.102.0.2.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-5.4.17-2036.100.6.1.el7uek.x86_64
Found initrd image: /boot/initramfs-5.4.17-2036.100.6.1.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-4.14.35-2025.402.2.1.el7uek.x86_64
Found initrd image: /boot/initramfs-4.14.35-2025.402.2.1.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.11.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.11.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.6.1.el7.x86_64
Found linux image: /boot/vmlinuz-0-rescue-939798bf09ac467188081e34260fbcfd
Found initrd image: /boot/initramfs-0-rescue-939798bf09ac467188081e34260fbcfd.img
done
lsblk: nvme2c2n1: hidden, ignore
lsblk: nvme1c1n1: hidden, ignore
lsblk: nvme0c0n1: hidden, ignore
lsblk: nvme5c5n1: hidden, ignore
lsblk: nvme4c4n1: hidden, ignore
lsblk: nvme3c3n1: hidden, ignore
lsblk: nvme2c2n1: hidden, ignore
lsblk: nvme1c1n1: hidden, ignore
lsblk: nvme0c0n1: hidden, ignore
lsblk: nvme5c5n1: hidden, ignore
lsblk: nvme4c4n1: hidden, ignore
lsblk: nvme3c3n1: hidden, ignore
[root@SRV scripts]#
</pre>
</br>



<p class="wp-block-paragraph">And I checked the backup files:</p>



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

[root@SRV OS_backup]# ls -ltrh
total 2.6G
-rw-r--r--. 1 root root 2.6G Jun 17 14:38 ol7-os-backup-SRV.INT.CUSTNAME.CH-20260617_1436.tgz
-rw-r--r--. 1 root root  17K Jun 17 14:38 rpm-list-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root   32 Jun 17 14:38 OS-release-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root 8.3K Jun 17 14:38 grub-SRV.INT.CUSTNAME.CH-20260617_1438.cfg
-rw-r--r--. 1 root root 9.0K Jun 17 14:38 lsblk-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root  16K Jun 17 14:38 systemd-units-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root 2.0K Jun 17 14:38 ip-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root  131 Jun 17 14:38 routes-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root 1.6K Jun 17 14:38 LVM-SRV.INT.CUSTNAME.CH-20260617_1438.txt
-rw-r--r--. 1 root root  26K Jun 17 14:38 SELinux-SRV.INT.CUSTNAME.CH-20260617_1438.txt
[root@SRV OS_backup]#
</pre>
</br>



<p class="wp-block-paragraph">I also saved this file on a NFS mount point to get them out of the server.</p>



<h3>Check Oracle Linux current version</h3>



<p class="wp-block-paragraph">I confirmed we are currently running OL 7.9.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# cat /etc/oracle-release
Oracle Linux Server release 7.9
</pre>
</br>



<h3>Stop Oracle resources: databases and listener</h3>



<p class="wp-block-paragraph">Databases and listener need to be stop during the in-place upgrade process and we need to ensure that will not be started during reboot. We will therefore stop the oracle resources and update /etc/oratab.</p>



<h4>Check current running oracle resources</h4>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,12]">
oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [p]mon
oracle    5761     1  0 14:12 ?        00:00:00 ora_pmon_DB6
oracle    5763     1  0 14:12 ?        00:00:00 ora_pmon_DB1
oracle    5767     1  0 14:12 ?        00:00:00 ora_pmon_DB8
oracle    5797     1  0 14:12 ?        00:00:00 ora_pmon_DB2
oracle    5803     1  0 14:12 ?        00:00:00 ora_pmon_DB7
oracle    5805     1  0 14:12 ?        00:00:00 ora_pmon_DB4
oracle    5807     1  0 14:12 ?        00:00:00 ora_pmon_DB3
oracle    5809     1  0 14:12 ?        00:00:00 ora_pmon_DB5
oracle    5855     1  0 14:12 ?        00:00:00 ora_pmon_DB9

oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [t]nslsn
oracle    2316     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB1 -inherit
oracle    2545     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB2 -inherit
oracle    2731     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DG -inherit
oracle    2938     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB3 -inherit
oracle    3133     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB4 -inherit
oracle    3416     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120_MX/bin/tnslsnr LISTENER_DB5 -inherit
oracle    3639     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120_MX/bin/tnslsnr LISTENER_DB6 -inherit
oracle    3822     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB7 -inherit
oracle    4005     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB8 -inherit
oracle    4189     1  5 14:12 ?        00:02:07 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB9 -inherit
oracle    4372     1  0 14:12 ?        00:00:00 /rdbms/u01/app/oracle/product/19.30.260120/bin/tnslsnr LISTENER_DB10 -inherit
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<p class="wp-block-paragraph">Also I ensured all the running databases are standby databases (see below mo for mount status and mrp for physical standby database). Switchover has been run previously.</p>



<p class="wp-block-paragraph"><code>DB DB1 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB2 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB3 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB4 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB5 mo mrp /rdbms/u01/app/oracle/product/19.30.260120_MX<br>DB DB6 mo mrp /rdbms/u01/app/oracle/product/19.30.260120_MX<br>DB DB7 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB8 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB9 mo mrp /rdbms/u01/app/oracle/product/19.30.260120<br>DB DB10 of /rdbms/u01/app/oracle/product/19.30.260120</code></p>



<h4>Update oratab</h4>



<p class="wp-block-paragraph">Put all DB to N in oratab to ensure they will not start automatically on reboot.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@SRV:~/ [rdbms193000] vi /etc/oratab
oracle@SRV:~/ [rdbms193000] cat /etc/oratab
#



# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
DB10:/rdbms/u01/app/oracle/product/19.30.260120:N
DB3:/rdbms/u01/app/oracle/product/19.30.260120:N
DB9:/rdbms/u01/app/oracle/product/19.30.260120:N
DB4:/rdbms/u01/app/oracle/product/19.30.260120:N
DB1:/rdbms/u01/app/oracle/product/19.30.260120:N
DB8:/rdbms/u01/app/oracle/product/19.30.260120:N
DB7:/rdbms/u01/app/oracle/product/19.30.260120:N
DB2:/rdbms/u01/app/oracle/product/19.30.260120:N
DB5:/rdbms/u01/app/oracle/product/19.30.260120_MX:N
DB6:/rdbms/u01/app/oracle/product/19.30.260120_MX:N
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<h4>Stop databases</h4>



<p class="wp-block-paragraph">I then stopped all databases. I was using our dmk tool, and I&#8217;m sure everybody knows how to stop Oracle databases. <code>shutdown immediate</code> command will make the job.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@SRV:~/ [rdbms193000] database.ksh stop
2026-06-17_14:52:48::database.ksh::ProcessAllDB         ::INFO ==&gt; Number of database(s) to process: 10
2026-06-17_14:52:48::database.ksh::ProcessAllDB         ::INFO ==&gt; Number of available CPUs        : 16
2026-06-17_14:52:48::database.ksh::ProcessAllDB         ::INFO ==&gt; Number of usable CPUs           : 15
2026-06-17_14:52:48::database.ksh::ProcessAllDB         ::INFO ==&gt; Nbr of database(s) to process per CPU: 1
2026-06-17_14:52:48::database.ksh::ProcessAllDB         ::INFO ==&gt; Nbr of database(s) undispached       : 0
...
2026-06-17_14:53:13::database.ksh::CheckStatus          ::INFO ==&gt; Current Status for DB7 is ... stopped
2026-06-17_14:53:13::database.ksh::CheckStatus          ::INFO ==&gt; Current Status for DB2 is ... stopped
2026-06-17_14:53:13::database.ksh::CheckStatus          ::INFO ==&gt; Current Status for DB4 is ... stopped
2026-06-17_14:53:13::database.ksh::CheckStatus          ::INFO ==&gt; Current Status for DB5 is ... stopped
2026-06-17_14:53:13::database.ksh::CheckStatus          ::INFO ==&gt; Current Status for DB9 is ... stopped
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<h4>Stop listeners</h4>



<p class="wp-block-paragraph">I also stopped all listeners. I used our dmk took but you could run <code>lsnrctl stop</code> command.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@SRV:~/ [rdbms193000] listener.ksh stop
...
...
...
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-JUN-2026 14:53:49

Copyright (c) 1991, 2025, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=SRV.INT.custname.CH)(PORT=1560))
The command completed successfully
2026-06-17_14:53:49::listener.ksh::CheckStatus          ::INFO ==&gt; Current Status for LISTENER_DB5 is ... stopped
2026-06-17_14:53:49::listener.ksh::DoCommand            ::INFO ==&gt; Command Return Code : 0
2026-06-17_14:53:49::listener.ksh::DoCommand            ::INFO ==&gt; STOP listener LISTENER_DB6
2026-06-17_14:53:49::listener.ksh::CheckStatus          ::INFO ==&gt; Status for LISTENER_DB6 is ... started

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-JUN-2026 14:53:49

Copyright (c) 1991, 2025, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=SRV.INT.custname.CH)(PORT=1561))
The command completed successfully
2026-06-17_14:53:49::listener.ksh::CheckStatus          ::INFO ==&gt; Current Status for LISTENER_DB6 is ... stopped
2026-06-17_14:53:49::listener.ksh::DoCommand            ::INFO ==&gt; Command Return Code : 0
2026-06-17_14:53:49::listener.ksh::CleanExit            ::INFO ==&gt; Program exited with ExitCode : 0
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<h4>Check Oracle running resources</h4>



<p class="wp-block-paragraph">Let&#8217;s ensure all Oracle resources have been stopped:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [p]mon
oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [t]nslsn
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<h3>Install leapp</h3>



<p class="wp-block-paragraph">The in-place upgrade will be done with leapp. We need to install the leapp package.</p>



<p class="wp-block-paragraph">I checked existing leapp package:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# rpm -qa | grep -i leapp
[root@SRV scripts]# 
</pre>
</br>



<p class="wp-block-paragraph">Leapp package is not installed.</p>



<p class="wp-block-paragraph">I installed the package and could see none is existing in current repo, and I do not have any leapp repo:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,9,12]">
[root@SRV scripts]# yum install -y leapp-upgrade --enablerepo=ol7_leapp,ol7_latest
Loaded plugins: ulninfo
epel/x86_64/metalink                                                                                                                                               | 3.5 kB  00:00:00
ol7_UEKR6                                                                                                                                                          | 3.0 kB  00:00:00
ol7_latest                                                                                                                                                         | 3.6 kB  00:00:00
No package leapp-upgrade available.
Error: Nothing to do

[root@SRV scripts]# yum repolist all | grep -i leapp
[root@SRV scripts]#

[root@SRV scripts]# ls -ltrh /etc/yum.repos.d/
total 20K
-rw-r--r--. 1 root root  226 Oct  1  2020 virt-ol7.repo
-rw-r--r--. 1 root root 2.6K Oct  1  2020 uek-ol7.repo
-rw-r--r--. 1 root root 4.0K Oct  1  2020 oracle-linux-ol7.repo
-rw-r--r--. 1 root root 1.5K Sep  4  2021 epel-testing.repo
-rw-r--r--. 1 root root 1.4K Sep  4  2021 epel.repo
[root@SRV scripts]#
</pre>
</br>



<p class="wp-block-paragraph">I updated the oraclelinux-release-el7 repository release package to last 1.0-17.el7 version:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# yum update oraclelinux-release-el7
Loaded plugins: ulninfo
Resolving Dependencies
There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--&gt; Running DB8action check
---&gt; Package oraclelinux-release-el7.x86_64 0:1.0-13.1.el7 will be updated
---&gt; Package oraclelinux-release-el7.x86_64 0:1.0-17.el7 will be an update
--&gt; Finished Dependency Resolution

Dependencies Resolved

==========================================================================================================================================================================================
 Package                                                Arch                                  Version                                     Repository                                 Size
==========================================================================================================================================================================================
Updating:
 oraclelinux-release-el7                                x86_64                                1.0-17.el7                                  ol7_latest                                 22 k

DB8action Summary
==========================================================================================================================================================================================
Upgrade  1 Package

Total download size: 22 k
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
oraclelinux-release-el7-1.0-17.el7.x86_64.rpm                                                                                                                      |  22 kB  00:00:00
Running DB8action check
Running DB8action test
DB8action test succeeded
Running DB8action
  Updating   : oraclelinux-release-el7-1.0-17.el7.x86_64                                                                                                                              1/2
  Cleanup    : oraclelinux-release-el7-1.0-13.1.el7.x86_64                                                                                                                            2/2
  Verifying  : oraclelinux-release-el7-1.0-17.el7.x86_64                                                                                                                              1/2
  Verifying  : oraclelinux-release-el7-1.0-13.1.el7.x86_64                                                                                                                            2/2

Updated:
  oraclelinux-release-el7.x86_64 0:1.0-17.el7

Complete!
</pre>
</br>



<p class="wp-block-paragraph">Now I have a ol7_leapp repository:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# yum repolist all | grep -i leapp
ol7_leapp/x86_64                  Leapp Upgrade Utilities for Or disabled
[root@SRV scripts]#
</pre>
</br>



<p class="wp-block-paragraph">And I could installed leapp package:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# yum install -y leapp-upgrade --enablerepo=ol7_leapp,ol7_latest
Loaded plugins: ulninfo
ol7_leapp                                                                                                                                                          | 3.0 kB  00:00:00
(1/2): ol7_leapp/x86_64/updateinfo                                                                                                                                 |  47 kB  00:00:00
(2/2): ol7_leapp/x86_64/primary_db                                                                                                                                 |  44 kB  00:00:00
...
Installed:
  leapp-upgrade-el7toel8.noarch 0:0.20.0-2.0.11.el7_9

Dependency Installed:
  dnf.noarch 0:4.0.9.2-1.el7_6                                dnf-data.noarch 0:4.0.9.2-1.el7_6          leapp.noarch 0:0.17.0-1.0.2.el7_9         leapp-deps.noarch 0:0.17.0-1.0.2.el7_9
  leapp-upgrade-el7toel8-deps.noarch 0:0.20.0-2.0.11.el7_9    libcomps.x86_64 0:0.1.8-14.el7             libdnf.x86_64 0:0.22.5-1.el7_8            libmodulemd.x86_64 0:1.6.3-1.el7
  librepo.x86_64 0:1.8.1-8.el7_9                              libsolv.x86_64 0:0.6.34-4.el7              libyaml.x86_64 0:0.1.4-11.el7_0           python-backports.x86_64 0:1.0-8.el7
  python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7  python-enum34.noarch 0:1.0.4-1.el7         python-ipaddress.noarch 0:1.0.16-2.el7    python-requests.noarch 0:2.6.0-10.el7
  python-setuptools.noarch 0:0.9.8-7.0.1.el7                  python-six.noarch 0:1.9.0-2.el7            python-urllib3.noarch 0:1.10.2-7.0.1.el7  python2-dnf.noarch 0:4.0.9.2-1.el7_6
  python2-hawkey.x86_64 0:0.22.5-1.el7_8                      python2-leapp.noarch 0:0.17.0-1.0.2.el7_9  python2-libcomps.x86_64 0:0.1.8-14.el7    python2-libdnf.x86_64 0:0.22.5-1.el7_8

Complete!
</pre>
</br>



<p class="wp-block-paragraph">And I could confirm leapp rpm has been successfully installed and is available:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV scripts]# rpm -qa | grep -i leapp
leapp-deps-0.17.0-1.0.2.el7_9.noarch
leapp-upgrade-el7toel8-deps-0.20.0-2.0.11.el7_9.noarch
leapp-0.17.0-1.0.2.el7_9.noarch
python2-leapp-0.17.0-1.0.2.el7_9.noarch
leapp-upgrade-el7toel8-0.20.0-2.0.11.el7_9.noarch
[root@SRV scripts]#
</pre>
</br>



<h3>System prechecks and prepare system for the upgrade</h3>



<p class="wp-block-paragraph">There is a few requirements that needs to be done before starting in-place upgrade with leapp.</p>



<h4>Set PermitRootLogin to yes</h4>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5,7]">
[root@SRV ~]# grep -i PermitRootLogin /etc/ssh/sshd_config
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

[root@SRV ~]# vi /etc/ssh/sshd_config

[root@SRV ~]# grep -i PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
[root@SRV ~]#
</pre>
</br>



<h4>Restart sshd service</h4>



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



<h4>Deactivate CIFS</h4>



<p class="wp-block-paragraph">No CIFS mount point should be existing during the upgrade. Use command <code>mount -t cifs</code> to check if some are existing. If it is the case they should be visible with <code>df -h</code> command. All should be unmounted with root user using command <code>umount</code>.</p>



<p class="wp-block-paragraph">It is also important to comment out the CIFS mount point from the /etc/fstab file to ensure they will be not automatically mounted during upgrade reboot.</p>



<h4>Check secureboot is disabled</h4>



<p class="wp-block-paragraph">Ensure secure boot is disabled:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5]">
[root@SRV ~]# bootctl status
System:
   Machine ID: 939798bf09ac467188081e34260fbcfd
      Boot ID: 50f116f91fe1424c97890e75a8f48915
  Secure Boot: disabled
   Setup Mode: user

Selected Firmware Entry:
        Title: Oracle Linux
    Partition: /dev/disk/by-partuuid/27483f47-6405-48f9-a000-23e722ff4add
         File: └─/EFI/redhat/shimx64.efi

No suitable data is provided by the boot manager. See:
  http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface
  http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec
for details.

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



<h4>Configure proxy in yum.conf if needed</h4>



<p class="wp-block-paragraph">If proxy is needed to connect to outside, it is important to have it configured in yum.conf.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# grep -i proxy /etc/yum.conf
proxy=http://172.X.X.X:3128
</pre>
</br>



<h4>Check if version lock installed</h4>



<p class="wp-block-paragraph">No version lock rpm should be installed.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep -i yum-plugin-versionlock
[root@SRV ~]#
</pre>
</br>



<h4>Get last el7 package version</h4>



<p class="wp-block-paragraph">Ensure we are getting last version for all installed packages.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# yum update -y
Loaded plugins: ulninfo
Resolving Dependencies
There are unfinished DB8actions remaining. You might consider running yum-complete-DB8action, or "yum-complete-DB8action --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--&gt; Running DB8action check
---&gt; Package NetworkManager.x86_64 1:1.18.8-1.el7 will be updated
---&gt; Package NetworkManager.x86_64 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager.x86_64 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package NetworkManager-config-server.noarch 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager-config-server.noarch 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package NetworkManager-glib.x86_64 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager-glib.x86_64 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package NetworkManager-libnm.x86_64 1:1.18.8-1.el7 will be updated
---&gt; Package NetworkManager-libnm.x86_64 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager-libnm.x86_64 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package NetworkManager-team.x86_64 1:1.18.8-1.el7 will be updated
---&gt; Package NetworkManager-team.x86_64 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager-team.x86_64 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package NetworkManager-tui.x86_64 1:1.18.8-2.el7_9 will be updated
---&gt; Package NetworkManager-tui.x86_64 1:1.18.8-2.0.1.el7_9 will be an update
---&gt; Package bash.x86_64 0:4.2.46-34.el7 will be updated
---&gt; Package bash.x86_64 0:4.2.46-35.el7_9 will be an update
...
...
...
(181/183): zlib-1.2.7-21.el7_9.x86_64.rpm                                                                                                                          |  90 kB  00:00:00
(182/183): kernel-uek-5.4.17-2136.338.4.2.el7uek.x86_64.rpm                                                                                                        | 112 MB  00:00:33
(183/183): linux-firmware-20241003-999.35.git95bfe086.el7.noarch.rpm                                                                                               | 382 MB  00:00:56
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                     9.9 MB/s | 731 MB  00:01:13
Running DB8action check
Running DB8action test
DB8action test succeeded
Running DB8action
  Updating   : 1:grub2-common-2.02-0.87.0.26.el7_9.14.noarch                                                                                                                        1/415
  Updating   : 1:redhat-release-server-7.9-6.0.1.el7_9.x86_64                                                                                                                       2/415
  Updating   : 32:bind-license-9.11.4-26.0.1.P2.el7_9.16.noarch                                                                                                                     3/415
  Updating   : 1:grub2-pc-modules-2.02-0.87.0.26.el7_9.14.noarch                                                                                                                    4/415
  Updating   : kbd-misc-1.15.5-16.el7_9.noarch                                                                                                                                      5/415
  Updating   : libX11-common-1.6.7-5.el7_9.noarch                                                                                                                                   6/415
  Updating   : kernel-headers-3.10.0-1160.119.1.0.5.el7.x86_64                                                                                                                      7/415
  Updating   : firewalld-filesystem-0.6.3-13.0.1.el7_9.noarch                                                                                                                       8/415
  Updating   : libreport-filesystem-2.1.11-53.0.3.el7.x86_64                                                                                                                        9/415
  Updating   : kbd-legacy-1.15.5-16.el7_9.noarch                                                                                                                                   10/415
  Installing : 999:iwlax2xx-firmware-20241003-999.35.el7.noarch [###########################                                                                                    ]  11/415...
...
...
...
  Cleanup    : glibc-common-2.17-317.0.1.el7.x86_64                                                                                                                               409/415
  Cleanup    : bash-4.2.46-34.el7.x86_64                                                                                                                                          410/415
  Cleanup    : nspr.x86_64                                                                                                                                                        411/415
  Cleanup    : nss-util.x86_64                                                                                                                                                    412/415
  Cleanup    : nss-softokn-freebl.x86_64                                                                                                                                          413/415
  Cleanup    : glibc-2.17-317.0.1.el7.x86_64                                                                                                                                      414/415
  Cleanup    : tzdata-2020f-1.el7.noarch                                                                                                                                          415/415
  ...
  ...
  ...
  rpm-build-libs.x86_64 0:4.11.3-48.0.3.el7_9                 rpm-libs.x86_64 0:4.11.3-48.0.3.el7_9                             rpm-python.x86_64 0:4.11.3-48.0.3.el7_9
  rsync.x86_64 0:3.1.2-12.el7_9                               rsyslog.x86_64 0:8.24.0-57.0.3.el7_9.3                            samba-client-libs.x86_64 0:4.10.16-25.0.5.el7_9
  samba-common.noarch 0:4.10.16-25.0.5.el7_9                  samba-common-libs.x86_64 0:4.10.16-25.0.5.el7_9                   selinux-policy.noarch 0:3.13.1-268.0.25.el7_9.2
  selinux-policy-targeted.noarch 0:3.13.1-268.0.25.el7_9.2    shim-x64.x86_64 0:15.8-1.0.3.el7                                  strace.x86_64 0:4.24-7.el7_9
  sudo.x86_64 0:1.8.23-10.el7_9.3                             sysstat.x86_64 0:10.1.5-20.0.3.el7_9                              systemd.x86_64 0:219-78.0.17.el7_9.9
  systemd-libs.x86_64 0:219-78.0.17.el7_9.9                   systemd-sysv.x86_64 0:219-78.0.17.el7_9.9                         tuned.noarch 0:2.11.0-12.0.3.el7_9
  tzdata.noarch 0:2024b-2.el7                                 unzip.x86_64 0:6.0-24.0.1.el7_9                                   util-linux.x86_64 0:2.23.2-65.0.4.el7_9.1
  virt-what.x86_64 0:1.18-4.el7_9.1                           wpa_supplicant.x86_64 1:2.6-12.el7_9.2                            xz.x86_64 0:5.2.2-2.el7_9
  xz-libs.x86_64 0:5.2.2-2.el7_9                              yum.noarch 0:3.4.3-168.0.5.el7                                    zlib.x86_64 0:1.2.7-21.el7_9

Complete!
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">It is important to reboot the server so it can start on the last kernel, otherwise we will have a leapp report error.</p>



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

login as: root
root@SRV's password:
Last failed login: Wed Jun 17 15:26:51 CEST 2026 from ts3-back.int.custname.ch on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Jun 17 14:37:30 2026 from ts3-back.int.custname.ch


[root@SRV ~]# uptime
 15:26:56 up 1 min,  1 user,  load average: 0.49, 0.23, 0.09
[root@SRV ~]#
</pre>
</br>



<h4>ULN Registration</h4>



<p class="wp-block-paragraph">Check that system is not register with ULN.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,10,17,21,23]">
[root@SRV ~]# rpm -qa | grep -Ei 'uln|rhn'
rhnsd-5.0.13-10.0.1.el7.x86_64
rhn-setup-2.0.2-24.0.11.el7.x86_64
rhn-check-2.0.2-24.0.11.el7.x86_64
yum-plugin-ulninfo-0.2-13.el7.noarch
yum-rhn-plugin-2.0.1-10.0.1.el7.noarch
rhn-client-tools-2.0.2-24.0.11.el7.x86_64
rhnlib-2.5.65-8.0.5.el7.noarch

[root@SRV ~]# ls -l /etc/sysconfig/rhn
total 8
drwxr-xr-x. 4 root root   39 Aug  1  2023 allowed-actions
drwxr-xr-x. 2 root root    6 Aug  1  2023 clientCaps.d
-rw-r--r--. 1 root root   13 Jun 17  2013 rhnsd
-rw-r--r--. 1 root root 1897 Aug  1  2023 up2date

[root@SRV ~]# yum repolist all | grep -iE 'uln|oraclelinux|linux.oracle.com'
Loaded plugins: ulninfo
ol8_oraclelinuxmanager210_client/x86_64 Oracle Linux Manager Cli disabled

[root@SRV ~]# grep -Ri "linux.oracle.com\|uln" /etc/yum.repos.d/

[root@SRV ~]# uln-channel -l
Unable to locate SystemId file. Is this system registered?
[root@SRV ~]#
</pre>
</br>



<h3>Run pre-upgrade</h3>



<p class="wp-block-paragraph">We can now run the preupgrade.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">[root@SRV ~]# leapp preupgrade --oraclelinux
==&gt; Processing phase `configuration_phase`
====&gt; * ipu_workflow_config
        IPU workflow config actor
==&gt; Processing phase `FactsCollection`
====&gt; * DB8action_workarounds
        Provides additional RPM DB8action tasks based on bundled RPM packages.
====&gt; * scan_kernel_cmdline
        No documentation has been provided for the scan_kernel_cmdline actor.
====&gt; * persistentnetnames
        Get network interface information for physical ethernet interfaces of the original system.
====&gt; * common_leapp_dracut_modules
        Influences the generation of the initram disk
====&gt; * scanmemory
        Scan Memory of the machine.
...
...
...
====&gt; * target_userspace_creator
        Initializes a directory to be populated as a minimal environment to run binaries from the target system.
Latest Unbreakable Enterprise Kernel Release 6  0.0  B/s |   0  B     00:00
Oracle Linux 8 Application Stream (x86_64)      0.0  B/s |   0  B     00:00
Oracle Linux 8 BaseOS Latest (x86_64)           0.0  B/s |   0  B     00:00
No match for argument: dnf
No match for argument: util-linux
No match for argument: dnf-command(config-manager)

============================================================
                           ERRORS
============================================================

2026-06-17 15:42:12.075669 [ERROR] Actor: target_userspace_creator
Message: Unable to install OL 8 userspace packages.
Summary:
    Details: DNF failed to install userspace packages, likely due to the proxy configuration detected in the YUM/DNF configuration file. Make sure the proxy is properly configured in /etc/dnf/dnf.conf. It's also possible the proxy settings in the DNF configuration file are incompatible with the target system. A compatible configuration can be placed in /etc/leapp/files/dnf.conf which, if present, will be used during the upgrade instead of /etc/dnf/dnf.conf. In such case the configuration will also be applied to the target system.
    Stderr: Host and machine ids are equal (939798bf09ac467188081e34260fbcfd): refusing to link journals
            Failed to synchronize cache for repo 'ol8_UEKR6', ignoring this repo.
            Failed to synchronize cache for repo 'ol8_appstream', ignoring this repo.
            Failed to synchronize cache for repo 'ol8_baseos_latest', ignoring this repo.
            Error: Unable to find a match: dnf util-linux dnf-command(config-manager)

============================================================
                       END OF ERRORS
============================================================

Debug output written to /var/log/leapp/leapp-preupgrade.log

============================================================
                      REPORT OVERVIEW
============================================================

Following errors occurred and the upgrade cannot continue:
    1. Actor: target_userspace_creator
       Message: Unable to install OL 8 userspace packages.

HIGH and MEDIUM severity reports:
    1. Packages available in excluded repositories will not be installed
    2. Packages not signed by Oracle found on the system
    3. Detected customized configuration for dynamic linker.
    4. Difference in Python versions and support in OL 8
    5. Default Boot Kernel

Reports summary:
    Errors:                      1
    Inhibitors:                  0
    HIGH severity reports:       4
    MEDIUM severity reports:     1
    LOW severity reports:        5
    INFO severity reports:       3

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW
============================================================

Answerfile has been generated at /var/log/leapp/answerfile
[root@SRV ~]#
</pre>
<br>



<h3>Check preupgrade report</h3>



<p class="wp-block-paragraph">From the preupgrade command output, we can see the number of errors. All errors and inhibitor are mandatory to be resolved. I would fully recommend to resolve as well all high severity issues and to, at least review the medium, low and info severity.</p>



<p class="wp-block-paragraph">Some issues need to be resolved before the upgrade, some after.</p>



<p class="wp-block-paragraph">I can have details of the issue from the leapp-report.txt file. Here extract of mine:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/log/leapp/leapp-report.txt
Risk Factor: high (error)
Title: Unable to install OL 8 userspace packages.
Summary: {"details": "DNF failed to install userspace packages, likely due to the proxy configuration detected in the YUM/DNF configuration file. Make sure the proxy is properly configured in /etc/dnf/dnf.conf. It's also possible the proxy settings in the DNF configuration file are incompatible with the target system. A compatible configuration can be placed in /etc/leapp/files/dnf.conf which, if present, will be used during the upgrade instead of /etc/dnf/dnf.conf. In such case the configuration will also be applied to the target system.", "stderr": "Host and machine ids are equal (939798bf09ac467188081e34260fbcfd): refusing to link journals
Failed to synchronize cache for repo 'ol8_UEKR6', ignoring this repo.
Failed to synchronize cache for repo 'ol8_appstream', ignoring this repo.
Failed to synchronize cache for repo 'ol8_baseos_latest', ignoring this repo.
Error: Unable to find a match: dnf util-linux dnf-command(config-manager)
"}
Key: d090c9f87ad7eae313bd4101ba68dbcf8697f3e4
----------------------------------------
Risk Factor: high
Title: Packages available in excluded repositories will not be installed
Summary: 4 packages will be skipped because they are available only in target system repositories that are intentionally excluded from the list of repositories used during the upgrade. See the report message titled "Excluded target system repositories" for details.
The list of these packages:
- libnsl2-devel (repoid: ol8_codeready_builder)
- python3-pyxattr (repoid: ol8_codeready_builder)
- rpcgen (repoid: ol8_codeready_builder)
- rpcsvc-proto-devel (repoid: ol8_codeready_builder)
Key: 2437e204808f987477c0e9be8e4c95b3a87a9f3e
----------------------------------------
Risk Factor: high
Title: Packages not signed by Oracle found on the system
Summary: The following packages have not been signed by Oracle and may be removed during the upgrade process in case Oracle-signed packages to be removed during the upgrade depend on them:
- collectd
- epel-release
- libzstd
Key: f5a5d58476a97bf0a8904d00df5d1321189849ad
----------------------------------------
Risk Factor: high
Title: Detected customized configuration for dynamic linker.
Summary: Custom configurations to the dynamic linker could potentially impact the upgrade in a negative way. The custom configuration includes modifications to /etc/ld.so.conf, custom or modified drop in config files in the /etc/ld.so.conf.d directory and additional entries in the LD_LIBRARY_PATH or LD_PRELOAD variables. These modifications configure the dynamic linker to use different libraries that might not be provided by Oracle products or might not be present during the whole upgrade process. The following custom configurations were detected by leapp:
- The following drop in config files were marked as custom:
    - /etc/ld.so.conf.d/mariadb-x86_64.conf
Remediation: [hint] Remove or revert the custom dynamic linker configurations and apply the changes using the ldconfig command. In case of possible active software collections we suggest disabling them persistently.
Key: cc9bd972af70b7a27f66a37b11a00dcfcb73b1bc
----------------------------------------
Risk Factor: high
Title: Difference in Python versions and support in OL 8
Summary: In OL 8, there is no 'python' command. Python 3 (backward incompatible) is the primary Python version and Python 2 is available with limited support and limited set of packages. If you no longer require Python 2 packages following the upgrade, please remove them. Read more here: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Related links:
    - Difference in Python versions and support in OL 8: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Remediation: [hint] Please run "alternatives --set python /usr/bin/python3" after upgrade
Key: 2f3a43f4f448995eec953217d54f388ed94838b2
...
...
...
</pre>
</br>



<h3>Resolve issues</h3>



<p class="wp-block-paragraph">I resolved the issue that needs to be resolved before the upgrade: 1 error and 2 high severity. In this chapter I describe how I resolved them.</p>



<h4>Solve issue #1 : Unable to install OL 8 userspace packages. &#8211; high (error)</h4>



<p class="wp-block-paragraph">The problem here is that leapp can not download the OL 8 packages because the proxy is not part of the dnf configuration. Let&#8217;s add it.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,5,7]">
[root@SRV ~]# grep -i proxy /etc/yum.conf
proxy=http://172.X.X.X:3128

[root@SRV ~]# grep -i proxy /etc/dnf/dnf.conf
[root@SRV ~]# vi /etc/dnf/dnf.conf

[root@SRV ~]# grep -i proxy /etc/dnf/dnf.conf
proxy=http://172.X.X.X:3128
[root@SRV ~]#
</pre>
</br>



<h4>Solve issue #2 &#8211; Detected customized configuration for dynamic linker. &#8211; (high)</h4>



<p class="wp-block-paragraph">Looking to the next command, it seems the MariaDB library installation is broken. Not sure what happened during a previous yum installation.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,11,12,15]">
[root@SRV ~]# ls -ltrh /etc/ld.so.conf.d/mariadb-x86_64.conf
-rw-r--r--. 1 root root 17 Oct  1  2020 /etc/ld.so.conf.d/mariadb-x86_64.conf

[root@SRV ~]# cat /etc/ld.so.conf.d/mariadb-x86_64.conf
/usr/lib64/mysql

[root@SRV ~]# rpm -qa | grep -i mariadb
mariadb-libs-5.5.65-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64

[root@SRV ~]# rpm -qa | grep -i mysql
[root@SRV ~]# ldconfig -p | grep -i maria
[root@SRV ~]#

[root@SRV ~]# rpm -qf /etc/ld.so.conf.d/mariadb-x86_64.conf
mariadb-libs-5.5.65-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Moreover there is 2 versions of the same mariadb package installed simultaneously, which should never happened.</p>



<p class="wp-block-paragraph">I decided to check if there were other duplicated packages:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# package-cleanup --dupes
libcroco-0.6.12-6.el7_9.x86_64
libcroco-0.6.12-4.el7.x86_64
lz4-1.8.3-1.el7.x86_64
lz4-1.7.5-3.el7.x86_64
iprutils-2.4.17.1-3.el7.x86_64
iprutils-2.4.17.1-3.el7_7.x86_64
numactl-libs-2.0.12-5.el7.x86_64
numactl-libs-2.0.12-5.0.3.el7.x86_64
file-libs-5.11-36.el7.x86_64
file-libs-5.11-37.el7.x86_64
sed-4.2.2-6.el7.x86_64
sed-4.2.2-7.el7.x86_64
lshw-B.02.18-17.el7.x86_64
lshw-B.02.18-14.el7.x86_64
file-5.11-36.el7.x86_64
file-5.11-37.el7.x86_64
kmod-20-28.0.1.el7.x86_64
kmod-20-28.0.3.el7.x86_64
coreutils-8.22-24.0.1.el7.x86_64
coreutils-8.22-24.0.1.el7_9.2.x86_64
dbus-libs-1.10.24-13.0.1.el7_6.x86_64
dbus-libs-1.10.24-15.0.1.el7.x86_64
elfutils-libelf-0.176-5.el7.x86_64
elfutils-libelf-0.176-4.el7.x86_64
freetype-2.8-14.el7.x86_64
freetype-2.8-14.el7_9.1.x86_64
plymouth-core-libs-0.8.9-0.34.20140113.0.1.el7.x86_64
plymouth-core-libs-0.8.9-0.33.20140113.0.1.el7.x86_64
cpio-2.11-27.el7.x86_64
cpio-2.11-28.el7.x86_64
kmod-libs-20-28.0.3.el7.x86_64
kmod-libs-20-28.0.1.el7.x86_64
libpng-1.5.13-8.el7.x86_64
libpng-1.5.13-7.el7_2.x86_64
libteam-1.29-1.el7.x86_64
libteam-1.29-3.el7.x86_64
elfutils-libs-0.176-4.el7.x86_64
elfutils-libs-0.176-5.el7.x86_64
dbus-1.10.24-13.0.1.el7_6.x86_64
dbus-1.10.24-15.0.1.el7.x86_64
mariadb-libs-5.5.65-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
elfutils-default-yama-scope-0.176-5.el7.noarch
elfutils-default-yama-scope-0.176-4.el7.noarch
teamd-1.29-3.el7.x86_64
teamd-1.29-1.el7.x86_64
device-mapper-persistent-data-0.8.5-2.el7.x86_64
device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">There were many!</p>



<p class="wp-block-paragraph">For each of them I checked, which package is really the oldest:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -q --last libcroco
libcroco-0.6.12-6.el7_9.x86_64                Mon 16 Nov 2020 02:37:57 PM CET
libcroco-0.6.12-4.el7.x86_64                  Wed 28 Oct 2020 10:35:18 AM CET
[root@SRV ~]# 
</pre>
</br>



<p class="wp-block-paragraph">And removed the oldest one:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,21]">
[root@SRV ~]# yum remove libcroco-0.6.12-4.el7.x86_64
Loaded plugins: ulninfo
Resolving Dependencies
--&gt; Running DB8action check
---&gt; Package libcroco.x86_64 0:0.6.12-4.el7 will be erased
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================================
 Package                                           Arch                                            Version                                                  Repository                                              Size
=========================================================================================================================================================================================================================
Removing:
 libcroco                                          x86_64                                          0.6.12-4.el7                                             @anaconda/7.8                                          313 k

DB8action Summary
=========================================================================================================================================================================================================================
Remove  1 Package

Installed size: 313 k
Is this ok [y/N]: y
Downloading packages:
Running DB8action check
Running DB8action test
DB8action test succeeded
Running DB8action
  Erasing    : libcroco-0.6.12-4.el7.x86_64                                                                                                                                                                          1/1
  Verifying  : libcroco-0.6.12-4.el7.x86_64                                                                                                                                                                          1/1

Removed:
  libcroco.x86_64 0:0.6.12-4.el7

Complete!
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And I did this for all duplicate packages, removing the oldest one.</p>



<p class="wp-block-paragraph">To finally have a clean system:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# package-cleanup --dupes
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Knowing maria package was not used, I removed mariadb libs one.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[root@SRV ~]# rpm -qf /etc/ld.so.conf.d/mariadb-x86_64.conf
mariadb-libs-5.5.68-1.el7.x86_64

[root@SRV ~]# yum remove mariadb-libs
Loaded plugins: ulninfo
Resolving Dependencies
--&gt; Running DB8action check
---&gt; Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be erased
--&gt; Processing Dependency: libmysqlclient.so.18()(64bit) for package: 2:postfix-2.10.1-9.el7.x86_64
--&gt; Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: 2:postfix-2.10.1-9.el7.x86_64
--&gt; Running DB8action check
---&gt; Package postfix.x86_64 2:2.10.1-9.el7 will be erased
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================================
 Package                                              Arch                                           Version                                                 Repository                                             Size
=========================================================================================================================================================================================================================
Removing:
 mariadb-libs                                         x86_64                                         1:5.5.68-1.el7                                          installed                                             4.4 M
Removing for dependencies:
 postfix                                              x86_64                                         2:2.10.1-9.el7                                          @anaconda/7.8                                          12 M

DB8action Summary
=========================================================================================================================================================================================================================
Remove  1 Package (+1 Dependent package)

Installed size: 17 M
Is this ok [y/N]: N
Exiting on user command
Your DB8action was saved, rerun it with:
 yum load-DB8action /tmp/yum_save_tx.2026-06-17.17-17.bwc_7l.yumtx
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">I checked system cache libraries:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@SRV ~]# ldconfig -p | grep -i maria
[root@SRV ~]# ldconfig -p | grep -i mysql
        libmysqlclient.so.18 (libc6,x86-64) =&gt; /usr/lib64/mysql/libmysqlclient.so.18
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And knowing there were none for mariadb package I decided to move the mariadb configuration file that tells ldconfig where MariaDB&#8217;s shared libraries are located. In any case, customer was not using mariadb and mysql.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,5,8,12]">
[root@SRV ~]# mkdir /root/leap_issue

[root@SRV ~]# mv /etc/ld.so.conf.d/mariadb-x86_64.conf /root/leap_issue/

[root@SRV ~]# ls -ltrh /etc/ld.so.conf.d/mariadb-x86_64.conf
ls: cannot access /etc/ld.so.conf.d/mariadb-x86_64.conf: No such file or directory

[root@SRV ~]# ls -ltrh /root/leap_issue/
total 4.0K
-rw-r--r--. 1 root root 17 Oct  1  2020 mariadb-x86_64.conf

[root@SRV ~]# ldconfig
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph"></p>



<h4>Remove old kernel</h4>



<p class="wp-block-paragraph">I also made some free space in the /boot file system removing old kernel.</p>



<p class="wp-block-paragraph">I check boot file system occupency:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       482M  318M  165M  66% /boot
</pre>
</br>



<p class="wp-block-paragraph">I checked the kernel that I&#8217;m currently running:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# uname -r
5.4.17-2136.338.4.2.el7uek.x86_64
</pre>
</br>



<p class="wp-block-paragraph">I checked the installed kernel:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep -i kernel
kernel-tools-3.10.0-1160.119.1.0.5.el7.x86_64
kernel-tools-libs-3.10.0-1160.119.1.0.5.el7.x86_64
kernel-uek-5.4.17-2036.102.0.2.el7uek.x86_64
kernel-3.10.0-1160.6.1.el7.x86_64
kernel-3.10.0-1160.119.1.0.5.el7.x86_64
kernel-uek-5.4.17-2136.338.4.2.el7uek.x86_64
kernel-uek-5.4.17-2036.100.6.1.el7uek.x86_64
kernel-3.10.0-1160.11.1.el7.x86_64
kernel-headers-3.10.0-1160.119.1.0.5.el7.x86_64
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And removed the old one:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@SRV ~]# rpm -e kernel-uek-5.4.17-2036.102.0.2.el7uek.x86_64
[root@SRV ~]# rpm -e kernel-uek-5.4.17-2036.100.6.1.el7uek.x86_64
</pre>
</br>



<p class="wp-block-paragraph">And I could then free some space in the file system:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       482M  218M  264M  46% /boot
</pre>
</br>



<h3>Run a preupgrade report again</h3>



<p class="wp-block-paragraph">I ran a preupgrade report again:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# leapp preupgrade --oraclelinux
==&gt; Processing phase `configuration_phase`
====&gt; * ipu_workflow_config
        IPU workflow config actor
==&gt; Processing phase `FactsCollection`
====&gt; * scan_systemd_source
        Provides info about systemd on the source system
====&gt; * scan_source_files
        Scan files (explicitly specified) of the source system.
====&gt; * repository_mapping
...
...
...
Latest Unbreakable Enterprise Kernel Release 6   10 MB/s | 148 MB     00:14
Oracle Linux 8 Application Stream (x86_64)       11 MB/s |  82 MB     00:07
Oracle Linux 8 BaseOS Latest (x86_64)            11 MB/s | 145 MB     00:13
Last metadata expiration check: 0:00:23 ago on Thu Jun 18 07:55:00 2026.
Dependencies resolved.
================================================================================
 Package              Arch   Version                    Repository         Size
================================================================================
Installing:
 dnf                  noarch 4.7.0-21.0.1.el8_10        ol8_baseos_latest 542 k
 dnf-plugins-core     noarch 4.0.21-25.0.1.el8          ol8_baseos_latest  76 k
 util-linux           x86_64 2.32.1-48.0.2.el8_10       ol8_baseos_latest 2.5 M
Installing dependencies:
 libcom_err           x86_64 1.46.2-2.el8               ol8_UEKR6          51 k

...
...
...

 irqbalance                                x86_64  2:1.9.2-1.el8                                  ol8_baseos_latest   72 k
 libcgroup                                 x86_64  0.41-19.el8                                    ol8_baseos_latest   70 k
 libcroco                                  x86_64  0.6.12-4.el8_2.1                               ol8_baseos_latest  113 k
 libzstd                                   x86_64  1.4.4-1.0.1.el8                                ol8_baseos_latest  266 k
 oracle-database-preinstall-19c            x86_64  1.0-2.el8                                      ol8_appstream       31 k
 sg3_utils                                 x86_64  1.44-6.el8                                     ol8_baseos_latest  918 k
 sg3_utils-libs                            x86_64  1.44-6.el8                                     ol8_baseos_latest   99 k
Enabling module streams:
 gimp                                              2.8
 mariadb                                           10.3
 python27                                          2.7
 python36                                          3.6
 satellite-5-client                                1.0

DB8action Summary
==========================================================================================================================
Install    231 Packages
Upgrade    373 Packages
Remove      72 Packages
Downgrade    8 Packages

Total size: 1.3 G
Total download size: 1.1 G
Downloading Packages:
Check completed.
==&gt; Processing phase `Reports`
====&gt; * verify_check_results
        Check all dialogs and notify that user needs to make some choices.
====&gt; * verify_check_results
        Check all generated results messages and notify user about them.

Debug output written to /var/log/leapp/leapp-preupgrade.log

============================================================
                      REPORT OVERVIEW
============================================================

Upgrade has been inhibited due to the following problems:
    1. Missing required answers in the answer file

HIGH and MEDIUM severity reports:
    1. Packages available in excluded repositories will not be installed
    2. Packages not signed by Oracle found on the system
    3. Difference in Python versions and support in OL 8
    4. Default Boot Kernel

Reports summary:
    Errors:                      0
    Inhibitors:                  1
    HIGH severity reports:       3
    MEDIUM severity reports:     1
    LOW severity reports:        5
    INFO severity reports:       3

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW
============================================================

Answerfile has been generated at /var/log/leapp/answerfile
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">I could already see that now leapp can download the OL8 packages.</p>



<p class="wp-block-paragraph">I have 1 inhibitors errors to resolve and let&#8217;s see the 3 high issues.</p>



<h3>Check leapp preupgrade new report</h3>



<p class="wp-block-paragraph">I checked the report for details on the issue:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7]">
root@SRV ~]# ls -ltrh /var/log/leapp/leapp-report.txt
-rw-r--r--. 1 root root 8.7K Jun 18 07:57 /var/log/leapp/leapp-report.txt

[root@SRV ~]# date
Thu Jun 18 07:59:45 CEST 2026

[root@SRV ~]# cat /var/log/leapp/leapp-report.txt
Risk Factor: high (inhibitor)
Title: Missing required answers in the answer file
Summary: One or more sections in answerfile are missing user choices: remove_pam_pkcs11_module_check.confirm
For more information consult https://docs.oracle.com/en/operating-systems/oracle-linux/8/leapp/leapp-UpgradingtheSystem.html#preupgrade-report.
Remediation: [hint] Please register user choices with leapp answer cli command or by manually editing the answerfile.
[command] leapp answer --section remove_pam_pkcs11_module_check.confirm=True
Key: d35f6c6b1b1fa6924ef442e3670d90fa92f0d54b
----------------------------------------
Risk Factor: high
Title: Packages available in excluded repositories will not be installed
Summary: 4 packages will be skipped because they are available only in target system repositories that are intentionally excluded from the list of repositories used during the upgrade. See the report message titled "Excluded target system repositories" for details.
The list of these packages:
- libnsl2-devel (repoid: ol8_codeready_builder)
- python3-pyxattr (repoid: ol8_codeready_builder)
- rpcgen (repoid: ol8_codeready_builder)
- rpcsvc-proto-devel (repoid: ol8_codeready_builder)
Key: 2437e204808f987477c0e9be8e4c95b3a87a9f3e
----------------------------------------
Risk Factor: high
Title: Packages not signed by Oracle found on the system
Summary: The following packages have not been signed by Oracle and may be removed during the upgrade process in case Oracle-signed packages to be removed during the upgrade depend on them:
- collectd
- epel-release
- libzstd
Key: f5a5d58476a97bf0a8904d00df5d1321189849ad
----------------------------------------
Risk Factor: high
Title: Difference in Python versions and support in OL 8
Summary: In OL 8, there is no 'python' command. Python 3 (backward incompatible) is the primary Python version and Python 2 is available with limited support and limited set of packages. If you no longer require Python 2 packages following the upgrade, please remove them. Read more here: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Related links:
    - Difference in Python versions and support in OL 8: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Remediation: [hint] Please run "alternatives --set python /usr/bin/python3" after upgrade
Key: 2f3a43f4f448995eec953217d54f388ed94838b2
</pre>
</br>



<p class="wp-block-paragraph">There is only 1 inhibitor error to resolve, the 3 others high issue will be resolved after the upgrade.</p>



<h3>Resolve the inhibitor issue</h3>



<p class="wp-block-paragraph">We just need to update the answer file by running following command:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# leapp answer --section remove_pam_pkcs11_module_check.confirm=True
</pre>
</br>



<p class="wp-block-paragraph">And I can check the answer file:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# ls -ltrh /var/log/leapp/answerfile
-rw-r--r--. 1 root root 49 Jun 18 08:02 /var/log/leapp/answerfile
[root@SRV ~]# cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
confirm = True

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



<h3>A last preupgrade leapp report</h3>



<p class="wp-block-paragraph">I decided to run the preupgrade one last time and could see that I do not have any inhibitor error any more. And the 3 high severity are known and will be addressed at the end.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# leapp preupgrade --oraclelinux
...
...
...
Reports summary:
    Errors:                      0
    Inhibitors:                  0
    HIGH severity reports:       3
    MEDIUM severity reports:     2
    LOW severity reports:        5
    INFO severity reports:       3

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW
============================================================

Answerfile has been generated at /var/log/leapp/answerfile
[root@SRV ~]#
</pre>
</br>



<h3>Check file system occupancy</h3>



<p class="wp-block-paragraph">I checked file system occupancy:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       252G     0  252G   0% /dev
tmpfs                          252G     0  252G   0% /dev/shm
tmpfs                          252G   11M  252G   1% /run
tmpfs                          252G     0  252G   0% /sys/fs/cgroup
/dev/mapper/vgroot--lv-root    7.5G  3.2G  4.3G  43% /
/dev/mapper/vgroot--lv-usr      12G  2.4G  8.9G  21% /usr
/dev/mapper/vgdata-lv--data    8.8T  5.0T  3.8T  57% /data
/dev/mapper/vgroot--lv-home    7.5G  3.9G  3.6G  53% /home
/dev/mapper/vgroot--lv-tmp     4.7G   33M  4.7G   1% /tmp
/dev/mapper/vgroot--lv-var     9.4G  3.4G  6.0G  36% /var
/dev/sdb2                      482M  218M  264M  46% /boot
/dev/mapper/vgrdbms-lv--rdbms   11T  1.9T  8.7T  18% /rdbms
/dev/mapper/vgroot--lv-opt      15G  623M   15G   5% /opt
/dev/sdb1                      952M  7.4M  944M   1% /boot/efi
tmpfs                           51G     0   51G   0% /run/user/0
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Which is ok.</p>



<h3>Leapp answer file</h3>



<p class="wp-block-paragraph">I checked leapp answer file:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title:              None
# Reason:             Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description:        PAM module pam_pkcs11 is no longer available in OL-8 since it was replaced by SSSD.
# Reason:             Leaving this module in PAM configuration may lock out the system.
# Type:               bool
# Default:            None
# Available choices: True/False
confirm = True

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



<p class="wp-block-paragraph">All good.</p>



<h3>Run the upgrade</h3>



<p class="wp-block-paragraph">Now I&#8217;m ready to run the upgrade.</p>



<p class="wp-block-paragraph">It is important to have a console opened. I decided to run the upgrade in the console, but I could do it in a ssh session. The console is a must so we can see what is happening once we will reboot after the first part of the upgrade is done.</p>



<p class="wp-block-paragraph">Starting leapp upgrade with the command <code>leapp upgrade --oraclelinux</code>.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15eb675&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15eb675" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="928" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-2-1024x928.jpg" alt="" class="wp-image-46106" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-2-1024x928.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-2-300x272.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-2-768x696.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-2.jpg 1031w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">End of the first upgrade execution:</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ec13b&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ec13b" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="907" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-11-1024x907.jpg" alt="" class="wp-image-46109" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-11-1024x907.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-11-300x266.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-11-768x680.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-11.jpg 1061w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">During this execution, I can also tail the leapp upgrade log file:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[root@SRV ~]# ls -ltrh /var/log/leapp/leapp-upgrade.log
-rw-r--r--. 1 root root 224K Jun 18 08:52 /var/log/leapp/leapp-upgrade.log

[root@SRV ~]# tail -f /var/log/leapp/leapp-upgrade.log
2026-06-18 08:52:27.495 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: python|2.7.5|94.0.1.el7_9|0|(none)|x86_64|RSA/SHA256, Mon 13 Nov 2023 10:38:45 AM CET, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.496 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: kmod|20|28.0.3.el7|0|(none)|x86_64|RSA/SHA256, Mon 20 Jul 2020 09:02:02 AM CEST, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.497 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: bind-libs|9.11.4|26.0.1.P2.el7_9.16|32|(none)|x86_64|RSA/SHA256, Mon 14 Oct 2024 09:41:52 PM CEST, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.497 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: rhnlib|2.5.65|8.0.5.el7|0|(none)|noarch|RSA/SHA256, Thu 06 Apr 2023 06:15:51 PM CEST, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.498 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: libcurl|7.29.0|59.0.3.el7_9.2|0|(none)|x86_64|RSA/SHA256, Tue 12 Dec 2023 07:37:52 PM CET, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.499 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: openldap|2.4.44|25.el7_9|0|(none)|x86_64|RSA/SHA256, Tue 22 Feb 2022 06:12:32 PM CET, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.500 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: cronie-anacron|1.4.11|25.el7_9|0|(none)|x86_64|RSA/SHA256, Wed 26 Apr 2023 05:57:25 AM CEST, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.500 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: ebtables|2.0.10|16.el7|0|(none)|x86_64|RSA/SHA256, Sat 27 Jan 2018 02:33:10 PM CET, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.501 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: device-mapper-libs|1.02.170|6.0.5.el7_9.5|7|(none)|x86_64|RSA/SHA256, Fri 21 May 2021 01:16:51 PM CEST, Key ID 72f97b74ec551f03
2026-06-18 08:52:27.504 DEBUG    PID: 32639 leapp.workflow.FactsCollection.rpm_scanner: External command has finished: ['/bin/rpm', '-qa', '--queryformat', '%{NAME}|%{VERSION}|%{RELEASE}|%|EPOCH?{%{EPOCH}}:{0}||%|PACKAGER?{%{PACKAGER}}:{(none)}||%|ARCH?{%{ARCH}}:{}||%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{(none)}|}|\\n']

...
...
...

2026-06-18 09:06:05.56  DEBUG    PID: 24169 leapp.workflow.InterimPreparation.add_upgrade_boot_entry: External command has finished: ['/usr/sbin/grubby', '--remove-kernel', '/boot/vmlinuz-upgrade.x86_64']
2026-06-18 09:06:05.57  DEBUG    PID: 24169 leapp.workflow.InterimPreparation.add_upgrade_boot_entry: External command has started: ['/usr/sbin/grubby', '--add-kernel', '/boot/vmlinuz-upgrade.x86_64', '--initrd', '/boot/initramfs-upgrade.x86_64.img', '--title', 'OL-Upgrade-Initramfs', '--copy-default', '--make-default', '--args', ' enforcing=0 rd.plymouth=0 plymouth.enable=0']
2026-06-18 09:06:05.102 DEBUG    PID: 24169 leapp.workflow.InterimPreparation.add_upgrade_boot_entry: External command has finished: ['/usr/sbin/grubby', '--add-kernel', '/boot/vmlinuz-upgrade.x86_64', '--initrd', '/boot/initramfs-upgrade.x86_64.img', '--title', 'OL-Upgrade-Initramfs', '--copy-default', '--make-default', '--args', ' enforcing=0 rd.plymouth=0 plymouth.enable=0']
2026-06-18 09:06:05.108 INFO     PID: 31824 leapp.workflow.InterimPreparation: Starting stage After of phase InterimPreparation
2026-06-18 09:06:05.116 INFO     PID: 31824 leapp: Answerfile will be created at /var/log/leapp/answerfile
</pre>
</br>



<h3>Check leapp report and answer file</h3>



<h4>Check leapp upgrade report</h4>



<p class="wp-block-paragraph">As for the preupgrade, I will check the leapp report file and address all issue. There is 3 high severity issue, the same we had in the preupgrade report, and that we will address after the upgrade.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7]">
[root@SRV ~]# ls -ltrh /var/log/leapp/leapp-report.txt
-rw-r--r--. 1 root root 8.7K Jun 18 09:06 /var/log/leapp/leapp-report.txt

[root@SRV ~]# date
Thu Jun 18 09:07:27 CEST 2026

[root@SRV ~]# cat /var/log/leapp/leapp-report.txt
Risk Factor: high
Title: Packages available in excluded repositories will not be installed
Summary: 4 packages will be skipped because they are available only in target system repositories that are intentionally excluded from the list of repositories used during the upgrade. See the report message titled "Excluded target system repositories" for details.
The list of these packages:
- libnsl2-devel (repoid: ol8_codeready_builder)
- python3-pyxattr (repoid: ol8_codeready_builder)
- rpcgen (repoid: ol8_codeready_builder)
- rpcsvc-proto-devel (repoid: ol8_codeready_builder)
Key: 2437e204808f987477c0e9be8e4c95b3a87a9f3e
----------------------------------------
Risk Factor: high
Title: Packages not signed by Oracle found on the system
Summary: The following packages have not been signed by Oracle and may be removed during the upgrade process in case Oracle-signed packages to be removed during the upgrade depend on them:
- collectd
- epel-release
- libzstd
Key: f5a5d58476a97bf0a8904d00df5d1321189849ad
----------------------------------------
Risk Factor: high
Title: Difference in Python versions and support in OL 8
Summary: In OL 8, there is no 'python' command. Python 3 (backward incompatible) is the primary Python version and Python 2 is available with limited support and limited set of packages. If you no longer require Python 2 packages following the upgrade, please remove them. Read more here: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Related links:
    - Difference in Python versions and support in OL 8: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Remediation: [hint] Please run "alternatives --set python /usr/bin/python3" after upgrade
Key: 2f3a43f4f448995eec953217d54f388ed94838b2
</pre>
</br>



<h4>Check the answer file</h4>



<p class="wp-block-paragraph">Ensure the answer file is ok.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# ls -ltrh /var/log/leapp/answerfile
-rw-r--r--. 1 root root 589 Jun 18 09:06 /var/log/leapp/answerfile
[root@SRV ~]# cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title:              None
# Reason:             Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description:        PAM module pam_pkcs11 is no longer available in OL-8 since it was replaced by SSSD.
# Reason:             Leaving this module in PAM configuration may lock out the system.
# Type:               bool
# Default:            None
# Available choices: True/False
confirm = True
</pre>
</br>




<h3>Reboot</h3>



<p class="wp-block-paragraph">Now that all is ok and that we are ready to upgrade, we will reboot and the second part of the leapp upgrade will upgrade the OL7 to OL8.</p>



<p class="wp-block-paragraph">Check file system occupancy to ensure there is no full partition:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       252G     0  252G   0% /dev
tmpfs                          252G     0  252G   0% /dev/shm
tmpfs                          252G   11M  252G   1% /run
tmpfs                          252G     0  252G   0% /sys/fs/cgroup
/dev/mapper/vgroot--lv-root    7.5G  3.2G  4.3G  43% /
/dev/mapper/vgroot--lv-usr      12G  2.4G  8.9G  21% /usr
/dev/mapper/vgdata-lv--data    8.8T  5.0T  3.8T  57% /data
/dev/mapper/vgroot--lv-home    7.5G  3.9G  3.6G  53% /home
/dev/mapper/vgroot--lv-tmp     4.7G   33M  4.7G   1% /tmp
/dev/mapper/vgroot--lv-var     9.4G  6.9G  2.5G  74% /var
/dev/sdb2                      482M  315M  167M  66% /boot
/dev/mapper/vgrdbms-lv--rdbms   11T  1.9T  8.7T  18% /rdbms
/dev/mapper/vgroot--lv-opt      15G  625M   15G   5% /opt
/dev/sdb1                      952M  7.4M  944M   1% /boot/efi
tmpfs                           51G     0   51G   0% /run/user/0
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And reboot!</p>



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



<h3>Monitor the console</h3>



<p class="wp-block-paragraph">Now the console is very important and we can monitor how the upgrade is on-going.</p>



<p class="wp-block-paragraph">Following pictures shows some of the screen.</p>



<p class="wp-block-paragraph">The server is rebooting.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ecc13&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ecc13" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="935" height="284" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-12.jpg" alt="" class="wp-image-46111" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-12.jpg 935w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-12-300x91.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-12-768x233.jpg 768w" sizes="auto, (max-width: 935px) 100vw, 935px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">Reboot on the Upgrade initramfs.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ed1fa&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ed1fa" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="758" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-14-1024x758.jpg" alt="" class="wp-image-46112" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-14-1024x758.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-14-300x222.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-14-768x569.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-14.jpg 1152w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15edc59&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15edc59" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="835" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-15-1024x835.jpg" alt="" class="wp-image-46113" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-15-1024x835.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-15-300x244.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-15-768x626.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-15.jpg 1227w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">rpm package are upgraded from ol7 to ol8.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ee2cb&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ee2cb" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="899" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-16-1024x899.jpg" alt="" class="wp-image-46114" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-16-1024x899.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-16-300x263.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-16-768x674.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-16.jpg 1138w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ee947&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ee947" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="867" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-17-1024x867.jpg" alt="" class="wp-image-46115" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-17-1024x867.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-17-300x254.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-17-768x650.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-17.jpg 1162w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">We have one more high severity issue to check and resolve once the upgrade is done.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15eefa1&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15eefa1" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="886" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-19-1024x886.jpg" alt="" class="wp-image-46116" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-19-1024x886.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-19-300x259.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-19-768x664.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-19.jpg 1147w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">The server is automatically rebooted several times.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15ef710&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15ef710" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="786" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-23-1024x786.jpg" alt="" class="wp-image-46117" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-23-1024x786.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-23-300x230.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-23-768x589.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-23.jpg 1161w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">And we are done.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a892a15efdc9&quot;}" data-wp-interactive="core/image" data-wp-key="6a892a15efdc9" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="893" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-29-1024x893.jpg" alt="" class="wp-image-46118" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-29-1024x893.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-29-300x262.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-29-768x670.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/07/DBS1-leapp_upgrade-29.jpg 1171w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<h3>Check leapp report files</h3>



<p class="wp-block-paragraph">Now we have a new leapp report file, and we will check it for issue to be resolved.</p>



<p class="wp-block-paragraph">Check file date.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,10]">
[root@SRV ~]# date
Thu Jun 18 09:46:13 CEST 2026

[root@SRV ~]# uptime
 09:46:14 up 3 min,  1 user,  load average: 0.27, 0.32, 0.14

[root@SRV ~]# ls -ltrh /var/log/leapp/leapp-report.txt
-rw-r--r--. 1 root root 11K Jun 18 09:43 /var/log/leapp/leapp-report.txt

[root@SRV ~]# ls -ltrh /var/log/leapp/answerfile
-rw-r--r--. 1 root root 0 Jun 18 09:43 /var/log/leapp/answerfile
</pre>
</br>



<p class="wp-block-paragraph">Check answer file content, it should be empty.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/log/leapp/answerfile
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Check leapp report issue. We will resolve them later on.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# cat /var/log/leapp/leapp-report.txt
Risk Factor: high
Title: Packages available in excluded repositories will not be installed
Summary: 4 packages will be skipped because they are available only in target system repositories that are intentionally excluded from the list of repositories used during the upgrade. See the report message titled "Excluded target system repositories" for details.
The list of these packages:
- libnsl2-devel (repoid: ol8_codeready_builder)
- python3-pyxattr (repoid: ol8_codeready_builder)
- rpcgen (repoid: ol8_codeready_builder)
- rpcsvc-proto-devel (repoid: ol8_codeready_builder)
Key: 2437e204808f987477c0e9be8e4c95b3a87a9f3e
----------------------------------------
Risk Factor: high
Title: Packages not signed by Oracle found on the system
Summary: The following packages have not been signed by Oracle and may be removed during the upgrade process in case Oracle-signed packages to be removed during the upgrade depend on them:
- collectd
- epel-release
- libzstd
Key: f5a5d58476a97bf0a8904d00df5d1321189849ad
----------------------------------------
Risk Factor: high
Title: Difference in Python versions and support in OL 8
Summary: In OL 8, there is no 'python' command. Python 3 (backward incompatible) is the primary Python version and Python 2 is available with limited support and limited set of packages. If you no longer require Python 2 packages following the upgrade, please remove them. Read more here: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Related links:
    - Difference in Python versions and support in OL 8: https://docs.oracle.com/en/operating-systems/oracle-linux/8/python/
Remediation: [hint] Please run "alternatives --set python /usr/bin/python3" after upgrade
Key: 2f3a43f4f448995eec953217d54f388ed94838b2
----------------------------------------
Risk Factor: high
Title: Some OL 7 packages have not been upgraded
Summary: Following OL 7 packages have not been upgraded:
kernel-3.10.0-1160.119.1.0.5.el7
kernel-uek-5.4.17-2136.338.4.2.el7uek
kernel-3.10.0-1160.11.1.el7
leapp-upgrade-el7toel8-0.20.0-2.0.11.el7_9
Please remove these packages to keep your system in supported state.

Key: 1e4e21ca7b2b7d9c59556f4b9813ef0d801af32c
...
...
...
</pre>
</br>



<h3>Check new sysetm release and kernel</h3>



<p class="wp-block-paragraph">I checked release and kernel.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7]">
[root@SRV ~]# cat /etc/oracle-release
Oracle Linux Server release 8.10

[root@SRV ~]# uname -r
5.4.17-2136.356.4.2.el8uek.x86_64

[root@SRV ~]# grubby --default-kernel
/boot/vmlinuz-5.4.17-2136.356.4.2.el8uek.x86_64
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Which is correct, as I can see from following link that the last el8 release is 8.10:</p>



<p class="wp-block-paragraph"><a href="https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/index.html">https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/index.html</a></p>



<h3>Check file system occupancy</h3>



<p class="wp-block-paragraph">I checked the file system occupancy and could confirm all is ok.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       252G     0  252G   0% /dev
tmpfs                          252G     0  252G   0% /dev/shm
tmpfs                          252G   11M  252G   1% /run
tmpfs                          252G     0  252G   0% /sys/fs/cgroup
/dev/mapper/vgroot--lv-root    7.5G  3.2G  4.3G  43% /
/dev/mapper/vgroot--lv-usr      12G  3.6G  7.7G  32% /usr
/dev/mapper/vgdata-lv--data    8.8T  5.0T  3.8T  57% /data
/dev/mapper/vgroot--lv-home    7.5G  3.9G  3.6G  53% /home
/dev/mapper/vgrdbms-lv--rdbms   11T  1.9T  8.7T  18% /rdbms
/dev/mapper/vgroot--lv-tmp     4.7G   33M  4.7G   1% /tmp
/dev/sdb2                      482M  330M  153M  69% /boot
/dev/sdb1                      952M  6.1M  946M   1% /boot/efi
/dev/mapper/vgroot--lv-opt      15G  627M   15G   5% /opt
/dev/mapper/vgroot--lv-var     9.4G  2.2G  7.2G  23% /var
tmpfs                           51G     0   51G   0% /run/user/0
[root@SRV ~]#
</pre>
</br>



<h3>Postupgrade tasks</h3>



<p class="wp-block-paragraph">Now I will perform the standard and known postupgrade tasks to be run after an Oracle linux upgrade.</p>



<p class="wp-block-paragraph">Doing this will also resolve all my high severity issue from the leapp report.</p>



<h4>alternative for python</h4>



<p class="wp-block-paragraph">The command provided by the process did not work:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# alternatives --set python /usr/bin/python3
failed to rename link /etc/alternatives/tmpdir.X8lXqU/tmp_sl -&gt; /usr/share/man/man1/python.1.gz: Invalid cross-device link
</pre>
</br>



<p class="wp-block-paragraph">If I check, I think I&#8217;m good as it is:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,15,16]">
[root@SRV ~]# alternatives --display python
python - status is manual.
 link currently points to /usr/bin/python3
/usr/libexec/no-python - priority 404
 slave unversioned-python: (null)
 slave unversioned-python-man: /usr/share/man/man1/unversioned-python.1.gz
/usr/bin/python3 - priority 300
 slave unversioned-python: /usr/bin/python3
 slave unversioned-python-man: /usr/share/man/man1/python3.1.gz
/usr/bin/python2 - priority 200
 slave unversioned-python: /usr/bin/python2
 slave unversioned-python-man: /usr/share/man/man1/python2.1.gz
Current `best' version is /usr/libexec/no-python.

[root@SRV ~]# alternatives --display unversioned-python
[root@SRV ~]# readlink -f /usr/bin/python
/usr/libexec/platform-python3.6
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">Moreover python is working:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7]">
[root@SRV ~]# which python
/usr/bin/python

[root@SRV ~]# ls -ltrh /usr/bin/python
lrwxrwxrwx. 1 root root 36 Jun 18 09:53 /usr/bin/python -&gt; /etc/alternatives/unversioned-python

[root@SRV ~]# python --version
Python 3.6.8
[root@SRV ~]#
</pre>
</br>



<h4>firewalld daemon</h4>



<p class="wp-block-paragraph">firewalld daemon was inactive before the upgrade, so I kept it as inactive.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@SRV ~]#
</pre>
</br>




<h4>SELinux</h4>



<p class="wp-block-paragraph">I changed SE Linux from permissive to enforcing.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,6]">
[root@SRV ~]# getenforce
Permissive

[root@SRV ~]# setenforce enforcing

[root@SRV ~]# getenforce
Enforcing
</pre>
</br>



<p class="wp-block-paragraph">Permissive mode: SELinux logs policy violations but does not block them.<br>Enforcing mode: SELinux logs and blocks actions that violate the active policy.</p>



<p class="wp-block-paragraph">I made the changes permanent:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5,7,11]">
[root@SRV ~]# grep -i ^SELINUX /etc/selinux/config
SELINUX=permissive
SELINUXTYPE=targeted

[root@SRV ~]# vi /etc/selinux/config

[root@SRV ~]# grep -i ^SELINUX /etc/selinux/config
SELINUX=Enforcing
SELINUXTYPE=targeted

[root@SRV ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=Enforcing
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


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



<h4>Update dnf.conf</h4>



<p class="wp-block-paragraph">Edit /etc/dnf/dnf.conf and comment out exclude= that refer to leapp packages</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,6,10]">
[root@SRV ~]# grep -i leapp /etc/dnf/dnf.conf
exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp

[root@SRV ~]# vi /etc/dnf/dnf.conf

[root@SRV ~]# grep -i leapp /etc/dnf/dnf.conf
#exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp
[root@SRV ~]#

[root@SRV ~]# cat /etc/dnf/dnf.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
proxy=http://172.X.X.X:3128
#exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp
[root@SRV ~]#
</pre>
</br>



<h4>set PermitRootLogin no and restart sshd service</h4>



<p class="wp-block-paragraph">We will add security here and not permitting to use root to login directly through ssh.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5,7,11]">
[root@SRV ~]# grep -i PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

[root@SRV ~]# vi /etc/ssh/sshd_config

[root@SRV ~]# grep -i PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no
# the setting of "PermitRootLogin without-password".

[root@SRV ~]# systemctl restart sshd
[root@SRV ~]#
</pre>
</br>




<h4>Remove old linux repo and package</h4>



<p class="wp-block-paragraph">We need to remove any el7 old package and repo that is still existing. We also need to remove leapp package.</p>



<p class="wp-block-paragraph">I checked existing old ol7 one:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep el7
kernel-3.10.0-1160.119.1.0.5.el7.x86_64
leapp-0.17.0-1.0.2.el7_9.noarch
kernel-uek-5.4.17-2136.338.4.2.el7uek.x86_64
kernel-3.10.0-1160.11.1.el7.x86_64
python2-leapp-0.17.0-1.0.2.el7_9.noarch
leapp-upgrade-el7toel8-0.20.0-2.0.11.el7_9.noarch</pre>
</br>




<p class="wp-block-paragraph">I checked existing leapp package:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep leapp
leapp-0.17.0-1.0.2.el7_9.noarch
leapp-repository-deps-el8-5.0.8-100.202401121819Z.0e51aebb.master.el8.noarch
python2-leapp-0.17.0-1.0.2.el7_9.noarch
leapp-upgrade-el7toel8-0.20.0-2.0.11.el7_9.noarch
leapp-deps-el8-5.0.8-100.202401121819Z.0e51aebb.master.el8.noarch
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">So I removed all those packages, as for example:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf remove kernel-3.10.0-1160.11.1.el7.x86_64
Dependencies resolved.
=============================================================================================================================================================================================
 Package                                  Architecture                             Version                                                   Repository                                 Size
=============================================================================================================================================================================================
Removing:
 kernel                                   x86_64                                   3.10.0-1160.11.1.el7                                      @System                                    64 M

DB8action Summary
=============================================================================================================================================================================================
Remove  1 Package

Freed space: 64 M
Is this ok [y/N]: y
Running DB8action check
DB8action check succeeded.
Running DB8action test
DB8action test succeeded.
Running DB8action
  Preparing        :                                                                                                                                                                     1/1
  Running scriptlet: kernel-3.10.0-1160.11.1.el7.x86_64                                                                                                                                  1/1
  Erasing          : kernel-3.10.0-1160.11.1.el7.x86_64                                                                                                                                  1/1
  Running scriptlet: kernel-3.10.0-1160.11.1.el7.x86_64                                                                                                                                  1/1
  Verifying        : kernel-3.10.0-1160.11.1.el7.x86_64                                                                                                                                  1/1

Removed:
  kernel-3.10.0-1160.11.1.el7.x86_64

Complete!
</pre>
</br>



<p class="wp-block-paragraph">To finally have no more el7 and leapp package:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@SRV ~]# rpm -qa | grep el7
[root@SRV ~]# rpm -qa | grep leapp
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And of course I have got el8 package:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# rpm -qa | grep el8 | wc -l
610
[root@SRV ~]#
</pre>
</br>




<h4>Check kernel</h4>



<p class="wp-block-paragraph">I confirmed all is ok with the kernel and boot file system occupancy.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,15,19]">
[root@SRV ~]# uname -r
5.4.17-2136.356.4.2.el8uek.x86_64

[root@SRV ~]# rpm -qa | grep -i kernel
kernel-modules-extra-4.18.0-553.132.1.el8_10.x86_64
kernel-core-4.18.0-553.132.1.el8_10.x86_64
kernel-tools-4.18.0-553.132.1.el8_10.x86_64
kernel-workaround-0.1-1.el8.noarch
kernel-4.18.0-553.132.1.el8_10.x86_64
kernel-headers-4.18.0-553.132.1.el8_10.x86_64
kernel-uek-5.4.17-2136.356.4.2.el8uek.x86_64
kernel-modules-4.18.0-553.132.1.el8_10.x86_64
kernel-tools-libs-4.18.0-553.132.1.el8_10.x86_64

[root@SRV ~]# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       482M  213M  270M  45% /boot

[root@SRV ~]# ls -ltrh /boot
total 188M
drwx------. 3 root root 4.0K Jan  1  1970 efi
-rw-------. 1 root root  60M Oct 28  2020 initramfs-0-rescue-939798bf09ac467188081e34260fbcfd.img
-rwxr-xr-x. 1 root root 6.5M Oct 28  2020 vmlinuz-0-rescue-939798bf09ac467188081e34260fbcfd
-rw-------. 1 root root 4.3M Jun  5 05:34 System.map-5.4.17-2136.356.4.2.el8uek.x86_64
-rw-r--r--. 1 root root 215K Jun  5 05:34 config-5.4.17-2136.356.4.2.el8uek.x86_64
-rwxr-xr-x. 1 root root  11M Jun  5 05:35 vmlinuz-5.4.17-2136.356.4.2.el8uek.x86_64
-rw-------. 1 root root 4.4M Jun 11 11:40 System.map-4.18.0-553.132.1.el8_10.x86_64
-rw-r--r--. 1 root root 198K Jun 11 11:40 config-4.18.0-553.132.1.el8_10.x86_64
-rwxr-xr-x. 1 root root  11M Jun 11 11:40 vmlinuz-4.18.0-553.132.1.el8_10.x86_64
drwxr-xr-x. 3 root root   21 Jun 18 09:33 loader
lrwxrwxrwx. 1 root root   57 Jun 18 09:35 symvers-5.4.17-2136.356.4.2.el8uek.x86_64.gz -&gt; /lib/modules/5.4.17-2136.356.4.2.el8uek.x86_64/symvers.gz
lrwxrwxrwx. 1 root root   54 Jun 18 09:35 symvers-4.18.0-553.132.1.el8_10.x86_64.gz -&gt; /lib/modules/4.18.0-553.132.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root  29M Jun 18 09:35 initramfs-4.18.0-553.132.1.el8_10.x86_64.img
drwx------. 2 root root   21 Jun 18 09:36 grub2
-rw-------. 1 root root  31M Jun 18 09:37 initramfs-5.4.17-2136.356.4.2.el8uek.x86_64.img
-rw-------. 1 root root  33M Jun 18 09:43 initramfs-5.4.17-2136.356.4.2.el8uek.x86_64kdump.img
[root@SRV ~]#
</pre>
</br>



<h3>Relink oracle binaries</h3>



<p class="wp-block-paragraph">After a linux operating system, it is mandatory to relink all rdbms. This is mandatory to relink oracle executables to new operating system libraries.</p>



<p class="wp-block-paragraph">I did following for all my dbhomes. As an example I will show you the process for rdbms193000.</p>



<p class="wp-block-paragraph">First all oracle resources need to be stoppe. I stopped databases and listeners.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [t]nslsn
oracle@SRV:~/ [rdbms193000] ps -ef | grep -i [p]mon
oracle@SRV:~/ [rdbms193000] 
</pre>
<br>




<p class="wp-block-paragraph">Relink oracle dbhome:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,6]">
oracle@SRV:~/ [rdbms193000] echo $ORACLE_HOME
/rdbms/u01/app/oracle/product/19.30.260120

oracle@SRV:~/ [rdbms193000] cd $ORACLE_HOME/bin

oracle@SRV:/rdbms/u01/app/oracle/product/19.30.260120/bin/ [rdbms193000] relink all
writing relink log to: /rdbms/u01/app/oracle/product/19.30.260120/install/relinkActions2026-06-18_10-31-37AM.log
oracle@SRV:/rdbms/u01/app/oracle/product/19.30.260120/bin/ [rdbms193000] tail /rdbms/u01/app/oracle/product/19.30.260120/install/relinkActions2026-06-18_10-31-37AM.log
rm -f /rdbms/u01/app/oracle/product/19.30.260120/bin/drdaproc

INFO:
mv /rdbms/u01/app/oracle/product/19.30.260120/rdbms/lib/drdaproc /rdbms/u01/app/oracle/product/19.30.260120/bin/drdaproc

INFO:
chmod 751 /rdbms/u01/app/oracle/product/19.30.260120/bin/drdaproc

INFO: End output from spawned process.
INFO: ----------------------------------
oracle@SRV:/rdbms/u01/app/oracle/product/19.30.260120/bin/ [rdbms193000]

</pre>
</br>



<p class="wp-block-paragraph">But relink might change ownership and permissions on some oracle files:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,10]">
oracle@SRV:~/ [rdbms193000] ls -ltrh  $ORACLE_HOME/bin/oracle
-rwsr-s--x. 1 oracle oinstall 448M Jun 18 10:32 /rdbms/u01/app/oracle/product/19.30.260120/bin/oracle

oracle@SRV:~/ [rdbms193000] ls -ltrh  $ORACLE_HOME/bin/extjob
-rwxr-xr-x. 1 oracle oinstall 3.0M Jun 18 10:31 /rdbms/u01/app/oracle/product/19.30.260120/bin/extjob

oracle@SRV:~/ [rdbms193000] ls -ltrh $ORACLE_HOME/rdbms/admin/externaljob.ora
-rw-r-----. 1 root oinstall 1.5K Dec 21  2005 /rdbms/u01/app/oracle/product/19.30.260120/rdbms/admin/externaljob.ora

oracle@SRV:~/ [rdbms193000] ls -ltrh $ORACLE_HOME/bin/jssu
-rwxr-xr-x. 1 oracle oinstall 2.3M Jun 18 10:31 /rdbms/u01/app/oracle/product/19.30.260120/bin/jssu
oracle@SRV:~/ [rdbms193000] 
</pre>
</br>



<p class="wp-block-paragraph">This is why it is mandatory, after relink, to run root.sh. See also Executing &#8220;relink all&#8221; resets permission of extjob, jssu, oradism, externaljob.ora &#8211; KB148555.</p>



<p class="wp-block-paragraph">Running root.sh goes went in failure:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[root@SRV ~]# cd /rdbms/u01/app/oracle/product/19.30.260120

[root@SRV 19.30.260120]# ./root.sh
Check /rdbms/u01/app/oracle/product/19.30.260120/install/root_SRV.INT.custname.CH_2026-06-18_10-37-33-682660639.log for the output of root script
[root@SRV 19.30.260120]# cat /rdbms/u01/app/oracle/product/19.30.260120/install/root_SRV.INT.custname.CH_2026-06-18_10-37-33-682660639.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /rdbms/u01/app/oracle/product/19.30.260120
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
./root.sh: line 5: /rdbms/u01/app/oracle/product/19.30.260120/suptools/tfa/release/tfa_home/install/roottfa.sh: No such file or directory
</pre>
</br>




<p class="wp-block-paragraph">See known issue: &#8220;Roottfa.sh: Not Found&#8221; after executing root.sh script. &#8211; KB104521</p>



<p class="wp-block-paragraph">You might want to know that if you run root.sh as part of an ansible playbook you would have the same error, but the script would return a return code of 0, and you might not see that in fact root.sh could not be executed.</p>



<p class="wp-block-paragraph">Resolve the problem by commenting out the tfa line, as we do not have tfa installed on our server.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6,21,23,29]">
[root@SRV 19.30.260120]# cat ./root.sh
#!/bin/sh
unset WAS_ROOTMACRO_CALL_MADE
. /rdbms/u01/app/oracle/product/19.30.260120/install/utl/rootmacro.sh "$@"
. /rdbms/u01/app/oracle/product/19.30.260120/install/utl/rootinstall.sh
/rdbms/u01/app/oracle/product/19.30.260120/suptools/tfa/release/tfa_home/install/roottfa.sh
/rdbms/u01/app/oracle/product/19.30.260120/install/root_schagent.sh

#
# Root Actions related to network
#
/rdbms/u01/app/oracle/product/19.30.260120/network/install/sqlnet/setowner.sh

#
# Invoke standalone rootadd_rdbms.sh
#
/rdbms/u01/app/oracle/product/19.30.260120/rdbms/install/rootadd_rdbms.sh

/rdbms/u01/app/oracle/product/19.30.260120/rdbms/install/rootadd_filemap.sh

[root@SRV 19.30.260120]# vi ./root.sh

[root@SRV 19.30.260120]# cat ./root.sh
#!/bin/sh
unset WAS_ROOTMACRO_CALL_MADE
. /rdbms/u01/app/oracle/product/19.30.260120/install/utl/rootmacro.sh "$@"
. /rdbms/u01/app/oracle/product/19.30.260120/install/utl/rootinstall.sh
#/rdbms/u01/app/oracle/product/19.30.260120/suptools/tfa/release/tfa_home/install/roottfa.sh
/rdbms/u01/app/oracle/product/19.30.260120/install/root_schagent.sh

#
# Root Actions related to network
#
/rdbms/u01/app/oracle/product/19.30.260120/network/install/sqlnet/setowner.sh

#
# Invoke standalone rootadd_rdbms.sh
#
/rdbms/u01/app/oracle/product/19.30.260120/rdbms/install/rootadd_rdbms.sh

/rdbms/u01/app/oracle/product/19.30.260120/rdbms/install/rootadd_filemap.sh
</pre>
</br>



<p class="wp-block-paragraph">And I could successfully run root.sh.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV 19.30.260120]# ./root.sh
Check /rdbms/u01/app/oracle/product/19.30.260120/install/root_SRV.INT.custname.CH_2026-06-18_10-39-42-830060996.log for the output of root script
[root@SRV 19.30.260120]# cat /rdbms/u01/app/oracle/product/19.30.260120/install/root_SRV.INT.custname.CH_2026-06-18_10-39-42-830060996.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /rdbms/u01/app/oracle/product/19.30.260120
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[root@SRV 19.30.260120]#
</pre>
</br>



<p class="wp-block-paragraph">And if I check, my files permissions are now all good:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,7,10]">
oracle@SRV:~/ [rdbms193000] ls -ltrh  $ORACLE_HOME/bin/oracle
-rwsr-s--x. 1 oracle oinstall 448M Jun 18 10:32 /rdbms/u01/app/oracle/product/19.30.260120/bin/oracle

oracle@SRV:~/ [rdbms193000] ls -ltrh  $ORACLE_HOME/bin/extjob
-rwsr-x---. 1 root oinstall 3.0M Jun 18 10:31 /rdbms/u01/app/oracle/product/19.30.260120/bin/extjob

oracle@SRV:~/ [rdbms193000] ls -ltrh $ORACLE_HOME/rdbms/admin/externaljob.ora
-rw-r-----. 1 root oinstall 1.5K Dec 21  2005 /rdbms/u01/app/oracle/product/19.30.260120/rdbms/admin/externaljob.ora

oracle@SRV:~/ [rdbms193000] ls -ltrh $ORACLE_HOME/bin/jssu
-rwsr-x---. 1 root oinstall 2.3M Jun 18 10:31 /rdbms/u01/app/oracle/product/19.30.260120/bin/jssu
oracle@SRV:~/ [rdbms193000]
</pre>
</br>



<h3>Activate CIFS again</h3>



<p class="wp-block-paragraph">Now I can update the fstab if I deactivated at the beginning the CIFS mount point, and I can mount all of them.</p>



<h3>oratab file</h3>



<p class="wp-block-paragraph">I will also update my oratab so the needed database will be restarted automatically at next reboot.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
oracle@SRV:~/ [rdbms193000] vi /etc/oratab

oracle@SRV:~/ [rdbms193000] cat /etc/oratab
#



# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
DB10:/rdbms/u01/app/oracle/product/19.30.260120:N
DB3:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB9:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB4:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB1:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB8:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB7:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB2:/rdbms/u01/app/oracle/product/19.30.260120:Y
DB5:/rdbms/u01/app/oracle/product/19.30.260120_MX:Y
DB6:/rdbms/u01/app/oracle/product/19.30.260120_MX:Y
</pre>
</br>



<h3>Cleanup</h3>



<p class="wp-block-paragraph">I will remove leapp directory.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6,8]">
[root@SRV ~]# ls -ltrh /root/tmp_leapp_py3
total 4.0K
-rwxrwx---. 1 root root 118 Jun 18 09:36 leapp3
lrwxrwxrwx. 1 root root  38 Jun 18 09:36 leapp -&gt; /usr/lib/python2.7/site-packages/leapp

[root@SRV ~]# rm -rf /root/tmp_leapp_py3

[root@SRV ~]# ls -ltrh /root/tmp_leapp_py3
ls: cannot access '/root/tmp_leapp_py3': No such file or directory
[root@SRV ~]#
</pre>
</br>



<h3>Check rpm release</h3>



<p class="wp-block-paragraph">I ensured that I only have el8 package and no more el7 package.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,5]">
[root@SRV ~]# rpm -qa | grep -i el7
[root@SRV ~]# rpm -qa | grep -i ol7
[root@SRV ~]# rpm -qa | grep -i el8 | wc -l
610
[root@SRV ~]# rpm -qa | grep -i el8 | tail -n3
libxmlb-0.1.15-1.el8.x86_64
libnetfilter_conntrack-1.0.6-5.el8.x86_64
librepo-1.14.2-5.el8.x86_64
[root@SRV ~]#
</pre>
</br>



<h3>Remove el7 repo</h3>



<p class="wp-block-paragraph">It is also important to check the repo, because leapp upgrade will not remove customized repo running on el7.</p>



<p class="wp-block-paragraph">As I can see here, I still have epel el7 repo.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf repolist all
repo id                                                           repo name                                                                                                          status
epel                                                              Extra Packages for Enterprise Linux 7 - x86_64                                                                     enabled
epel-debuginfo                                                    Extra Packages for Enterprise Linux 7 - x86_64 - Debug                                                             disabled
epel-source                                                       Extra Packages for Enterprise Linux 7 - x86_64 - Source                                                            disabled
epel-testing                                                      Extra Packages for Enterprise Linux 7 - Testing - x86_64                                                           disabled
epel-testing-debuginfo                                            Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Debug                                                   disabled
epel-testing-source                                               Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Source                                                  disabled
ol8_MODRHCK                                                       Latest RHCK with fixes from Oracle for Oracle Linux 8 (x86_64)                                                     disabled
ol8_UEKR6                                                         Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)                                         enabled
ol8_UEKR6_RDMA                                                    Oracle Linux 8 UEK6 RDMA (x86_64)                                                                                  disabled
ol8_UEKR7                                                         Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)                                         disabled
ol8_UEKR7_RDMA                                                    Oracle Linux 8 UEK7 RDMA (x86_64)                                                                                  disabled
...
...
...
</pre>
</br>



<p class="wp-block-paragraph">Moreover those el7 repo are enabled.</p>



<p class="wp-block-paragraph">I removed it.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,8]">
[root@SRV ~]# rpm -qa | grep -i epel
epel-release-7-14.noarch

[root@SRV ~]# ls -ltrh /etc/yum.repos.d/*epel*
-rw-r--r--. 1 root root 1.5K Sep  4  2021 /etc/yum.repos.d/epel-testing.repo
-rw-r--r--. 1 root root 1.4K Sep  4  2021 /etc/yum.repos.d/epel.repo

[root@SRV ~]# dnf remove epel-release-7-14.noarch
Dependencies resolved.
=============================================================================================================================================================================================
 Package                                           Architecture                                Version                                    Repository                                    Size
=============================================================================================================================================================================================
Removing:
 epel-release                                      noarch                                      7-14                                       @System                                       25 k

DB8action Summary
=============================================================================================================================================================================================
Remove  1 Package

Freed space: 25 k
Is this ok [y/N]: y
Running DB8action check
DB8action check succeeded.
Running DB8action test
DB8action test succeeded.
Running DB8action
  Preparing        :                                                                                                                                                                     1/1
  Running scriptlet: epel-release-7-14.noarch                                                                                                                                            1/1
  Erasing          : epel-release-7-14.noarch                                                                                                                                            1/1
  Running scriptlet: epel-release-7-14.noarch                                                                                                                                            1/1
  Verifying        : epel-release-7-14.noarch                                                                                                                                            1/1

Removed:
  epel-release-7-14.noarch

Complete!
</pre>
<br>



<p class="wp-block-paragraph">And I&#8217;m good.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[root@SRV ~]# rpm -qa | grep -i epel
[root@SRV ~]# ls -ltrh /etc/yum.repos.d/*epel*
ls: cannot access '/etc/yum.repos.d/*epel*': No such file or directory
[root@SRV ~]#
</pre>
</br>



<p class="wp-block-paragraph">And I can ensure that only el8 repo are enabled.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf repolist all --enabled
repo id                                                           repo name
ol8_UEKR6                                                         Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                                                     Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                                                 Oracle Linux 8 BaseOS Latest (x86_64)
[root@SRV ~]#
</pre>
<br>




<p class="wp-block-paragraph">If needed I can install epel for el8.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf install oracle-epel-release-el8
Oracle Linux 8 BaseOS Latest (x86_64)                                                                                                                        3.6 MB/s | 145 MB     00:40
Oracle Linux 8 Application Stream (x86_64)                                                                                                                   2.9 MB/s |  82 MB     00:28
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)                                                                                   4.4 MB/s | 148 MB     00:33
Last metadata expiration check: 0:00:23 ago on Thu 18 Jun 2026 11:04:31 AM CEST.
Dependencies resolved.
=============================================================================================================================================================================================
 Package                                               Architecture                         Version                                    Repository                                       Size
=============================================================================================================================================================================================
Installing:
 oracle-epel-release-el8                               x86_64                               1.0-5.el8                                  ol8_baseos_latest                                15 k

DB8action Summary
=============================================================================================================================================================================================
Install  1 Package

Total download size: 15 k
Installed size: 18 k
Is this ok [y/N]: y
Downloading Packages:
oracle-epel-release-el8-1.0-5.el8.x86_64.rpm                                                                                                                 133 kB/s |  15 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                        131 kB/s |  15 kB     00:00
Running DB8action check
DB8action check succeeded.
Running DB8action test
DB8action test succeeded.
Running DB8action
  Preparing        :                                                                                                                                                                     1/1
  Installing       : oracle-epel-release-el8-1.0-5.el8.x86_64                                                                                                                            1/1
  Verifying        : oracle-epel-release-el8-1.0-5.el8.x86_64                                                                                                                            1/1

Installed:
  oracle-epel-release-el8-1.0-5.el8.x86_64

Complete!
</pre>
<br>




<p class="wp-block-paragraph">I can check again my list of activated repo and I will find the new one in.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[root@SRV ~]# dnf repolist all --enabled
repo id                                                                repo name
ol8_UEKR6                                                              Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                                                          Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                                                      Oracle Linux 8 BaseOS Latest (x86_64)
ol8_developer_EPEL                                                     Oracle Linux 8 EPEL Packages for Development (x86_64)
ol8_developer_EPEL_modular                                             Oracle Linux 8 EPEL Modular Packages for Development (x86_64)
[root@SRV ~]#
</pre>
<br>



<p class="wp-block-paragraph">I also remove leapp repository, as I do not need it any more.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,9,11]">
[root@SRV ~]# ls -ltrh /etc/yum.repos.d/
total 28K
-rw-r--r--. 1 root root  530 Mar 28  2022 oracle-epel-ol8.repo
-rw-r--r--. 1 root root  243 May 23  2024 virt-ol8.repo
-rw-r--r--. 1 root root 4.5K Sep 19  2025 leapp-upgrade-repos-ol8.repo.save
-rw-r--r--. 1 root root 4.1K Jun 18 09:43 oracle-linux-ol8.repo
-rw-r--r--. 1 root root  941 Jun 18 09:43 uek-ol8.repo

[root@SRV ~]# rm -f /etc/yum.repos.d/leapp-upgrade-repos-ol8.repo.save

[root@SRV ~]# ls -ltrh /etc/yum.repos.d/
total 20K
-rw-r--r--. 1 root root  530 Mar 28  2022 oracle-epel-ol8.repo
-rw-r--r--. 1 root root  243 May 23  2024 virt-ol8.repo
-rw-r--r--. 1 root root 4.1K Jun 18 09:43 oracle-linux-ol8.repo
-rw-r--r--. 1 root root  941 Jun 18 09:43 uek-ol8.repo
</pre>
<br>



<p class="wp-block-paragraph">I also could verify that I do not have any el7 old repo any more.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,4,6]">
[root@SRV ~]# grep -i el7 /etc/yum.repos.d/*
[root@SRV ~]# grep -i el8 /etc/yum.repos.d/* | wc -l
0
[root@SRV ~]# grep -i ol8 /etc/yum.repos.d/* | wc -l
50
[root@SRV ~]# grep -i ol7 /etc/yum.repos.d/* | wc -l
0
[root@SRV ~]#
</pre>
<br>



<h3>Reboot</h3>



<p class="wp-block-paragraph">I finally rebooted the server one last time before giving it back to the application team, to ensure all is ok.</p>



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



<p class="wp-block-paragraph">I showed how to upgrade an Oracle Linux from version el7 to el8. The process would exactly be the same for higher. I could not upgrade to el9 because the server was not supporting it. It is a production server that will still be replaced by customer, in one or two years, and it was important to upgrade Oracle Linux for security audit.</p>



<p class="wp-block-paragraph">Also I could confirm that the last critical CVE as Dirty Frag (Copy Fail 2) are covered and that the last el8 version has the correction:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[root@SRV ~]# uname -r
5.4.17-2136.356.4.2.el8uek.x86_64

[root@SRV ~]# rpm -q --changelog kernel-uek-5.4.17-2136.356.4.2.el8uek | grep -iE 'CVE-2026-31431|CVE-2026-43284|CVE-2026-46300'
- net: skbuff: propagate shared-frag marker through frag-DB8fer helpers (Hyunwoo Kim) [Orabug: 39368828,39441326] {CVE-2026-43503,CVE-2026-46300}
- net: skbuff: preserve shared-frag marker during coalescing (William Bowling) [Orabug: 39368828] {CVE-2026-46300}
- xfrm: esp: avoid in-place decrypt on shared skb frags (Kuan-Ting Chen) [Orabug: 39334580,39367147] {CVE-2026-43284}
- crypto: algif_aead - Revert to operating out-of-place (Herbert Xu) [Orabug: 39250687,39283868,39292250] {CVE-2026-31431}
- crypto: algif_aead - use memcpy_sglist() instead of null skcipher (Eric Biggers) [Orabug: 39250687] {CVE-2026-31431}
[root@SRV ~]#
</pre>
<br>
<p>L’article <a href="https://www.dbi-services.com/blog/upgrading-oracle-linux-when-running-oracle-databases/">Upgrading Oracle Linux when running Oracle databases</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/upgrading-oracle-linux-when-running-oracle-databases/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-08-22 06:48:22 by W3 Total Cache
-->