<?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>database node updates &#8211; Bugra Parlayan | Oracle Database &amp; Exadata Blog</title>
	<atom:link href="https://www.bugraparlayan.com.tr/tag/database-node-updates/feed" rel="self" type="application/rss+xml" />
	<link>https://www.bugraparlayan.com.tr</link>
	<description>A technical blog</description>
	<lastBuildDate>Sat, 26 Apr 2025 14:56:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://www.bugraparlayan.com.tr/wp-content/uploads/2020/06/cropped-plsql-32x32.jpg</url>
	<title>database node updates &#8211; Bugra Parlayan | Oracle Database &amp; Exadata Blog</title>
	<link>https://www.bugraparlayan.com.tr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Exadata Update Utilities: patchmgr and dbnodeupdate.sh</title>
		<link>https://www.bugraparlayan.com.tr/exadata-update-utilities-patchmgr-and-dbnodeupdate-sh.html</link>
		
		<dc:creator><![CDATA[Bugra Parlayan]]></dc:creator>
		<pubDate>Sat, 26 Apr 2025 14:56:09 +0000</pubDate>
				<category><![CDATA[Engineered Systems]]></category>
		<category><![CDATA[cell node patching]]></category>
		<category><![CDATA[database node updates]]></category>
		<category><![CDATA[dbnodeupdate.sh]]></category>
		<category><![CDATA[dbnodeupdate.sh usage]]></category>
		<category><![CDATA[Exadata automation tools]]></category>
		<category><![CDATA[Oracle Exadata patching]]></category>
		<category><![CDATA[patchmgr]]></category>
		<category><![CDATA[patchmgr best practices]]></category>
		<category><![CDATA[rolling patch updates]]></category>
		<guid isPermaLink="false">https://www.bugraparlayan.com.tr/?p=1459</guid>

					<description><![CDATA[<p>1. Introduction Oracle Exadata Database Machine is a high-performance, optimized platform for Oracle Database workloads. Regularly updating the software components of this platform—including the operating system, Exadata system software, device drivers, and firmware—is crucial for addressing security vulnerabilities, fixing bugs, and leveraging new features. Oracle provides specialized utilities to manage these update processes. Two of &#8230;</p>
<p>The post <a rel="nofollow" href="https://www.bugraparlayan.com.tr/exadata-update-utilities-patchmgr-and-dbnodeupdate-sh.html">Exadata Update Utilities: patchmgr and dbnodeupdate.sh</a> appeared first on <a rel="nofollow" href="https://www.bugraparlayan.com.tr">Bugra Parlayan | Oracle Database &amp; Exadata Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">1. Introduction</h2>



<p>Oracle Exadata Database Machine is a high-performance, optimized platform for Oracle Database workloads. Regularly updating the software components of this platform—including the operating system, Exadata system software, device drivers, and firmware—is crucial for addressing security vulnerabilities, fixing bugs, and leveraging new features. Oracle provides specialized utilities to manage these update processes. Two of the most commonly used tools are <code>patchmgr</code> and <code>dbnodeupdate.sh</code>. This document aims to provide a detailed technical comparison of these two utilities, explaining their functions, key differences, use cases, and parameters for effective <strong>Exadata patching</strong>.</p>



<h2 class="wp-block-heading">2. The <code>patchmgr</code> Utility</h2>



<h3 class="wp-block-heading">2.1. Definition and Purpose</h3>



<p><code>patchmgr</code> is a centralized utility designed to <strong>orchestrate and simplify</strong> software updates for Oracle Exadata infrastructure components.<sup></sup> It allows administrators to update multiple components—database servers, storage servers, and network switches—using a single command structure, streamlining the <strong>Exadata update process</strong>.<sup></sup> &nbsp;</p>



<h3 class="wp-block-heading">2.2. Scope and Capabilities</h3>



<ul class="wp-block-list">
<li><strong>Broad Component Coverage:</strong><code>patchmgr</code> can update various Exadata components :
<ul class="wp-block-list">
<li>Oracle Exadata Storage Servers (Cells)</li>



<li>Oracle Exadata Database Servers (Compute Nodes)</li>



<li>RDMA Network Fabric Switches (RoCE Switches)</li>



<li>InfiniBand Network Fabric Switches</li>



<li>Management Network Switch (specific models)   </li>
</ul>
</li>



<li><strong>Orchestration:</strong> It manages the update sequence across multiple targets, supporting both rolling and non-rolling updates.
<ul class="wp-block-list">
<li><strong>Rolling Update:</strong> Updates components sequentially (one by one) to maintain overall system availability, ideal for RAC clusters or storage server grids.  </li>



<li><strong>Non-Rolling Update:</strong> Updates all specified components concurrently, which is faster but requires a complete system outage.  </li>
</ul>
</li>



<li><strong>Automation:</strong> For database server updates, <code>patchmgr</code> automates numerous steps, including stopping/starting databases and Grid Infrastructure, managing VMs, handling Oracle Enterprise Manager agents, taking OS backups, relinking Oracle Homes, and applying best practice configurations.  </li>



<li><strong>Centralized Execution:</strong> <code>patchmgr</code> can be executed from a database server within the Exadata system being patched or from a separate, central server (the &#8220;driving system&#8221;) running Oracle Linux or Oracle Solaris. This facilitates managing multiple Exadata systems from one location.  </li>



<li><strong>User and Concurrency:</strong> Can be run by <code>root</code> or a non-root user (requires <code>-log_dir</code>). Multiple <code>patchmgr</code> instances can run concurrently from the same software directory (using distinct <code>-log_dir</code> values) to patch different systems simultaneously.  </li>
</ul>



<h3 class="wp-block-heading">2.3. Platform Support</h3>



<ul class="wp-block-list">
<li><strong>Target Systems:</strong> The Exadata components updated by <code>patchmgr</code> (database servers, storage servers) typically run <strong>Oracle Linux</strong>.</li>



<li><strong>Driving System:</strong> The <code>patchmgr</code> utility itself can be executed from a server running either <strong>Oracle Linux</strong> or <strong>Oracle Solaris</strong>. This means you can initiate and manage the patching of Linux-based Exadata components from a Solaris management server.  </li>
</ul>



<h3 class="wp-block-heading">2.4. Key Parameters and Usage</h3>



<p>The general syntax for <code>patchmgr</code> is: <code>./patchmgr -&lt;component&gt; &lt;component_list_file&gt; -&lt;action&gt; &lt;required_arguments&gt; [optional_arguments]</code> <sup></sup> &nbsp;</p>



<ul class="wp-block-list">
<li><strong><code>-&lt;component></code>:</strong> Specifies the component type:
<ul class="wp-block-list">
<li><code>-cells</code>: For Storage Servers.</li>



<li><code>-dbnodes</code>: For Database Servers.</li>



<li><code>-ibswitches</code>: For InfiniBand Switches.</li>



<li><code>-roceswitches</code>: For RoCE Switches.</li>
</ul>
</li>



<li><strong><code>&lt;component_list_file></code>:</strong> A text file listing the hostnames of the components to be updated.  </li>



<li><strong><code>-&lt;action></code>:</strong> Specifies the operation:
<ul class="wp-block-list">
<li><code>-upgrade</code>: Performs a software upgrade to a specified version.  </li>



<li><code>-rollback</code>: Rolls back to the previous software version.</li>



<li><code>-precheck</code>: Runs prerequisite checks before an upgrade or rollback.  </li>



<li><code>-backup</code>: Performs a backup (typically for DB nodes).</li>
</ul>
</li>



<li><strong><code>[optional_arguments]</code>:</strong> Modifies the action or behavior:
<ul class="wp-block-list">
<li><code>--rolling</code> / <code>-rolling</code>: Perform the action in a rolling fashion.  </li>



<li><code>--iso_repo &lt;path_to_iso></code> / <code>-iso_repo &lt;path_to_iso></code>: Specifies the path to the patch ISO file.  </li>



<li><code>--target_version &lt;version></code> / <code>-target_version &lt;version></code>: Specifies the target software version.  </li>



<li><code>--modify_at_prereq</code>: Allows removal of conflicting RPMs during precheck to resolve dependencies (for DB nodes).  </li>



<li><code>--force_remove_custom_rpms</code>: Forces removal of custom (non-Exadata) RPMs during an OS upgrade (for DB nodes).</li>



<li><code>--log_dir &lt;directory|auto></code>: Specifies a directory for log files or uses automatic naming. Required for concurrent execution or non-root users.  </li>



<li><code>--allow_active_network_mounts</code>: Allows patching to proceed even if active network mounts (like NFS) are detected.  </li>



<li><code>--dbnode_patch_base &lt;path></code>: Specifies the directory on target DB nodes where patch files will be extracted.  </li>



<li><code>--ignore_alerts</code>: Proceeds with patching despite active hardware alerts.  </li>



<li><code>--sequential_backup</code>: Backs up each node immediately before updating it during a rolling update (default is to back up all nodes first).  </li>



<li><code>--update_type &lt;type></code>: Selects security-only (<code>allcvss</code>) or full (<code>full</code>) update.  </li>



<li><code>--live-update-target</code>: Utilizes Exadata Live Update (on supported versions).  </li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">3. The <code>dbnodeupdate.sh</code> Utility</h2>



<h3 class="wp-block-heading">3.1. Definition and Purpose</h3>



<p><code>dbnodeupdate.sh</code> is a shell script specifically used to update, roll back, or back up the software on a <strong>single Oracle Exadata database server (compute node)</strong>.<sup></sup> Before <code>patchmgr</code> provided orchestration for database servers, updates often involved manually running <code>dbnodeupdate.sh</code> on each node sequentially.<sup></sup> &nbsp;</p>



<h3 class="wp-block-heading">3.2. Scope and Capabilities</h3>



<ul class="wp-block-list">
<li><strong>Single Database Server Focus:</strong> <code>dbnodeupdate.sh</code> operates only on the database server where it is executed.  </li>



<li><strong>Core Update Engine:</strong> When <code>patchmgr</code> updates database servers, it essentially invokes <code>dbnodeupdate.sh</code> on each target node to perform the actual update, rollback, or backup tasks.  </li>



<li><strong>Operating System Updates:</strong> It handles updates for the Oracle Linux OS, device drivers, and firmware included in the Exadata system software patch. It supports major OS upgrades (e.g., OL6 to OL7, OL7 to OL8), although older <code>dbnodeupdate.sh</code> versions might be needed for older OS transitions.  </li>



<li><strong>Backup and Rollback:</strong> Automatically creates a backup of the root filesystem before starting an update. This backup enables rollback to the previous state using the <code>-r</code> option if the update fails or needs to be reverted.  </li>



<li><strong>Dependency Management:</strong> Includes the <code>-M</code> option to allow the removal of conflicting RPMs during the prerequisite check phase to resolve dependency issues.  </li>
</ul>



<h3 class="wp-block-heading">3.3. Platform Support</h3>



<ul class="wp-block-list">
<li><code>dbnodeupdate.sh</code> runs <em>on</em> the Exadata database server being updated. Modern Exadata database servers exclusively use <strong>Oracle Linux</strong>. While Solaris was supported on older Exadata compute nodes , <code>dbnodeupdate.sh</code> in current contexts targets Linux.  </li>
</ul>



<h3 class="wp-block-heading">3.4. Key Parameters and Usage</h3>



<p>The basic usage is: <code>./dbnodeupdate.sh &lt;options&gt;</code></p>



<ul class="wp-block-list">
<li><strong><code>-u</code>:</strong> Initiates the update process.  </li>



<li><strong><code>-r</code>:</strong> Initiates a rollback from the pre-update backup.  </li>



<li><strong><code>-b</code>:</strong> Performs only the backup step.</li>



<li><strong><code>-c</code>:</strong> Runs the post-reboot completion steps after an update or rollback.  </li>



<li><strong><code>-l &lt;ISO_or_Repo_URL></code>:</strong> Specifies the path to the update ISO file or the YUM repository URL.  </li>



<li><strong><code>-s</code>:</strong> Stops Cluster Ready Services (CRS) before the update/rollback and restarts it afterward.  </li>



<li><strong><code>-p</code>:</strong> Runs the bootstrap phase (typically for upgrades from older versions).  </li>



<li><strong><code>-x &lt;helper_script_dir></code>:</strong> Specifies the directory containing helper scripts (often used with <code>-p</code>).  </li>



<li><strong><code>-M</code>:</strong> Allows removal of conflicting RPMs during prerequisite checks.  </li>



<li><strong><code>-v</code>:</strong> Performs only the prerequisite check.  </li>
</ul>



<h2 class="wp-block-heading">4. <code>patchmgr</code> vs. <code>dbnodeupdate.sh</code>: Key Differences</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Feature</th><th><code>patchmgr</code></th><th><code>dbnodeupdate.sh</code></th></tr><tr><td><strong>Primary Purpose</strong></td><td><strong>Orchestration</strong> for Exadata infrastructure components</td><td><strong>Single</strong> Exadata DB server update/rollback/backup</td></tr><tr><td><strong>Scope</strong></td><td>DB Servers, Storage Servers, Network Switches</td><td>DB Servers Only</td></tr><tr><td><strong>Execution Mode</strong></td><td>Manages multiple targets; invokes <code>dbnodeupdate.sh</code> for DB nodes</td><td>Runs on a single target node</td></tr><tr><td><strong>Update Mode</strong></td><td>Rolling or Non-Rolling</td><td>Affects only the single node it runs on</td></tr><tr><td><strong>Run Location</strong></td><td>DB Node or separate Linux/Solaris server</td><td>Only on the target DB Node being updated</td></tr><tr><td><strong>Typical Use Case</strong></td><td>Standard multi-component/multi-node patching</td><td>Single node update/rollback; invoked by <code>patchmgr</code>; patching last node in rolling update; recovery scenarios</td></tr><tr><td><strong>Driving Platform</strong></td><td>Linux, <strong>Solaris</strong> <sup></sup></td><td>Linux (on the target DB Node)</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">5. Which Tool Should Be Used When?</h2>



<ul class="wp-block-list">
<li><strong>Use <code>patchmgr</code> when:</strong>
<ul class="wp-block-list">
<li>Updating multiple storage servers, database servers, or network switches (<strong>standard and preferred method</strong>).</li>



<li>Choosing between rolling or non-rolling update strategies.</li>



<li>Managing the update process from a central server.</li>



<li>Leveraging automated orchestration steps (service stop/start, backup, relink).</li>
</ul>
</li>



<li><strong>Use <code>dbnodeupdate.sh</code> when:</strong>
<ul class="wp-block-list">
<li>Updating or rolling back <strong>only one</strong> specific database server (e.g., testing on a single node).</li>



<li>Performing a rolling update with <code>patchmgr</code> and needing to patch the <strong>initial driving node last</strong> (by running <code>dbnodeupdate.sh</code> locally on it after other nodes are done).  </li>



<li>Recovering a system after a failed update/rollback by booting from a <strong>diagnostic ISO</strong>.  </li>



<li>As a manual alternative if <code>patchmgr</code> itself encounters issues or is unavailable.</li>
</ul>
</li>
</ul>



<p>As a general rule, <strong><code>patchmgr</code> is the standard utility</strong> for routine Exadata infrastructure patching. <code>dbnodeupdate.sh</code> should be considered an underlying component used by <code>patchmgr</code> for database nodes or a tool for specific single-node scenarios.</p>



<h2 class="wp-block-heading">6. Conclusion</h2>



<p><code>patchmgr</code> and <code>dbnodeupdate.sh</code> are essential tools for maintaining the currency and security of Oracle Exadata platforms. <code>patchmgr</code> serves as the primary orchestration utility, simplifying the update process across multiple Exadata components (database servers, storage servers, switches) and supporting both rolling and non-rolling strategies. It can be driven from Linux or Solaris systems. <code>dbnodeupdate.sh</code> is the core script that performs the actual update, rollback, or backup on individual Linux-based Exadata database servers, often invoked by <code>patchmgr</code> but also usable standalone for specific single-node tasks or recovery situations. Understanding the distinct roles and capabilities of each tool allows administrators to choose the appropriate method for their specific Exadata maintenance requirements, with <code>patchmgr</code> being the standard choice for most patching operations.</p>
<p>The post <a rel="nofollow" href="https://www.bugraparlayan.com.tr/exadata-update-utilities-patchmgr-and-dbnodeupdate-sh.html">Exadata Update Utilities: patchmgr and dbnodeupdate.sh</a> appeared first on <a rel="nofollow" href="https://www.bugraparlayan.com.tr">Bugra Parlayan | Oracle Database &amp; Exadata Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
