<?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>Blog DBA Dutra</title>
	<atom:link href="https://www.dbadutra.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbadutra.com/</link>
	<description></description>
	<lastBuildDate>Sun, 25 Oct 2026 23:41:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
<site xmlns="com-wordpress:feed-additions:1">170494511</site>	<item>
		<title>Exascale for the ASM generation: how Exadata storage works now</title>
		<link>https://www.dbadutra.com/2026/10/exadata-exascale-storage-explained/</link>
					<comments>https://www.dbadutra.com/2026/10/exadata-exascale-storage-explained/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 21:31:25 +0000</pubDate>
				<category><![CDATA[Engineered Systems]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Exadata]]></category>
		<category><![CDATA[Exascale]]></category>
		<category><![CDATA[OCI]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PDB]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6298</guid>

					<description><![CDATA[<p>How Exadata Exascale works for DBAs who learned Exadata on ASM: storage pools, vaults, 8 MB extents, the direct I/O path, redirect-on-write thin clones, 19c vs 26ai and ExaDB-XS.</p>
<p>O post <a href="https://www.dbadutra.com/2026/10/exadata-exascale-storage-explained/">Exascale for the ASM generation: how Exadata storage works now</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For more than a decade, every Exadata I worked on followed the same storage recipe: cell disks, grid disks, ASM disk groups called DATA and RECO, and a cluster that owned all of it. If you wanted a test copy of production, you built a read-only test master first and hung sparse clones off it. Exadata Exascale changes that recipe. It arrived with Exadata System Software 24.1 in 2024, and it&#8217;s the engine behind Exadata Database Service on Exascale Infrastructure (ExaDB-XS) in OCI. This post walks through how it works, from the point of view of a DBA who learned Exadata on ASM.</p>



<h2 class="wp-block-heading">What problem Exadata Exascale solves</h2>



<p class="wp-block-paragraph">Classic Exadata storage is tied to a cluster. ASM runs on the database servers, owns the disk groups and knows where every extent lives. The model is fast and proven, but it has costs:</p>



<ul class="wp-block-list">
<li>Storage is carved per cluster. Space you gave to one VM cluster&#8217;s disk groups is hard to hand to another.</li>



<li>Thin clones need a read-only test master. You refresh the master, then rebuild the clones.</li>



<li>The entry point is a whole rack, or at least a dedicated slice of one.</li>
</ul>



<p class="wp-block-paragraph">Exascale moves storage management from the database servers to the storage servers and turns the storage grid into a shared, multi-tenant pool. Smart Scan, RDMA, flash cache, XRMEM and storage indexes all stay.</p>



<h2 class="wp-block-heading">The building blocks</h2>



<p class="wp-block-paragraph">Four terms replace most of what you know from ASM.</p>



<ul class="wp-block-list">
<li><strong>Pool disk.</strong> A partition of an Exadata cell disk. Each pool disk has a media type: HC (high capacity HDD), EF (extreme flash) or XT (the extended HDD tier on X11M).</li>



<li><strong>Storage pool.</strong> A set of pool disks of the same media type, spread across storage servers. A cluster needs at least one. You grow a pool by resizing pool disks, adding pool disks or adding storage servers.</li>



<li><strong>Vault.</strong> The logical container your database uses, and the closest thing to an ASM disk group. A vault takes space from storage pools and sets limits for space, IOPS, flash cache and XRMEM. It also has its own access controls, so it works as a security boundary. You reference it with an @ prefix.</li>



<li><strong>File and extent.</strong> Every file is split into 8 MB extents, mirrored and striped across all the storage behind the vault.</li>
</ul>



<pre class="wp-block-code"><code>ALTER SYSTEM SET db_create_file_dest = '@PRODVAULT' SCOPE=BOTH;</code></pre>



<figure class="exs-fig">
<style>
.exs-fig{margin:28px 0;max-width:100%}
.exs-fig .exs-box{background:#0f1a24;border-radius:8px;padding:10px;overflow-x:auto}
.exs-fig svg{display:block;width:100%;min-width:560px;height:auto;font-family:"IBM Plex Mono",Consolas,monospace}
.exs-fig figcaption{font-size:14px;line-height:1.5;margin-top:8px;opacity:.8}
.exs-fig .t{fill:#dbe4ec;font-size:13px}
.exs-fig .s{fill:#8ea3b5;font-size:11px}
.exs-fig .h{fill:#dbe4ec;font-size:14px;font-weight:500}
.exs-fig .k{fill:#0f1a24;font-size:11px;font-weight:600}
.exs-fig .bx{fill:#152331;stroke:#2c3e4f;stroke-width:1.2}
.exs-fig .pd{fill:#1a2b3b;stroke:#33495d;stroke-width:1}
.exs1 .g1{animation:exs1-a 12s infinite}
.exs1 .g2{animation:exs1-b 12s infinite}
.exs1 .g3{animation:exs1-c 12s infinite}
.exs1 .g4{animation:exs1-d 12s infinite}
.exs1 .x1{animation:exs1-xa 12s infinite}
.exs1 .x2{animation:exs1-xb 12s infinite}
.exs1 .x3{animation:exs1-xc 12s infinite}
.exs1 .x4{animation:exs1-xd 12s infinite}
@keyframes exs1-a{0%,6%{opacity:0}11%,94%{opacity:1}100%{opacity:0}}
@keyframes exs1-b{0%,26%{opacity:0}31%,94%{opacity:1}100%{opacity:0}}
@keyframes exs1-c{0%,46%{opacity:0}51%,94%{opacity:1}100%{opacity:0}}
@keyframes exs1-d{0%,66%{opacity:0}71%,94%{opacity:1}100%{opacity:0}}
@keyframes exs1-xa{0%,4%,24%,100%{stroke:#2c3e4f;stroke-width:1}6%,20%{stroke:#ffffff;stroke-width:2.5}}
@keyframes exs1-xb{0%,24%,44%,100%{stroke:#2c3e4f;stroke-width:1}26%,40%{stroke:#ffffff;stroke-width:2.5}}
@keyframes exs1-xc{0%,44%,64%,100%{stroke:#2c3e4f;stroke-width:1}46%,60%{stroke:#ffffff;stroke-width:2.5}}
@keyframes exs1-xd{0%,64%,84%,100%{stroke:#2c3e4f;stroke-width:1}66%,80%{stroke:#ffffff;stroke-width:2.5}}
.exs2 .pa{animation:exs2-pa 14s infinite}
.exs2 .tb{animation:exs2-tb 14s infinite}
.exs2 .pc{animation:exs2-pc 14s infinite}
.exs2 .pd2{animation:exs2-pd 14s infinite}
.exs2 .rx{animation:exs2-rx 14s infinite}
.exs2 .mo{animation:exs2-mo 14s infinite}
.exs2 .mn{animation:exs2-mn 14s infinite}
.exs2 .c1{animation:exs2-c1 14s infinite}
.exs2 .c2{animation:exs2-c2 14s infinite}
.exs2 .c3{animation:exs2-c3 14s infinite}
.exs2 .c0{animation:exs2-c0 14s infinite}
@keyframes exs2-pa{0%,2%{opacity:0;transform:translate(0,0)}4%{opacity:1;transform:translate(0,0)}14%{opacity:1;transform:translate(394px,0)}24%{opacity:1;transform:translate(0,0)}26%,100%{opacity:0;transform:translate(0,0)}}
@keyframes exs2-tb{0%,31%{opacity:0;transform:translate(0,0)}33%{opacity:1;transform:translate(0,0)}43%{opacity:1;transform:translate(214px,-58px)}47%{opacity:1;transform:translate(374px,-58px)}55%{opacity:1;transform:translate(484px,-23px)}58%,100%{opacity:0;transform:translate(484px,-23px)}}
@keyframes exs2-pc{0%,61%{opacity:0;transform:translate(0,0)}63%{opacity:1;transform:translate(0,0)}71%{opacity:1;transform:translate(394px,-85px)}73%,100%{opacity:0;transform:translate(394px,-85px)}}
@keyframes exs2-rx{0%,70%{opacity:0}72%,80%{opacity:1}83%,100%{opacity:0}}
@keyframes exs2-mo{0%,76%{opacity:1}78%,99%{opacity:0}100%{opacity:1}}
@keyframes exs2-mn{0%,76%{opacity:0}78%,98%{opacity:1}100%{opacity:0}}
@keyframes exs2-pd{0%,82%{opacity:0;transform:translate(0,0)}84%{opacity:1;transform:translate(0,0)}93%{opacity:1;transform:translate(394px,95px)}96%,100%{opacity:0;transform:translate(394px,95px)}}
@keyframes exs2-c1{0%,29%{opacity:1}31%,100%{opacity:0}}
@keyframes exs2-c2{0%,29%{opacity:0}31%,59%{opacity:1}61%,100%{opacity:0}}
@keyframes exs2-c3{0%,59%{opacity:0}61%,99%{opacity:1}100%{opacity:0}}
@keyframes exs2-c0{0%,100%{opacity:0}}
.exs3 .w{animation:exs3-w 12s infinite}
.exs3 .nb{animation:exs3-nb 12s infinite}
.exs3 .ol{animation:exs3-ol 12s infinite}
.exs3 .nl{animation:exs3-nl 12s infinite}
.exs3 .d1{animation:exs3-d1 12s infinite}
.exs3 .d2{animation:exs3-d2 12s infinite}
.exs3 .d3{animation:exs3-d3 12s infinite}
.exs3 .d0{animation:exs3-d0 12s infinite}
@keyframes exs3-w{0%,28%{opacity:0}31%,44%{opacity:1}47%,100%{opacity:0}}
@keyframes exs3-nb{0%,44%{opacity:0}50%,96%{opacity:1}100%{opacity:0}}
@keyframes exs3-ol{0%,48%{opacity:1}53%,97%{opacity:.08}100%{opacity:1}}
@keyframes exs3-nl{0%,50%{opacity:0}55%,96%{opacity:1}100%{opacity:0}}
@keyframes exs3-d1{0%,27%{opacity:1}29%,100%{opacity:0}}
@keyframes exs3-d2{0%,27%{opacity:0}29%,59%{opacity:1}61%,100%{opacity:0}}
@keyframes exs3-d3{0%,59%{opacity:0}61%,99%{opacity:1}100%{opacity:0}}
@keyframes exs3-d0{0%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.exs-fig *{animation:none!important}}
</style>
<div class="exs-box">
<svg class="exs1" viewBox="0 0 800 360" role="img" aria-label="A database writes to vault @PRODVAULT. Its file is split into four 8 MB extents. Each extent is stored three times, a primary and two mirrors, on pool disks in three different storage servers that form one storage pool.">
<text class="h" x="20" y="28">Pool disks → storage pool → vault → file → 8 MB extents</text>
<rect class="bx" x="20" y="130" width="150" height="100" rx="6"/>
<text class="t" x="34" y="156">CDB1 instance</text>
<text class="s" x="34" y="180">db_create_file_dest</text>
<text class="s" x="34" y="196">= &#8216;@PRODVAULT&#8217;</text>
<path d="M170 180 H200" stroke="#8ea3b5" stroke-width="1.5" fill="none" marker-end="url(#exs1arr)"/>
<defs><marker id="exs1arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M0 0L10 5L0 10z" fill="#8ea3b5"/></marker></defs>
<rect x="204" y="64" width="150" height="250" rx="6" fill="#152331" stroke="#f0a83c" stroke-width="1.5"/>
<text class="t" x="216" y="86" style="fill:#f0a83c">vault @PRODVAULT</text>
<text class="s" x="216" y="102">quota: space · IOPS · flash</text>
<rect x="218" y="114" width="122" height="186" rx="4" fill="#0f1a24" stroke="#2c3e4f"/>
<text class="s" x="228" y="132">users01.dbf</text>
<rect class="x1" x="228" y="142" width="102" height="30" rx="3" fill="#36c2b4" stroke="#2c3e4f"/><text class="k" x="238" y="161">E1 · 8 MB</text>
<rect class="x2" x="228" y="180" width="102" height="30" rx="3" fill="#f0a83c" stroke="#2c3e4f"/><text class="k" x="238" y="199">E2 · 8 MB</text>
<rect class="x3" x="228" y="218" width="102" height="30" rx="3" fill="#9b8cf2" stroke="#2c3e4f"/><text class="k" x="238" y="237">E3 · 8 MB</text>
<rect class="x4" x="228" y="256" width="102" height="30" rx="3" fill="#ef7aa6" stroke="#2c3e4f"/><text class="k" x="238" y="275">E4 · 8 MB</text>
<path d="M354 190 H372" stroke="#8ea3b5" stroke-width="1.5" fill="none" marker-end="url(#exs1arr)"/>
<rect x="376" y="52" width="410" height="276" rx="8" fill="none" stroke="#5f7c96" stroke-dasharray="6 5"/>
<text class="s" x="390" y="46">storage pool HC · pool disks from every storage server</text>
<g>
<rect class="bx" x="388" y="64" width="122" height="252" rx="6"/><text class="t" x="400" y="86">cell01</text>
<rect class="pd" x="398" y="100" width="102" height="40" rx="3"/><rect class="pd" x="398" y="150" width="102" height="40" rx="3"/><rect class="pd" x="398" y="200" width="102" height="40" rx="3"/><rect class="pd" x="398" y="250" width="102" height="40" rx="3"/>
<rect class="bx" x="524" y="64" width="122" height="252" rx="6"/><text class="t" x="536" y="86">cell02</text>
<rect class="pd" x="534" y="100" width="102" height="40" rx="3"/><rect class="pd" x="534" y="150" width="102" height="40" rx="3"/><rect class="pd" x="534" y="200" width="102" height="40" rx="3"/><rect class="pd" x="534" y="250" width="102" height="40" rx="3"/>
<rect class="bx" x="660" y="64" width="122" height="252" rx="6"/><text class="t" x="672" y="86">cell03</text>
<rect class="pd" x="670" y="100" width="102" height="40" rx="3"/><rect class="pd" x="670" y="150" width="102" height="40" rx="3"/><rect class="pd" x="670" y="200" width="102" height="40" rx="3"/><rect class="pd" x="670" y="250" width="102" height="40" rx="3"/>
<text class="s" x="402" y="306">pool disks</text><text class="s" x="538" y="306">pool disks</text><text class="s" x="674" y="306">pool disks</text>
</g>
<g class="g1">
<rect x="406" y="107" width="26" height="26" rx="3" fill="#36c2b4"/><text class="k" x="414" y="124">P</text>
<rect x="542" y="157" width="26" height="26" rx="3" fill="none" stroke="#36c2b4" stroke-width="2"/><text class="t" x="550" y="174" style="fill:#36c2b4;font-size:11px">M</text>
<rect x="678" y="207" width="26" height="26" rx="3" fill="none" stroke="#36c2b4" stroke-width="2"/><text class="t" x="686" y="224" style="fill:#36c2b4;font-size:11px">M</text>
</g>
<g class="g2">
<rect x="542" y="107" width="26" height="26" rx="3" fill="#f0a83c"/><text class="k" x="550" y="124">P</text>
<rect x="678" y="157" width="26" height="26" rx="3" fill="none" stroke="#f0a83c" stroke-width="2"/><text class="t" x="686" y="174" style="fill:#f0a83c;font-size:11px">M</text>
<rect x="406" y="207" width="26" height="26" rx="3" fill="none" stroke="#f0a83c" stroke-width="2"/><text class="t" x="414" y="224" style="fill:#f0a83c;font-size:11px">M</text>
</g>
<g class="g3">
<rect x="678" y="107" width="26" height="26" rx="3" fill="#9b8cf2"/><text class="k" x="686" y="124">P</text>
<rect x="406" y="157" width="26" height="26" rx="3" fill="none" stroke="#9b8cf2" stroke-width="2"/><text class="t" x="414" y="174" style="fill:#9b8cf2;font-size:11px">M</text>
<rect x="542" y="207" width="26" height="26" rx="3" fill="none" stroke="#9b8cf2" stroke-width="2"/><text class="t" x="550" y="224" style="fill:#9b8cf2;font-size:11px">M</text>
</g>
<g class="g4">
<rect x="406" y="257" width="26" height="26" rx="3" fill="#ef7aa6"/><text class="k" x="414" y="274">P</text>
<rect x="572" y="257" width="26" height="26" rx="3" fill="none" stroke="#ef7aa6" stroke-width="2"/><text class="t" x="580" y="274" style="fill:#ef7aa6;font-size:11px">M</text>
<rect x="708" y="257" width="26" height="26" rx="3" fill="none" stroke="#ef7aa6" stroke-width="2"/><text class="t" x="716" y="274" style="fill:#ef7aa6;font-size:11px">M</text>
</g>
<text class="s" x="20" y="350">P = primary · M = mirror · copies of one extent never share a storage server</text>
</svg>
</div>
<figcaption>Each 8 MB extent of the file gets a primary and mirror copies, and every copy lands on a different storage server in the pool.</figcaption>
</figure>



<h3 class="wp-block-heading">Where redundancy lives now</h3>



<p class="wp-block-paragraph">Redundancy and content type belong to the file, and that took me a moment to accept after years of NORMAL and HIGH disk groups. Each file type has a template with media type, redundancy and content type (DATA or RECO). The database tells Exascale what kind of file it&#8217;s creating, and Exascale applies the matching template. You don&#8217;t need separate vaults for data and recovery files. Exascale still keeps data and recovery extents on different disks, and it never puts a mirror on the same storage server as its primary.</p>



<h2 class="wp-block-heading">How a read or write travels</h2>



<p class="wp-block-paragraph">Exascale keeps an extent map that records where the primary and mirror copies of each file extent live. Every database server and every instance caches that map. When the database needs a block, it looks up the extent in its local cache and sends the I/O over RDMA to the storage server that holds it, with no broker in between.</p>



<p class="wp-block-paragraph">Management goes a different way. Exascale RESTful Services (ERS) is the endpoint for every management operation, such as creating a vault, changing a quota or taking a snapshot. ERS never handles file I/O.</p>



<p class="wp-block-paragraph">If the map is stale, for example after you add a storage server, the storage server rejects the I/O. The client refreshes its map and retries, and the database carries on.</p>



<figure class="exs-fig">
<div class="exs-box">
<svg class="exs2" viewBox="0 0 800 350" role="img" aria-label="The database instance reads using its cached extent map and goes straight to the storage server over RDMA. Management requests go through ERS, which carries no file I/O. When the map is stale the storage server rejects the I/O, the client refreshes the map and retries on the right server.">
<text class="h" x="20" y="28">Data path vs. control path</text>
<rect x="324" y="52" width="170" height="52" rx="6" fill="#152331" stroke="#f0a83c" stroke-width="1.5"/>
<text class="t" x="338" y="74" style="fill:#f0a83c">ERS</text>
<text class="s" x="338" y="92">management endpoint</text>
<rect class="bx" x="20" y="120" width="186" height="130" rx="6"/>
<text class="t" x="34" y="144">DB instance</text>
<text class="s" x="34" y="168">extent map (cached)</text>
<rect x="32" y="178" width="162" height="26" rx="3" fill="#0f1a24" stroke="#2c3e4f"/>
<text class="s" x="40" y="195">E7 → cell02</text>
<rect x="32" y="210" width="162" height="26" rx="3" fill="#0f1a24" stroke="#2c3e4f"/>
<text class="s mo" x="40" y="227" style="opacity:0">E9 → cell01 (stale)</text>
<text class="s mn" x="40" y="227" style="fill:#36c2b4">E9 → cell03</text>
<rect class="bx" x="600" y="64" width="170" height="52" rx="6"/><text class="t" x="614" y="94">cell01</text>
<rect class="bx" x="600" y="154" width="170" height="52" rx="6"/><text class="t" x="614" y="184">cell02</text>
<rect class="bx" x="600" y="244" width="170" height="52" rx="6"/><text class="t" x="614" y="274">cell03</text>
<path d="M206 180 L600 90 M206 180 L600 180 M206 180 L600 270" stroke="#36c2b4" stroke-opacity=".45" stroke-width="1.5" fill="none"/>
<text class="s" x="300" y="200" style="fill:#36c2b4">RDMA I/O, direct to the cell</text>
<path d="M120 120 L324 78 M494 78 L600 90 M494 78 L600 180 M494 78 L600 270" stroke="#f0a83c" stroke-opacity=".55" stroke-width="1.3" stroke-dasharray="5 4" fill="none"/>
<circle class="pa" cx="206" cy="180" r="7" fill="#36c2b4" style="opacity:0"/>
<circle class="tb" cx="110" cy="120" r="7" fill="#f0a83c" style="opacity:0"/>
<circle class="pc" cx="206" cy="180" r="7" fill="#36c2b4" style="opacity:0"/>
<circle class="pd2" cx="206" cy="180" r="7" fill="#36c2b4" style="opacity:0"/>
<g class="rx" style="opacity:0"><circle cx="590" cy="90" r="13" fill="#f0604d"/><path d="M584 84l12 12M596 84l-12 12" stroke="#0f1a24" stroke-width="3"/><text class="t" x="604" y="58" style="fill:#f0604d;font-size:12px">rejected: map is stale</text></g>
<text class="t c1" x="20" y="326" style="opacity:0">1. Read E7: look it up in the local map, go straight to cell02.</text>
<text class="t c2" x="20" y="326" style="opacity:0">2. Create a snapshot: the request goes through ERS. No file I/O passes here.</text>
<text class="t c3" x="20" y="326" style="opacity:0">3. Stale map: cell01 rejects, the client refreshes the map, retries on cell03.</text>
<text class="t c0" x="20" y="326">Teal: database I/O, direct to the storage servers. Amber: management, through ERS.</text>
</svg>
</div>
<figcaption>Database I/O goes straight from the instance to the storage server. ERS only takes management requests.</figcaption>
</figure>



<h2 class="wp-block-heading">Snapshots and thin clones without a test master</h2>



<p class="wp-block-paragraph">On classic Exadata, sparse clones depend on a read-only parent. Exascale uses redirect-on-write.</p>



<p class="wp-block-paragraph">With copy-on-write, the first change to a block forces a copy of the original before the write, which puts an extra read and an extra write on the hot path. With redirect-on-write, the new version goes to a new location and the clone&#8217;s metadata points to it. Unchanged blocks stay shared with the parent.</p>



<figure class="exs-fig">
<div class="exs-box">
<svg class="exs3" viewBox="0 0 800 340" role="img" aria-label="A parent PDB and its thin clone both point to the same five blocks. When the clone updates block 3, the new version is written to a new location and only the clone's pointer moves to it. The parent keeps reading the original block 3.">
<text class="h" x="20" y="28">Redirect-on-write thin clone</text>
<text class="t" x="20" y="72" style="fill:#36c2b4">prodpdb</text><text class="s" x="20" y="88">parent map</text>
<text class="t" x="20" y="262" style="fill:#9b8cf2">devpdb</text><text class="s" x="20" y="278">thin clone map</text>
<text class="s" x="20" y="168">shared extents</text>
<g>
<rect class="bx" x="160" y="56" width="70" height="34" rx="4"/><text class="t" x="180" y="78">b1</text>
<rect class="bx" x="250" y="56" width="70" height="34" rx="4"/><text class="t" x="270" y="78">b2</text>
<rect class="bx" x="340" y="56" width="70" height="34" rx="4" style="stroke:#36c2b4"/><text class="t" x="360" y="78">b3</text>
<rect class="bx" x="430" y="56" width="70" height="34" rx="4"/><text class="t" x="450" y="78">b4</text>
<rect class="bx" x="520" y="56" width="70" height="34" rx="4"/><text class="t" x="540" y="78">b5</text>
</g>
<g>
<rect class="bx" x="160" y="246" width="70" height="34" rx="4"/><text class="t" x="180" y="268">b1</text>
<rect class="bx" x="250" y="246" width="70" height="34" rx="4"/><text class="t" x="270" y="268">b2</text>
<rect class="bx" x="340" y="246" width="70" height="34" rx="4" style="stroke:#9b8cf2"/><text class="t" x="360" y="268">b3</text>
<rect class="bx" x="430" y="246" width="70" height="34" rx="4"/><text class="t" x="450" y="268">b4</text>
<rect class="bx" x="520" y="246" width="70" height="34" rx="4"/><text class="t" x="540" y="268">b5</text>
</g>
<g>
<rect x="160" y="150" width="70" height="36" rx="4" fill="#1a2b3b" stroke="#5f7c96"/><text class="t" x="180" y="173">B1</text>
<rect x="250" y="150" width="70" height="36" rx="4" fill="#1a2b3b" stroke="#5f7c96"/><text class="t" x="270" y="173">B2</text>
<rect x="340" y="150" width="70" height="36" rx="4" fill="#1a2b3b" stroke="#36c2b4"/><text class="t" x="360" y="173">B3</text>
<rect x="430" y="150" width="70" height="36" rx="4" fill="#1a2b3b" stroke="#5f7c96"/><text class="t" x="450" y="173">B4</text>
<rect x="520" y="150" width="70" height="36" rx="4" fill="#1a2b3b" stroke="#5f7c96"/><text class="t" x="540" y="173">B5</text>
</g>
<path d="M195 90V150M285 90V150M375 90V150M465 90V150M555 90V150" stroke="#36c2b4" stroke-opacity=".7" stroke-width="1.5"/>
<path d="M195 246V186M285 246V186M465 246V186M555 246V186" stroke="#9b8cf2" stroke-opacity=".7" stroke-width="1.5"/>
<path class="ol" d="M375 246V186" stroke="#9b8cf2" stroke-width="1.5" style="opacity:.08"/>
<g class="nb">
<rect x="650" y="150" width="80" height="36" rx="4" fill="#9b8cf2"/><text class="k" x="668" y="173" style="font-size:13px">B3′</text>
<text class="s" x="640" y="140">new location</text>
</g>
<path class="nl" d="M375 246 C375 215, 690 230, 690 186" stroke="#9b8cf2" stroke-width="2" fill="none"/>
<g class="w" style="opacity:0"><rect x="334" y="240" width="82" height="46" rx="6" fill="none" stroke="#f0a83c" stroke-width="3"/><text class="t" x="430" y="308" style="fill:#f0a83c">UPDATE in devpdb touches block 3</text></g>
<text class="t d1" x="20" y="328" style="opacity:0">Clone created: no data copied. Both maps point to the same extents.</text>
<text class="t d2" x="20" y="328" style="opacity:0">devpdb changes block 3&#8230;</text>
<text class="t d3" x="20" y="328" style="opacity:0">&#8230;the new version goes to a new location (one write). prodpdb still reads B3.</text>
<text class="t d0" x="20" y="328">After a write, only the clone&#8217;s pointer moves to B3′. prodpdb still reads the original B3.</text>
</svg>
</div>
<figcaption>Copy-on-write would read B3, copy it and then write. Redirect-on-write writes the new version once and moves a pointer.</figcaption>
</figure>



<p class="wp-block-paragraph">So you can create a thin clone of a live read/write database or PDB, or of an existing snapshot, and there&#8217;s no test master to maintain. Clones can be thin or full copies. For dev and test, this is the feature I&#8217;d show a customer first.</p>



<h3 class="wp-block-heading">Thin clone SQL on Exadata Exascale</h3>



<p class="wp-block-paragraph">The SQL is the PDB snapshot copy syntax you may already know. When the PDB&#8217;s files live in an Exascale vault, the database uses native Exascale cloning for it, so the clone is thin, sits in the same vault as the source and is created almost instantly whatever the size of the data files.</p>



<pre class="wp-block-code"><code>-- thin clone of a running PDB
CREATE PLUGGABLE DATABASE devpdb FROM prodpdb SNAPSHOT COPY;
ALTER PLUGGABLE DATABASE devpdb OPEN INSTANCES=ALL;

-- read-only point-in-time snapshot, and a clone made from it later
ALTER PLUGGABLE DATABASE prodpdb SNAPSHOT prod_0800;
CREATE PLUGGABLE DATABASE qapdb FROM prodpdb USING SNAPSHOT prod_0800 SNAPSHOT COPY;</code></pre>



<p class="wp-block-paragraph">Leave out <code>SNAPSHOT COPY</code> and you get a full, block-for-block copy.</p>



<p class="wp-block-paragraph">One catch if the source CDB has a Data Guard standby: the standby gets a full copy of the clone&#8217;s data files, not a thin one. If the clone is only for dev or test, add <code>STANDBYS=NONE</code> so it isn&#8217;t created on the standby.</p>



<h2 class="wp-block-heading">The Exadata Exascale services</h2>



<p class="wp-block-paragraph">Exascale adds a handful of processes. You won&#8217;t manage most of them directly, but you&#8217;ll see them in logs and in <code>escli</code> output.</p>



<figure class="wp-block-table"><table><thead><tr><th>Service</th><th>Runs on</th><th>What it does</th></tr></thead><tbody><tr><td>EGS</td><td>Storage servers, 5 instances</td><td>Exascale Global Services: cluster membership, storage pool management, identity. Uses Raft consensus.</td></tr><tr><td>ERS</td><td>Storage servers</td><td>Exascale RESTful Services: management endpoint. No file I/O.</td></tr><tr><td>SYSEDS / USREDS</td><td>Storage servers</td><td>Vault metadata and file metadata, including clone and snapshot metadata.</td></tr><tr><td>BSM / BSW</td><td>Storage servers</td><td>Block store manager and workers for volumes and volume snapshots.</td></tr><tr><td>IFD</td><td>Every storage server</td><td>Instant failure detection.</td></tr><tr><td>ESNP</td><td>Every database server or guest VM</td><td>Gives cluster state to Grid Infrastructure and the database.</td></tr><tr><td>EDV</td><td>Database servers that use volumes</td><td>Exposes Exascale volumes as block devices.</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">With fewer than five storage servers, some EGS instances run on the database servers so the cluster still has five.</p>



<p class="wp-block-paragraph">The command-line tool is <code>escli</code>, installed on database and storage servers since 24.1. It works alongside CellCLI and DBMCLI, which you still use. In OCI you&#8217;ll rarely need it, because the console and the REST APIs cover the same operations.</p>



<h2 class="wp-block-heading">19c and 26ai work differently</h2>



<p class="wp-block-paragraph">If you&#8217;re planning a migration, start here.</p>



<ul class="wp-block-list">
<li>Oracle AI Database 26ai talks to Exascale natively. Files live directly in the vault, and there is no ASM.</li>



<li>Oracle Database 19c uses Exascale block storage instead: Exascale Direct Volumes (EDV) presented to the VM, with ASM on top and the usual DATA, RECO and LOG disk groups.</li>
</ul>



<p class="wp-block-paragraph">In ExaDB-XS a VM cluster runs one version or the other, and a 26ai cluster can&#8217;t share a vault with a 19c cluster. Storage scaling differs as well. On 26ai you grow the vault online with one command. On 19c you grow the vault and then adjust the DATA and RECO allocations for each container database.</p>



<h2 class="wp-block-heading">Exadata Exascale in the cloud: ExaDB-XS</h2>



<p class="wp-block-paragraph">ExaDB-XS gives you Exadata without renting a whole infrastructure. Oracle runs the physical servers in a shared model, and you pay for compute and vault storage. From the current documentation:</p>



<ul class="wp-block-list">
<li>A VM needs at least 8 ECPUs and scales in steps of 4.</li>



<li>You can reserve ECPUs so a later scale-up needs no restart. You license only the enabled ECPUs.</li>



<li>Each VM is billed for at least 48 hours, then per second. Extra ECPUs are billed per second with a 1-minute minimum.</li>



<li>VM file systems live on shared Exascale storage, so Oracle can move a VM to another server for maintenance or after a failure.</li>
</ul>



<p class="wp-block-paragraph">Recent updates added single-node VM clusters without a RAC license, scaling enabled ECPUs to zero, automatic failover with Data Guard and Oracle-managed database software updates. Oracle revises the service limits from time to time, so check the limits page before you size anything.</p>



<h2 class="wp-block-heading">Exadata Exascale field notes</h2>



<ul class="wp-block-list">
<li>Plan vaults around security and resource boundaries, such as a business unit or an environment. Splitting them by file type, the way we split DATA and RECO, buys you nothing.</li>



<li>Before you promise Exascale features to a 19c application, check what works on EDV and ASM. The native vault features need 26ai.</li>



<li>Your monitoring scripts probably query ASM views. On 26ai those views won&#8217;t show vault usage, so plan to use <code>escli</code> or OCI metrics.</li>



<li>Thin clones are cheap to create, and the changed blocks they collect keep growing. Put a cleanup policy in place from the start.</li>
</ul>



<h2 class="wp-block-heading">Wrapping up</h2>



<p class="wp-block-paragraph">With Exadata Exascale, the database still reads straight from the cells, as it always has on Exadata. What moved is ownership: management now lives on the storage servers, and storage is shared and sliced into vaults instead of belonging to one cluster.</p>



<p class="wp-block-paragraph">In the next posts I want to get hands-on: creating a vault, cloning a PDB with redirect-on-write and comparing the I/O path with a classic ASM deployment. If you already run Exascale, tell me what you ran into. I&#8217;d like to include real field notes. Until then, the <a href="https://www.dbadutra.com/category/engineered-systems/">Engineered Systems</a> section of the blog has my older notes on Exadata and ODA.</p>



<h2 class="wp-block-heading">References</h2>



<ul class="wp-block-list">
<li><a href="https://docs.oracle.com/en/engineered-systems/exadata-database-machine/exscl/exascale-services.html">Oracle Exadata Exascale: Exascale Services</a></li>



<li><a href="https://docs.oracle.com/en/engineered-systems/exadata-database-exascale/exdxs/overview-exadb-xs-service.html">Oracle Exadata Database Service on Exascale Infrastructure: Overview</a></li>



<li><a href="https://docs.oracle.com/en-us/iaas/exadb-xs/doc/exa-whats-new.html">Oracle Exadata Database Service on Exascale Infrastructure: What&#8217;s New</a></li>



<li><a href="https://docs.oracle.com/en/engineered-systems/exadata-database-machine/exscl/using-edv.html">Using Exascale Block Storage with EDV</a></li>
</ul>
<p>O post <a href="https://www.dbadutra.com/2026/10/exadata-exascale-storage-explained/">Exascale for the ASM generation: how Exadata storage works now</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2026/10/exadata-exascale-storage-explained/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6298</post-id>	</item>
		<item>
		<title>ACE Alumni &#8211; Fim de um ciclo</title>
		<link>https://www.dbadutra.com/2024/08/ace-alumni-fim-de-um-ciclo/</link>
					<comments>https://www.dbadutra.com/2024/08/ace-alumni-fim-de-um-ciclo/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Mon, 12 Aug 2024 23:43:30 +0000</pubDate>
				<category><![CDATA[Sem categoria]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6261</guid>

					<description><![CDATA[<p>Olá a todos, Como muitos ainda não devem saber, entrei para a Oracle como Strategic Customer Service Manager e me tornei um ACE Alumni. O Programa…</p>
<p>O post <a href="https://www.dbadutra.com/2024/08/ace-alumni-fim-de-um-ciclo/">ACE Alumni &#8211; Fim de um ciclo</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading"></h3>



<p class="wp-block-paragraph">Olá a todos, <br><br>Como muitos ainda não devem saber, entrei para a Oracle como Strategic Customer Service Manager e me tornei um ACE Alumni. <br><br>O Programa Oracle ACE é destinado a Clientes e Parceiros, não a funcionários. <br><br>Fiquei no programa por 6 anos e vou continuar dando suporte ao programa, agora do lado da Oracle. <br><br>Sou muito grato pelo programa, especialmente para <a href="https://www.linkedin.com/in/jnicholson2?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAHNY1ABkkx5lJMxbLwAg-ENR7QnuXmAKbM">Jennifer Nicholson</a>, <a href="https://www.linkedin.com/in/oanapaduraru?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAQwD08BEcmASLWkvrAHxR1iRxC_JT7VxxY">Oana-Aurelia Bonu</a> e <a href="https://www.linkedin.com/in/cassandra-call?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAABPjf3kBDB4jy2hd0OLervXWXap2D6tLoks">Cassandra Call</a>, que o administra com paixão e me apoia todos esses anos.<br><br></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/08/image.png"><img fetchpriority="high" decoding="async" width="320" height="316" src="https://www.dbadutra.com/wp-content/uploads/2024/08/image.png" alt="" class="wp-image-6262" srcset="https://www.dbadutra.com/wp-content/uploads/2024/08/image.png 320w, https://www.dbadutra.com/wp-content/uploads/2024/08/image-300x296.png 300w" sizes="(max-width: 320px) 100vw, 320px" /></a></figure>
</div>


<p class="wp-block-paragraph">Continuarei escrevendo blogs e ajudando dentro do possível a comunidade como sempre foi desde 2010.<br><br>Obrigado a todos pelo carinho e respeito que sempre a comunidade e o programa teve comigo. <br><br>Até logo <br>Andre Ontalba<br></p>
<p>O post <a href="https://www.dbadutra.com/2024/08/ace-alumni-fim-de-um-ciclo/">ACE Alumni &#8211; Fim de um ciclo</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/08/ace-alumni-fim-de-um-ciclo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6261</post-id>	</item>
		<item>
		<title>Network Path Analyzer &#8211; OCI</title>
		<link>https://www.dbadutra.com/2024/02/network-path-analyzer-oci/</link>
					<comments>https://www.dbadutra.com/2024/02/network-path-analyzer-oci/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Wed, 14 Feb 2024 23:44:39 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[OCI]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6251</guid>

					<description><![CDATA[<p>Today, I will explain a little about this tool that helps us identify communication problems regarding networks in OCI. What is Network Path Analyzer? Network Path…</p>
<p>O post <a href="https://www.dbadutra.com/2024/02/network-path-analyzer-oci/">Network Path Analyzer &#8211; OCI</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today, I will explain a little about this tool that helps us identify communication problems regarding networks in OCI.</p>



<p class="wp-block-paragraph"><strong>What is Network Path Analyzer?</strong></p>



<p class="wp-block-paragraph">Network Path Analyzer is a network reachability analysis tool based on real-time network configuration. Its primary data input is the network routing and security configuration in a customer tenancy, augmented with key network runtime state data, such as the status of a load balancer backend set or the state of a FastConnect virtual circuit.</p>



<p class="wp-block-paragraph">Network Path Analyzer answers the following questions that are essential for the cloud network operations team to obtain an accurate and deep understanding of endpoint reachability in their cloud networks:</p>



<ul class="wp-block-list">
<li>If they can’t, why? What is missing?</li>



<li>If they can, how? Over which routing paths, using which security policies?</li>
</ul>



<p class="wp-block-paragraph">Finding the answers to these questions in a complex network can be labor-intensive and time-consuming. It involves analyzing the virtual network topologies, carefully walking through multiple route tables, and scrutinizing different network security groups (NSGs) or security lists along the multi-hop network paths. If done manually, it can be error-prone.</p>



<p class="wp-block-paragraph">Network Path Analyzer is a great network troubleshooting tool. Additionally, since it&nbsp;doesn’t use or need any traffic along the network paths because it operates solely on the configuration and runtime state data, it is also an effective tool for proactive configuration validation.</p>



<p class="wp-block-paragraph"><strong>Benefits of Network Path Analyzer</strong></p>



<p class="wp-block-paragraph">Armed with Network Path Analyzer, you can realize the following benefits:</p>



<ul class="wp-block-list">
<li>Troubleshoot reachability issues caused by misconfiguration much faster, significantly reducing the Mean Time to Resolution (MTTR) for this type of outage</li>



<li>Proactively verify and validate the network routing and security policy configuration for your reachability intents before even starting to send application traffic.</li>



<li>A tool to perform on-demand validation of the logical network paths to match your intent</li>
</ul>



<p class="wp-block-paragraph"><strong>How to use Network Path Analyzer</strong></p>



<p class="wp-block-paragraph">Network Path Analyzer is directly available under Networking on the Oracle Cloud Console. You only need to create a path analysis and run it. An API is available to programmatically create, manage, and run your path analyses.</p>



<p class="wp-block-paragraph">When creating a path analysis, specify the source and destination endpoints, the network protocol, and the source and the destination ports. For endpoints, you can select an IP address or an OCI resource. The viable OCI resource options include an IP address from a VCN subnet, a compute instance virtual network interface card (VNIC), an application load balancer, or a network load balancer.</p>



<p class="wp-block-paragraph">In my simulation, I am checking bi-directional communication between 2 compute instances.</p>



<p class="wp-block-paragraph">Select the &#8220;Network Path Analyzer&#8221; option in the Network Command Center</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-9.png"><img decoding="async" width="975" height="311" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-9.png" alt="" class="wp-image-6252" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-9.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-9-300x96.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-9-768x245.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Click &#8220;Create Path Analysis&#8221;</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-10.png"><img decoding="async" width="975" height="399" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-10.png" alt="" class="wp-image-6253" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-10.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-10-300x123.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-10-768x314.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Now fill in the Source and Destination information.</p>



<p class="wp-block-paragraph">In my case I am testing communication between 2 compute instances (VM) via port 22 (SSH).</p>



<figure class="wp-block-image size-full is-resized"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-11.png"><img loading="lazy" decoding="async" width="837" height="331" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-11.png" alt="" class="wp-image-6254" style="width:840px;height:auto" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-11.png 837w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-11-300x119.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-11-768x304.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></a></figure>



<p class="wp-block-paragraph">After filling in the information, perform the analysis.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-12.png"><img loading="lazy" decoding="async" width="855" height="378" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-12.png" alt="" class="wp-image-6255" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-12.png 855w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-12-300x133.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-12-768x340.png 768w" sizes="auto, (max-width: 855px) 100vw, 855px" /></a></figure>



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



<p class="wp-block-paragraph">After a few minutes, a communication report will be displayed where you can identify if it is working or if there is some type of problem.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-13.png"><img loading="lazy" decoding="async" width="975" height="401" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-13.png" alt="" class="wp-image-6256" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-13.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-13-300x123.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-13-768x316.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-14.png"><img loading="lazy" decoding="async" width="975" height="432" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-14.png" alt="" class="wp-image-6257" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-14.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-14-300x133.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-14-768x340.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Network Path Analyzer can assist with your troubleshooting process for the following reachability-related scenarios:</p>



<ul class="wp-block-list">
<li>Virtual machines (VMs) in your multi-VCN applications can’t communicate with each other. You want to check the configured path.</li>



<li>Your frontend web server in a multitier application can’t reach the load balancer VIP of the application tier.</li>



<li>Your load balancer can’t reach some of the backends.</li>



<li>An on-premises endpoint in your hybrid cloud application can’t reach an OCI instance.</li>



<li>Your on-premises site can’t access a cloud application hosted by your Oracle instances.</li>
</ul>



<p class="wp-block-paragraph">Network Path Analyzer is a tool to assist in troubleshooting reachability issues by quickly identifying misconfiguration and reducing the MTTR caused by configuration issues. It’s also an effective tool for customers to proactively verify their network configuration against their reachability intents so that they can proactively catch and correct misconfiguration and reduce outages.</p>



<p class="wp-block-paragraph">I hope this article can help you</p>



<p class="wp-block-paragraph">See you in the next article.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>
<p>O post <a href="https://www.dbadutra.com/2024/02/network-path-analyzer-oci/">Network Path Analyzer &#8211; OCI</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/02/network-path-analyzer-oci/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6251</post-id>	</item>
		<item>
		<title>Object Storage &#8211; Cross Region Replication</title>
		<link>https://www.dbadutra.com/2024/02/object-storage-cross-region-replication/</link>
					<comments>https://www.dbadutra.com/2024/02/object-storage-cross-region-replication/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Fri, 09 Feb 2024 20:39:57 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Object Storage]]></category>
		<category><![CDATA[Replication]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6238</guid>

					<description><![CDATA[<p>The Object Storage&#160;is an internet-scale, high-performance storage platform that offers reliable and cost-efficient data durability. The Object Storage service can store an unlimited amount of unstructured…</p>
<p>O post <a href="https://www.dbadutra.com/2024/02/object-storage-cross-region-replication/">Object Storage &#8211; Cross Region Replication</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>The Object Storage</strong>&nbsp;is an internet-scale, high-performance storage platform that offers reliable and cost-efficient data durability. The Object Storage service can store an unlimited amount of unstructured data of any content type, including analytic data and rich content, like images and videos.</p>



<p class="wp-block-paragraph">Object Storage is a regional cloud service. Buckets are logical containers created in a tenancy inside a region in which customer data is stored as objects.</p>



<p class="wp-block-paragraph">You can store a copy of all objects from one bucket in another bucket located inside a different region for redundancy. This copy can help you recover from a disaster that could affect an entire cloud region. Cross-region object replication provides protection from a regional outage.</p>



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



<p class="wp-block-paragraph"><strong>Configure the IAM policies</strong></p>



<ol class="wp-block-list">
<li>Log in to the OCI console and click&nbsp;<strong>Identity</strong>, and then click&nbsp;<strong>Policies</strong>.</li>



<li>Create a new policy and add the following statements:</li>
</ol>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-2.png"><img loading="lazy" decoding="async" width="975" height="301" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-2.png" alt="" class="wp-image-6240" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-2.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-2-300x93.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-2-768x237.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<pre class="wp-block-preformatted">Allow group 'OracleIdentityCloudService'/'OCI_Administrators' to manage buckets in tenancy	
Allow group 'OracleIdentityCloudService'/'OCI_Administrators' to manage objects in tenancy	
Allow service objectstorage-us-ashburn-1 to manage object-family in tenancy	
Allow service objectstorage-us-chicago-1 to manage object-family in tenancy</pre>



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



<p class="wp-block-paragraph"><strong>Configure Object Storage cross-region replication</strong></p>



<ol class="wp-block-list">
<li>Go to the source bucket and click&nbsp;<strong>Create Policy</strong>&nbsp;as shown in the following image.</li>
</ol>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-3.png"><img loading="lazy" decoding="async" width="975" height="426" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-3.png" alt="" class="wp-image-6241" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-3.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-3-300x131.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-3-768x336.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph"><strong>Note</strong>: The destination bucket “Replication_Blog” has to be created in the destination region us-chicago before setting up replication. Setup replication policy on source bucket by selecting the destination region and bucket to replicate to and then click&nbsp;<strong>Create</strong>.</p>



<p class="wp-block-paragraph">Select the <strong>Destination Region</strong> and <strong>Destination Bucket</strong> for replicating objects and click <strong>Create</strong>.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-4.png"><img loading="lazy" decoding="async" width="975" height="463" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-4.png" alt="" class="wp-image-6242" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-4.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-4-300x142.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-4-768x365.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<p class="wp-block-paragraph">In the <strong>Bucket Information</strong> tab, the <strong>Replication</strong> field displays <strong>Enabled</strong> for the source bucket in <strong>US East (Ashburn)</strong> region.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-5.png"><img loading="lazy" decoding="async" width="975" height="397" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-5.png" alt="" class="wp-image-6243" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-5.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-5-300x122.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-5-768x313.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">In the <strong>US Midwest (Chicago)</strong> region, go to the <strong>Bucket Information</strong> tab and verify if the <strong>Replication</strong> is <strong>Enabled</strong> on the destination bucket as well :</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-6.png"><img loading="lazy" decoding="async" width="975" height="426" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-6.png" alt="" class="wp-image-6244" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-6.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-6-300x131.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-6-768x336.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Navigate to the destination region and bucket and confirm that the objects uploaded to the source bucket have been replicated in the destination bucket in US Midwest (Chicago) region. </p>



<figure class="wp-block-image size-full is-resized"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-7.png"><img loading="lazy" decoding="async" width="975" height="346" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-7.png" alt="" class="wp-image-6245" style="width:840px;height:auto" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-7.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-7-300x106.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-7-768x273.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image-8.png"><img loading="lazy" decoding="async" width="975" height="403" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image-8.png" alt="" class="wp-image-6246" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image-8.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-8-300x124.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-8-768x317.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">I hope this article can help you</p>



<p class="wp-block-paragraph">See you in the next article.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>



<p class="wp-block-paragraph"></p>
<p>O post <a href="https://www.dbadutra.com/2024/02/object-storage-cross-region-replication/">Object Storage &#8211; Cross Region Replication</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/02/object-storage-cross-region-replication/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6238</post-id>	</item>
		<item>
		<title>Oracle Globally Distributed Database &#8211; Overview</title>
		<link>https://www.dbadutra.com/2024/02/oracle-globally-distributed-database/</link>
					<comments>https://www.dbadutra.com/2024/02/oracle-globally-distributed-database/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Tue, 06 Feb 2024 21:01:15 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle Globally Distributed Database]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6232</guid>

					<description><![CDATA[<p>Today, I will start a series of blogs about Oracle&#8217;s Globally Distributed Database, in the first article, we will give a brief overview of Oracle&#8217;s Globally…</p>
<p>O post <a href="https://www.dbadutra.com/2024/02/oracle-globally-distributed-database/">Oracle Globally Distributed Database &#8211; Overview</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today, I will start a series of blogs about Oracle&#8217;s Globally Distributed Database, in the first article, we will give a brief overview of Oracle&#8217;s Globally Distributed Database.</p>



<p class="wp-block-paragraph"><strong>What is a Globally Distributed Database</strong></p>



<p class="wp-block-paragraph">A globally distributed database is a method of partitioning data to distribute the computational and storage workload, which helps achieve hyperscale computing.</p>



<p class="wp-block-paragraph">Companies often achieve hyperscale computing using database sharding, in which they distribute segments of a data set—a shard—across lots of databases on many different computers.</p>



<p class="wp-block-paragraph">Sharding uses a&nbsp;shared-nothing&nbsp;architecture in which shards share no hardware or software. All the shards together make up a single logical database, called a&nbsp;sharded database.</p>



<p class="wp-block-paragraph">From the application&#8217;s perspective, a sharded database looks like a single database: the number of shards and data distribution across those shards are completely transparent to database applications. From the perspective of a database administrator, a shared database consists of multiple databases that can be managed collectively.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://www.dbadutra.com/wp-content/uploads/2024/02/image.png"><img loading="lazy" decoding="async" width="626" height="293" src="https://www.dbadutra.com/wp-content/uploads/2024/02/image.png" alt="" class="wp-image-6233" style="width:624px;height:auto" srcset="https://www.dbadutra.com/wp-content/uploads/2024/02/image.png 626w, https://www.dbadutra.com/wp-content/uploads/2024/02/image-300x140.png 300w" sizes="auto, (max-width: 626px) 100vw, 626px" /></a></figure>
</div>


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



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



<h3 class="wp-block-heading">Oracle Globally Distributed Database</h3>



<h3 class="wp-block-heading">&nbsp;</h3>



<p class="wp-block-paragraph">Oracle Globally Distributed Database disperses segments of a data set across many databases (shards) onto different computers—on-premises or in the cloud. It enables globally distributed, linearly scalable, multimodel databases. It requires no specialized hardware or software. Oracle Globally Distributed Database does all this while rendering the strong consistency, full power of SQL, support for structured and unstructured data, and the Oracle Database ecosystem. It meets data sovereignty requirements and supports applications that require low latency and high availability.</p>



<ul class="wp-block-list">
<li>SQL language used for object creation, strict data consistency, complex joins, ACID transaction properties, distributed transactions, relational data store, security, encryption, robust performance optimizer, backup and recovery, and patching with Oracle Database</li>



<li>Oracle innovations and enterprise-level features, including Advanced Security, Automatic Storage Management (ASM), Advanced Compression, partitioning, high-performance storage engine, SMP scalability, Oracle RAC, Exadata, in-memory columnar, online redefinition, JSON document store, and so on</li>



<li>Sharding-aware Oracle Database tools, such as SQL Developer, Enterprise Manager Cloud Control, Recovery Manager (RMAN), and Data Pump, for sharded database application development and management</li>



<li>Programmatic interfaces, such as Java Database Connectivity (JDBC), Oracle Call Interface (OCI), Universal Connection Pool (UCP), Oracle Data Provider for .NET (ODP.NET), and PL/SQL, including extensions for sharded application development</li>



<li>Extreme availability with Oracle Data Guard and Oracle Active Data Guard. Other replication options include Raft replication, built into&nbsp;Oracle Globally Distributed Database.</li>



<li>Support for multi-model data like relational, text, and JSON</li>



<li>Existing life-cycle management and operational processes can be kept, leveraging in-house and worldwide Oracle database administrator skill sets</li>



<li>Enterprise-level support</li>



<li>Extreme scalability and availability of NoSQL databases</li>
</ul>



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



<h3 class="wp-block-heading">Benefits of Oracle Globally Distributed Database</h3>



<h3 class="wp-block-heading">&nbsp;</h3>



<p class="wp-block-paragraph">Oracle Globally Distributed Database&nbsp;provides linear scalability, complete fault isolation, and global data distribution for the most demanding applications.</p>



<p class="wp-block-paragraph">Key benefits of&nbsp;Oracle Globally Distributed Database&nbsp;include:</p>



<ul class="wp-block-list">
<li><strong>Linear Scalability</strong></li>
</ul>



<p class="wp-block-paragraph">The&nbsp;Oracle Globally Distributed Database&nbsp;shared–nothing architecture eliminates performance bottlenecks and provides unlimited scalability.&nbsp;Oracle Globally Distributed Database&nbsp;supports scaling up to 1000 shards.</p>



<ul class="wp-block-list">
<li><strong>Extreme Availability and Fault Isolation</strong></li>
</ul>



<p class="wp-block-paragraph">Single points of failure are eliminated because shards do not share resources such as software, CPU, memory, or storage devices. The failure or slow-down of one shard does not affect the performance or availability of other shards.</p>



<p class="wp-block-paragraph">Oracle MAA best practice solutions, such as Oracle Data Guard and Oracle RAC, protect shards.</p>



<p class="wp-block-paragraph">An unplanned outage or planned maintenance of a shard impacts only the availability of the data on that shard, so only the users of that small portion of the data are affected, for example, during a failover brownout.</p>



<ul class="wp-block-list">
<li><strong>Geographical Distribution of Data</strong></li>
</ul>



<p class="wp-block-paragraph">Oracle Globally Distributed Database enables you to deploy a global database, where a single logical database can be distributed over multiple geographies. This makes it possible to satisfy data privacy regulatory requirements (Data Sovereignty) and allows the storage of particular data close to its consumers (Data Proximity).</p>



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



<h3 class="wp-block-heading">New Features: Oracle Globally Distributed Database and 23c</h3>



<ul class="wp-block-list">
<li>Raft Replication</li>



<li>Directory-Based Sharding</li>



<li>Synchronous Duplicated Tables</li>



<li>Fine-Grained Refresh Rate Control For Duplicated Tables</li>



<li>Sharded Database Coordinated Backup and Restore Enhancements</li>



<li>Automatic Data Move on Sharding Key Update</li>



<li>Move Data Chunks Between Shardspaces</li>



<li>Global Partitioned Index Support on Subpartitions</li>



<li>PL/SQL Function Cross-Shard Query Support</li>



<li>Pre-Deployment Network Validation</li>



<li>New Partition Set Operations for Composite Sharding</li>



<li>Parallel Cross-Shard DML Support</li>



<li>Oracle Data Pump Adds Support for Sharding Metadata</li>



<li>Automatic Parallel Direct Path Load Using SQL*Loader</li>
</ul>



<p class="wp-block-paragraph">The Oracle Globally Distributed Database is set to revolutionize the world of distributed database operations.</p>



<p class="wp-block-paragraph">I hope you first enjoyed this great resource we have at OCI.</p>



<p class="wp-block-paragraph">In the next articles, we will provide more technical details about the product Oracle Globally Distributed Autonomous Database and also go into details of the new features with Oracle 23c.</p>



<p class="wp-block-paragraph">See you in the next article.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>
<p>O post <a href="https://www.dbadutra.com/2024/02/oracle-globally-distributed-database/">Oracle Globally Distributed Database &#8211; Overview</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/02/oracle-globally-distributed-database/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6232</post-id>	</item>
		<item>
		<title>Database Security Assessment Tool (DBSAT 3.0)</title>
		<link>https://www.dbadutra.com/2024/01/database-security-assessment-tool-dbsat-3-0/</link>
					<comments>https://www.dbadutra.com/2024/01/database-security-assessment-tool-dbsat-3-0/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Fri, 26 Jan 2024 21:12:07 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DBSAT]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6219</guid>

					<description><![CDATA[<p>The Oracle Database Security Assessment Tool (DBSAT), currently in version 3.1.0 (January 2024), is a command-line tool focused on detecting potential security vulnerabilities. Its greatest scope…</p>
<p>O post <a href="https://www.dbadutra.com/2024/01/database-security-assessment-tool-dbsat-3-0/">Database Security Assessment Tool (DBSAT 3.0)</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The Oracle Database Security Assessment Tool (DBSAT), currently in version 3.1.0 (January 2024), is a command-line tool focused on detecting potential security vulnerabilities. Its greatest scope occurs within the database but it also inspects operating system and network components (listener) in search of failures.</p>



<p class="wp-block-paragraph">The tool provides insight into the current status of users, roles, permissions, and security control policies to promote successful approaches to mitigating potential security risks.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s new in DBSAT 3.0 ?</strong></p>



<p class="wp-block-paragraph">New checks added in DBSAT 3.0 include the newly introduced Oracle Database 23c&nbsp;<a href="https://docs.oracle.com/en/database/oracle/oracle-database/23/dbseg/using-sql-firewall.html#GUID-B268CC0A-4FE5-4A50-9C20-FABC99B5C4AD" target="_blank" rel="noreferrer noopener">SQL Firewall</a>, auditing-related issues, sensitive data and transparent sensitive data protection, and a wealth of other checks necessary for any security-conscious organization. Remarks and recommendations are updated to make them clearer and actionable.</p>



<p class="wp-block-paragraph">Desupport notices list&nbsp;database&nbsp;features and parameters that are reaching or&nbsp;have&nbsp;reached their end-of-life so you can take proactive measures to phase out their usage. DBSAT Discoverer also added support for India&#8217;s permanent account number (PAN) and the unique identification (Aadhaar) number.</p>



<p class="wp-block-paragraph">From its beginning, DBSAT offered a distillation of decades of security experience, checking configuration issues that might introduce unnecessary risk. Until now, DBSAT clearly identified checks that were related to security frameworks like the DISA STIGs, Center for Internet Security (CIS) benchmarks, or data privacy regulations like GDPR. However, no checks clearly indicated that they were Oracle best practices. DBSAT 3.0 fixes that issue: Findings that are Oracle best practices are now clearly identified.</p>



<p class="wp-block-paragraph"><strong>When is DBSAT not enough?</strong></p>



<p class="wp-block-paragraph">DBSAT is a simple standalone tool that helps assess the security configuration of a single Oracle Database. What if you want to automate assessments across your fleet, track deviations from approved baselines, get alerts, keep history, and compare all in one interface? Use Oracle Data Safe or Oracle Audit Vault and Database Firewall to go the extra mile in assessments.</p>



<p class="wp-block-paragraph">The DBSAT is made up of two components:</p>



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



<p class="wp-block-paragraph"><strong>DBSAT Collector</strong>: Responsible for executing SQL queries and operating system commands that collect the data to be evaluated. The data is stored in a file that is later used by DBSAT Reporter in the analysis phase.</p>



<p class="wp-block-paragraph"><strong>DBSAT Reporter</strong>: Responsible for analyzing the collected data and generating reports of findings and recommendations in files of multiple formats such as HTML, Excel and Text.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-44.png"><img loading="lazy" decoding="async" width="637" height="352" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-44.png" alt="" class="wp-image-6220" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-44.png 637w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-44-300x166.png 300w" sizes="auto, (max-width: 637px) 100vw, 637px" /></a></figure>



<p class="wp-block-paragraph">Reference: <a href="https://docs.oracle.com/en/database/oracle/security-assessment-tool/3.0.0/satug/index.html#GUID-999F5696-F368-4E54-86DB-DEFC593B2042">https://docs.oracle.com/en/database/oracle/security-assessment-tool/3.0.0/satug/index.html#GUID-999F5696-F368-4E54-86DB-DEFC593B2042</a></p>



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



<p class="wp-block-paragraph">The main benefits of using DBSAT are:</p>



<ul class="wp-block-list">
<li>Quick identification of database security configuration errors;</li>



<li>Recommendations based on best security practices;</li>



<li>Reduction of the amplitude of an attack and exposure to risk.</li>
</ul>



<p class="wp-block-paragraph">DBSTAT works on Oracle database 11.2.0.4 and later versions including multitenant and cloud environments. The supported platforms are:</p>



<p class="wp-block-paragraph">Oracle DBSAT runs on:</p>



<ul class="wp-block-list">
<li>Solaris x64 and Solaris SPARC64</li>



<li>Linux x86-64 and Linux 64-bit Arm</li>



<li>Windows x64</li>



<li>HP-UX IA (64-bit)</li>



<li>IBM AIX (64-bit) and Linux on zSeries (64-bit)</li>
</ul>



<p class="wp-block-paragraph">Its use is very simple and consists of downloading the MOS file (My Oracle Support &#8211; Doc ID 2138254.1), unzipping it, and running the script to collect and report security vulnerabilities. DBSAT is a lightweight utility that does not hamper system performance while running.</p>



<p class="wp-block-paragraph">Running DBSAT Collector:</p>



<p class="wp-block-paragraph">For DBSTAT to collect all the data and perform a complete validation, it must be executed from the database server, as some operating system commands are executed to collect data that cannot be obtained from the database. DBSTAT must also be run with an operating system user that has read permission on ORACLE_HOME files and directories for data to be collected and processed properly.</p>



<p class="wp-block-paragraph">Collections in the database are carried out mainly on data dictionary views, so the user that will be provided in the connection string to the database must have sufficient permissions to select data from these views.</p>



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



<p class="wp-block-paragraph">To gather all necessary data, run the Oracle DBSAT Collector on the database server. The collector uses operating system commands to gather process and file system information that the database alone cannot provide. Besides, the Oracle DBSAT Collector must be run as an OS user with read permissions on files and directories under&nbsp;ORACLE_HOME&nbsp;using SQL*Plus (through Oracle Database or Instant Client) to collect and process file system data using OS commands.</p>



<p class="wp-block-paragraph">The Oracle DBSAT Collector collects most of its data by querying database views. It must connect to the database as a user with sufficient privileges to select from these views. Grant the DBSAT user the following privileges:</p>



<ul class="wp-block-list">
<li>CREATE SESSION</li>



<li>READ&nbsp;or&nbsp;SELECT&nbsp;on&nbsp;SYS.REGISTRY$HISTORY</li>



<li>Role&nbsp;SELECT_CATALOG_ROLE</li>



<li>Role&nbsp;DV_SECANALYST&nbsp;(if Database Vault is enabled or if Database Vault Operations Control is enabled)</li>



<li>Role&nbsp;AUDIT_VIEWER&nbsp;(12c&nbsp;and later)</li>



<li>Role&nbsp;CAPTURE_ADMIN&nbsp;(12c&nbsp;and later)</li>



<li>READ&nbsp;or&nbsp;SELECT&nbsp;on&nbsp;SYS.DBA_USERS_WITH_DEFPWD</li>



<li>READ&nbsp;on&nbsp;SYS.DBA_AUDIT_MGMT_CONFIG_PARAMS</li>



<li>READ&nbsp;on&nbsp;SYS.DBA_CREDENTIALS</li>



<li>EXECUTE&nbsp;on&nbsp;SYS.DBMS_SQL</li>
</ul>



<p class="wp-block-paragraph">Syntax for running the DBSAT Collector:</p>



<pre class="wp-block-preformatted">$ dbsat collect &lt;database_connect_string&gt; &lt;output_file&gt;</pre>



<pre class="wp-block-preformatted">[oracle@oracle-db-lab dbsat]$  ./dbsat collect "c##test1/test#123" /home/oracle/dbsat/collect/output_ORCL

Database Security Assessment Tool version 3.1 (Jan 2024)

This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.

Connecting to the target Oracle database...


SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 19 23:52:20 2024
Version 19.19.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

Setup complete.
SQL queries complete.
OS commands complete.
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
DBSAT Collector completed successfully.

Calling /u01/app/oracle/product/19.0.0/dbhome_1/bin/zip to encrypt output_ORCL.json...

Enter password:
Verify password:
  adding: output_ORCL.json (deflated 86%)
zip completed successfully.
[oracle@oracle-db-lab dbsat]
</pre>



<p class="wp-block-paragraph">By default, the file will be generated and compressed with a password. However, we can omit the need to enter a password by adding the -n parameter in the best collect call. However, considering information security, this is not recommended.</p>



<p class="wp-block-paragraph">Running DBSAT Reporter:</p>



<p class="wp-block-paragraph">The prerequisite for DBSAT Reporter is that Python 2.6 or higher is installed on the server where the report will be generated. By default it is already installed in most UNIX environments.</p>



<p class="wp-block-paragraph">To confirm the existence and version of Python run:</p>



<pre class="wp-block-preformatted">python -V </pre>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-45.png"><img loading="lazy" decoding="async" width="481" height="100" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-45.png" alt="" class="wp-image-6221" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-45.png 481w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-45-300x62.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-45-475x100.png 475w" sizes="auto, (max-width: 481px) 100vw, 481px" /></a></figure>



<p class="wp-block-paragraph">Syntax for running the DBSAT Report:</p>



<pre class="wp-block-preformatted">dbsat report [-a] [-n] [-x &lt;section&gt;] &lt;input_file&gt;

</pre>



<p class="wp-block-paragraph">The Reporter supports the following command-line options:</p>



<ul class="wp-block-list">
<li><em>-a</em></li>
</ul>



<p class="wp-block-paragraph">Runs the reports for all the database accounts.</p>



<ul class="wp-block-list">
<li><em>-n</em></li>
</ul>



<p class="wp-block-paragraph">Specifies no encryption for output.</p>



<ul class="wp-block-list">
<li><em>-g</em></li>
</ul>



<p class="wp-block-paragraph">Shows all grants including common grants in a pluggable database.</p>



<ul class="wp-block-list">
<li><em>-x</em></li>
</ul>



<p class="wp-block-paragraph">Excludes a section from the report.</p>



<p class="wp-block-paragraph">Valid sections are:</p>



<ul class="wp-block-list">
<li>USER&nbsp;:&nbsp;User Accounts</li>



<li>PRIV&nbsp;:&nbsp;Privileges and Roles</li>



<li>AUTH&nbsp;:&nbsp;Authorization Control</li>



<li>CRYPT&nbsp;:&nbsp;Encryption</li>



<li>ACCESS&nbsp;:Fine-Grained Access Control</li>



<li>AUDIT&nbsp;:&nbsp;Auditing</li>



<li>CONF&nbsp;:&nbsp;Database Configuration</li>



<li>NET&nbsp;:&nbsp;Network Configuration</li>



<li>OS&nbsp;:&nbsp;Operating System</li>
</ul>



<p class="wp-block-paragraph">To exclude multiple sections use a comma-separated list, for example:</p>



<p class="wp-block-paragraph">-x USER,PRIV</p>



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



<p class="wp-block-paragraph">-x USER&nbsp;-x PRIV</p>



<p class="wp-block-paragraph">Omitting this option will include all sections of the report.</p>



<p class="wp-block-paragraph">The same path name is used to generate the report files produced by the Reporter in HTML, Excel, JSON, and Text formats with the appropriate file extensions.</p>



<p class="wp-block-paragraph">Run the Reporter.</p>



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



<pre class="wp-block-preformatted">[oracle@oracle-lab dbsat]$ export JAVA_HOME=/u01/app/oracle/product/21.0.0/dbhome_1/jdk
[oracle@oracle-lab dbsat]$ export PATH=$JAVA_HOME/bin:$PATH
[oracle@oracle-lab dbsat]$ ./dbsat report -n output_ORCL

Database Security Assessment Tool version 3.1 (Jan 2024)

This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.

DBSAT Reporter ran successfully.

[oracle@oracle-lab dbsat]$

</pre>



<p class="wp-block-paragraph">DBSAT Reports:</p>



<p class="wp-block-paragraph">DBSAT produces output in various formats for various audiences and purposes. An HTML report, for example, provides detailed results in an easy-to-navigate format using links while a Spreadsheet report provides a high-level summary of each finding, as well as allowing you to manipulate columns by adding new ones for your purposes and prioritization.</p>



<p class="wp-block-paragraph">Example of a DBSAT summary in HTML:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-46.png"><img loading="lazy" decoding="async" width="975" height="519" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-46.png" alt="" class="wp-image-6222" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-46.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-46-300x160.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-46-768x409.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>
</div>


<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-48.png"><img loading="lazy" decoding="async" width="687" height="407" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-48.png" alt="" class="wp-image-6227" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-48.png 687w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-48-300x178.png 300w" sizes="auto, (max-width: 687px) 100vw, 687px" /></a></figure>



<p class="wp-block-paragraph">1. Rule title and unique ID:</p>



<p class="wp-block-paragraph">The ID has two parts: the prefix identifies the report section and the suffix identifies the specific rule.</p>



<p class="wp-block-paragraph">2. Status:</p>



<p class="wp-block-paragraph">Status can be used to define the prioritization of indicators, where a high-risk finding requires immediate action while a low-risk finding can be scheduled and adjusted with less priority.</p>



<ul class="wp-block-list">
<li>Pass: No errors or risks identified;</li>



<li>Evaluate: It is necessary to carry out a manual analysis to identify the degree of risk;</li>



<li>Some Risk: Low risk;</li>



<li>Significant Risk: Medium rich;</li>



<li>Severe Risk: High security risk;</li>



<li>Opportunity: Additional opportunities to improve security using additional technologies.</li>
</ul>



<p class="wp-block-paragraph">3. Summary:</p>



<p class="wp-block-paragraph">Discovery summary.</p>



<p class="wp-block-paragraph">4. Details:</p>



<p class="wp-block-paragraph">Provides detailed information to explain the discovery.</p>



<p class="wp-block-paragraph">5. Remarks:</p>



<p class="wp-block-paragraph">Explains the standard used to evaluate the results found. It can also explain recommended actions for remediation if a risk is reported.</p>



<p class="wp-block-paragraph">6. References:</p>



<p class="wp-block-paragraph">Lists the discovery based on the CIS Oracle Database Benchmark, DISA STIGs, Oracle Best Practices.</p>



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



<p class="wp-block-paragraph">I hope this article helps you.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">See you in the next article.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>
<p>O post <a href="https://www.dbadutra.com/2024/01/database-security-assessment-tool-dbsat-3-0/">Database Security Assessment Tool (DBSAT 3.0)</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/01/database-security-assessment-tool-dbsat-3-0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6219</post-id>	</item>
		<item>
		<title>Backup and restore your Oracle Home</title>
		<link>https://www.dbadutra.com/2024/01/backup-and-restore-your-oracle-home/</link>
					<comments>https://www.dbadutra.com/2024/01/backup-and-restore-your-oracle-home/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Fri, 19 Jan 2024 21:47:35 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Oracle HOme]]></category>
		<category><![CDATA[Restore]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6207</guid>

					<description><![CDATA[<p>&#160;&#160; I did this how-to with the purpose of you using it as a &#8221; best practice&#8221; and having a regular backup of your Oracle Home…</p>
<p>O post <a href="https://www.dbadutra.com/2024/01/backup-and-restore-your-oracle-home/">Backup and restore your Oracle Home</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">&nbsp;&nbsp; I did this how-to with the purpose of you using it as a &#8221; best practice&#8221; and having a regular backup of your Oracle Home in case you, or another guy on your team, accidentally remove part of or entire files and folders on it.</p>



<p class="wp-block-paragraph">I will reproduce the steps on Compute instance in OCI; I hope that is not your case on a production database server, but nobody knows when shit happens, and you may need this procedure to recover and put your database online after an accident.</p>



<p class="wp-block-paragraph">   As you can see, my database is up and running in my Oracle 19c home.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-36.png"><img loading="lazy" decoding="async" width="975" height="411" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-36.png" alt="" class="wp-image-6208" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-36.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-36-300x126.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-36-768x324.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">The location of my ORACLE HOME is listed for this database on my file /etc/oratab</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-37.png"><img loading="lazy" decoding="async" width="975" height="553" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-37.png" alt="" class="wp-image-6209" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-37.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-37-300x170.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-37-768x436.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Now, let&#8217;s issue a backup of my oracle home, do this procedure with root user. You can backup OH online, no problem at all on the database side to issue this step.</p>



<pre class="wp-block-preformatted">[oracle@oracle-db-lab dbhome_1]$ tar -cf /home/oracle/dbhome19c_installed.tar .
[oracle@oracle-db-lab dbhome_1]$ ls -ltrh /home/oracle/dbhome19c_installed.tar
-rw-r--r--. 1 oracle oinstall 5.0G Jan 18 22:35 /home/oracle/dbhome19c_installed.tar
[oracle@oracle-db-lab dbhome_1]$</pre>



<p class="wp-block-paragraph">I will remove all files on my Oracle Home to simulate the corruption or loss of the Oracle Home.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-38.png"><img loading="lazy" decoding="async" width="975" height="501" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-38.png" alt="" class="wp-image-6210" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-38.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-38-300x154.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-38-768x395.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<p class="wp-block-paragraph">After removing the directory we will validate that it is not working</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-39.png"><img loading="lazy" decoding="async" width="975" height="100" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-39.png" alt="" class="wp-image-6211" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-39.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-39-300x31.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-39-768x79.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Now all utilities were gone!!</p>



<p class="wp-block-paragraph">As root user again, let&#8217;s restore our backup from Oracle Home to the correct path using these commands below and let&#8217;s check the size of the folder:</p>



<pre class="wp-block-preformatted">[oracle@oracle-db-lab dbhome_1]$ tar -xf /home/oracle/dbhome19c_installed.tar .</pre>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-40.png"><img loading="lazy" decoding="async" width="975" height="147" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-40.png" alt="" class="wp-image-6212" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-40.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-40-300x45.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-40-768x116.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Now all utilities were gone!!</p>



<p class="wp-block-paragraph">As root user again, let&#8217;s restore our backup from Oracle Home to the correct path using these commands below and let&#8217;s check the size of the folder:</p>



<pre class="wp-block-preformatted">[oracle@oracle-db-lab dbhome_1]$ tar -xf /home/oracle/dbhome19c_installed.tar .</pre>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-41.png"><img loading="lazy" decoding="async" width="975" height="147" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-41.png" alt="" class="wp-image-6213" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-41.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-41-300x45.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-41-768x116.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">As you can see, it is the same size as the original one, 5 GB, which is good for us. To guarantee that everything is good, I will do a relink on Oracle binaries before I try to open my database again.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-42.png"><img loading="lazy" decoding="async" width="975" height="87" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-42.png" alt="" class="wp-image-6214" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-42.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-42-300x27.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-42-768x69.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">There are no errors on the relink file, so it means that we successfully restored our original Oracle home, and now we can start our database again.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-43.png"><img loading="lazy" decoding="async" width="975" height="516" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-43.png" alt="" class="wp-image-6215" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-43.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-43-300x159.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-43-768x406.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">I hope this article helps you restore the situation I described initially. I recommend you include a backup of your Oracle Home in your backup schedules. Otherwise, you will need to reinstall Oracle again and maybe patch all the patches you applied to your Oracle Home before the crash.  </p>



<p class="wp-block-paragraph">See you in the next article.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>
<p>O post <a href="https://www.dbadutra.com/2024/01/backup-and-restore-your-oracle-home/">Backup and restore your Oracle Home</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/01/backup-and-restore-your-oracle-home/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6207</post-id>	</item>
		<item>
		<title>Sending email using OCI Email Delivery service</title>
		<link>https://www.dbadutra.com/2024/01/sending-email-using-oci-email-delivery-service/</link>
					<comments>https://www.dbadutra.com/2024/01/sending-email-using-oci-email-delivery-service/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Wed, 10 Jan 2024 18:55:07 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Email Delivery]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6184</guid>

					<description><![CDATA[<p>Today, we will configure the email delivery service to send emails using Always Free resources. First, you need access to an OCI environment. When you have…</p>
<p>O post <a href="https://www.dbadutra.com/2024/01/sending-email-using-oci-email-delivery-service/">Sending email using OCI Email Delivery service</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today, we will configure the email delivery service to send emails using Always Free resources.</p>



<p class="wp-block-paragraph">First, you need access to an OCI environment. When you have an environment, ensure your user has been assigned to a group with permission to manage the&nbsp;email-family&nbsp;resources.</p>



<p class="wp-block-paragraph">It would be best if you had a DNS domain to publish your domain keys identified mail (DKIM) and sender policy framework (SPF) records.<br><br><strong>1.</strong> <strong>Generate SMTP credentials</strong></p>



<p class="wp-block-paragraph">SMTP credentials are necessary to send email through Email Delivery. &nbsp;Remember that each user is limited to a maximum of two SMTP credentials.</p>



<p class="wp-block-paragraph">Log into the Oracle Cloud Console and navigate to <strong>Identity >> Domains >> OracleIdentityCloudService domain >> Users</strong>.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-16.png"><img loading="lazy" decoding="async" width="712" height="691" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-16.png" alt="" class="wp-image-6185" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-16.png 712w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-16-300x291.png 300w" sizes="auto, (max-width: 712px) 100vw, 712px" /></a></figure>



<p class="wp-block-paragraph">Click on SMTP Credentials and click on Generate credentials.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-17.png"><img loading="lazy" decoding="async" width="474" height="638" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-17.png" alt="" class="wp-image-6186" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-17.png 474w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-17-223x300.png 223w" sizes="auto, (max-width: 474px) 100vw, 474px" /></a></figure>



<p class="wp-block-paragraph">Fill out the description and Click on “Generate Credentials.”</p>



<p class="wp-block-paragraph">Copy the username and password. You can’t retrieve the password after closing the dialog box for security reasons.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-18.png"><img loading="lazy" decoding="async" width="850" height="364" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-18.png" alt="" class="wp-image-6187" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-18.png 850w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-18-300x128.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-18-768x329.png 768w" sizes="auto, (max-width: 850px) 100vw, 850px" /></a></figure>



<p class="wp-block-paragraph"><strong>2.</strong> <strong>Create your email domain.</strong></p>



<p class="wp-block-paragraph">An email domain lets you set up essential authentication measures for sending emails. Under Developer Services, select Application Integration and Email Delivery.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-19.png"><img loading="lazy" decoding="async" width="975" height="264" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-19.png" alt="" class="wp-image-6188" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-19.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-19-300x81.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-19-768x208.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Click <strong>Email Domains</strong> and create a domain. If setting up DKIM and SPF, choose a DNS domain that you own or control and plan to use for the sending email address.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-20.png"><img loading="lazy" decoding="async" width="975" height="645" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-20.png" alt="" class="wp-image-6189" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-20.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-20-300x198.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-20-768x508.png 768w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-20-90x60.png 90w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-20-180x120.png 180w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-20-95x64.png 95w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Click on “Create Email Domain.”</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-21.png"><img loading="lazy" decoding="async" width="975" height="294" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-21.png" alt="" class="wp-image-6190" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-21.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-21-300x90.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-21-768x232.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph"><strong>3.</strong> <strong>Set up DKIM</strong></p>



<p class="wp-block-paragraph">DKIM is an email authentication technique that allows the receiver to verify the owner of an email domain. It gives the email a digital signature and a header field containing all the signature and key-fetching data. So, implementing DKIM improves email deliverability and can protect your domain against malicious emails sent on behalf of your domain.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-22.png"><img loading="lazy" decoding="async" width="975" height="240" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-22.png" alt="" class="wp-image-6191" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-22.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-22-300x74.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-22-768x189.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Click on “Add DKIM”</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-23.png"><img loading="lazy" decoding="async" width="975" height="619" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-23.png" alt="" class="wp-image-6192" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-23.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-300x190.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-768x488.png 768w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-190x122.png 190w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-120x76.png 120w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-265x168.png 265w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-284x180.png 284w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-274x173.png 274w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-23-220x140.png 220w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Fill out the DKIM Selector after clicking on Generate DKIM Record and click on “Create DKIM.”</p>



<p class="wp-block-paragraph">We now need to configure our DNS domain. Go to your zone and create the CNAME record with the value it gives you.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-24.png"><img loading="lazy" decoding="async" width="975" height="33" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-24.png" alt="" class="wp-image-6193" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-24.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-24-300x10.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-24-768x26.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">If done correctly, your DKIM signing status changes to Active. Depending on the update type, updates to your DNS records can take up to 24 hours to propagate globally.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-25.png"><img loading="lazy" decoding="async" width="908" height="242" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-25.png" alt="" class="wp-image-6194" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-25.png 908w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-25-300x80.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-25-768x205.png 768w" sizes="auto, (max-width: 908px) 100vw, 908px" /></a></figure>



<p class="wp-block-paragraph">After DNS propagation, active DKIM will appear.</p>



<p class="wp-block-paragraph"><strong>Tip: Rotate your DKIM keys at least every six months. This reduces the risk of active keys being compromised, either by attackers cracking or stealing them.</strong></p>



<p class="wp-block-paragraph"><strong>4.</strong> <strong>Create an approved sender</strong></p>



<p class="wp-block-paragraph">You need an approved sender for all “From” addresses sending mail through OCI. Otherwise, mail is rejected. Every sender&#8217;s email address must be registered to use it for Email Delivery.</p>



<p class="wp-block-paragraph">Important note the following details about approved senders:</p>



<ul class="wp-block-list">
<li>An approved sender is associated with a compartment and only exists in the region where it was configured. If you create an approved sender in the US West (Phoenix) region, you can’t send email through the US East (Ashburn) region with that sender.</li>



<li>Using multiple addresses in the email “From:” header is discouraged because it increases the possibility that your mail is placed in a spam folder or discarded.</li>



<li>Approved senders are unique to tenancies. The service returns a 409 Conflict error if you create a duplicate sender.</li>
</ul>



<p class="wp-block-paragraph">Under DKIM, you can see Approved Senders. Create one.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-26.png"><img loading="lazy" decoding="async" width="975" height="333" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-26.png" alt="" class="wp-image-6195" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-26.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-26-300x102.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-26-768x262.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Click on “Create Approved Sender”</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-27.png"><img loading="lazy" decoding="async" width="975" height="347" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-27.png" alt="" class="wp-image-6196" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-27.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-27-300x107.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-27-768x273.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Fill out the email address that you will use as the Approved sender. After that, click on “Create Approved Sender.”</p>



<p class="wp-block-paragraph"><strong>5. Configure SPF on your approved sender domain</strong></p>



<p class="wp-block-paragraph">The SPF allows you to state which email servers are permitted to send email on behalf of your domain. Email receivers use SPF to detect email spoofing. &nbsp;Without SPF, a spam or phishing email can be spoofed to appear to be from a legitimate domain.</p>



<p class="wp-block-paragraph">Navigate to your approved sender. Under the three-dot menu, select <strong>View SPF</strong>.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-28.png"><img loading="lazy" decoding="async" width="975" height="341" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-28.png" alt="" class="wp-image-6197" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-28.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-28-300x105.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-28-768x269.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-29.png"><img loading="lazy" decoding="async" width="975" height="434" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-29.png" alt="" class="wp-image-6198" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-29.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-29-300x134.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-29-768x342.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Choose your sending location and create a DNS TXT record with the corresponding value. I’m using All commercial regions.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-30.png"><img loading="lazy" decoding="async" width="975" height="183" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-30.png" alt="" class="wp-image-6199" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-30.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-30-300x56.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-30-768x144.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">It can take some time, but your domain now shows DKIM Signing and SPF working.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-31.png"><img loading="lazy" decoding="async" width="975" height="218" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-31.png" alt="" class="wp-image-6200" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-31.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-31-300x67.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-31-768x172.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<p class="wp-block-paragraph"><strong>6. Configure the SMTP connection</strong></p>



<p class="wp-block-paragraph">Navigate to Configuration to access SMTP sending information to configure the connection in your system.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-32.png"><img loading="lazy" decoding="async" width="975" height="182" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-32.png" alt="" class="wp-image-6201" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-32.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-32-300x56.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-32-768x143.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">The following information is displayed:</p>



<ul class="wp-block-list">
<li>Public endpoint: The public endpoint used to send email to this region</li>



<li>SMTP ports: The SMTP ports used to accept email. Email Delivery supports TLS on port 25 or 587 (recommended).</li>



<li>Security: Indicates if TLS is being used. Customers must encrypt email while in transit to Email Delivery.</li>
</ul>



<p class="wp-block-paragraph"><strong>7. Send mail</strong></p>



<p class="wp-block-paragraph">Now that our email domain is set up and secured, we can begin sending mail! You can use your own SMTP library or product, such as Postfix. I’m using Postfix to integrate with Email Delivery.<br><br></p>



<p class="wp-block-paragraph"><strong>Install Postfix</strong></p>



<p class="wp-block-paragraph"> Run the command: yum install postfix -y</p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# yum install postfix -y
Last metadata expiration check: 2:30:40 ago on Tue 09 Jan 2024 08:31:43 PM GMT.
Package postfix-2:3.5.8-7.el8.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@vm-blog ~]#
</pre>



<p class="wp-block-paragraph"><strong>Start Postfix and make it running upon reboot.</strong></p>



<p class="wp-block-paragraph">Run the command:  service postfix start</p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# service postfix start
Redirecting to /bin/systemctl start postfix.service
[root@vm-blog ~]#


chkconfig postfix on

[root@vm-blog ~]# chkconfig postfix on
Note: Forwarding request to 'systemctl enable postfix.service'.
[root@vm-blog ~]#
</pre>



<p class="wp-block-paragraph"><strong>Edit the main.cf and add the endpoint in the end of the file</strong></p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# vi /etc/postfix/main.cf

### SMTP - RELAY
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
relayhost = smtp.email.us-ashburn-1.oci.oraclecloud.com:587
</pre>



<p class="wp-block-paragraph"><strong>Create the sasl_passwd file in the same directory of main.cf.</strong></p>



<pre class="wp-block-preformatted">vi /etc/postfix/sasl_passwd

</pre>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-33.png"><img loading="lazy" decoding="async" width="975" height="42" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-33.png" alt="" class="wp-image-6202" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-33.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-33-300x13.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-33-768x33.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">The file contains this format:</p>



<pre class="wp-block-preformatted">smtp.email.us-ashburn-1.oci.oraclecloud.com:587 user:password*
</pre>



<p class="wp-block-paragraph"><strong>*The user and password will be the SMTP credentials been generated in the first step.</strong></p>



<p class="wp-block-paragraph"><strong>Change the owner and permission of the sasl_passwd</strong></p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# chown root:root /etc/postfix/sasl_passwd
[root@vm-blog ~]# chmod 600 /etc/postfix/sasl_passwd
</pre>



<p class="wp-block-paragraph"><strong>Generate the password hash and reload the postfix</strong></p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# postmap hash:/etc/postfix/sasl_passwd
[root@vm-blog ~]# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
[root@vm-blog ~]#
</pre>



<p class="wp-block-paragraph"><strong>Send the test email.&nbsp; This require installing mailx package to validate.</strong></p>



<p class="wp-block-paragraph">Run the command:  yum install mailx -y</p>



<pre class="wp-block-preformatted">[root@vm-blog ~]# yum install mailx -y
Last metadata expiration check: 2:49:02 ago on Tue 09 Jan 2024 08:31:43 PM GMT.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                   Architecture                                Version                                            Repository                                             Size
======================================================================================================================================================================================================
Installing:
 mailx                                     aarch64                                     12.5-29.el8                                        ol8_baseos_latest                                     246 k

Transaction Summary
======================================================================================================================================================================================================
Install  1 Package

Total download size: 246 k
Installed size: 493 k
Downloading Packages:
mailx-12.5-29.el8.aarch64.rpm                                                                                                                                         6.0 MB/s | 246 kB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                 5.6 MB/s | 246 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                              1/1
  Installing       : mailx-12.5-29.el8.aarch64                                                                                                                                                    1/1
  Running scriptlet: mailx-12.5-29.el8.aarch64                                                                                                                                                    1/1
  Verifying        : mailx-12.5-29.el8.aarch64                                                                                                                                                    1/1

Installed:
  mailx-12.5-29.el8.aarch64

Complete!
[root@vm-blog ~]#
</pre>



<p class="wp-block-paragraph">Now, send the email to validate.</p>



<p class="wp-block-paragraph">Run this command:</p>



<pre class="wp-block-preformatted">echo "This a test message from DBADUTRA BLOG" | mail -s "Validation DKIM, SPF, Email Delivery - OCI" -r &lt;approved sender email address> &lt;recipient email address></pre>



<p class="wp-block-paragraph">Validate that you received the email</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-34.png"><img loading="lazy" decoding="async" width="975" height="229" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-34.png" alt="" class="wp-image-6203" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-34.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-34-300x70.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-34-768x180.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Check on Dashboard</p>



<p class="wp-block-paragraph">Remember the first 3.100 emails sent are free. After this, you pay $0.085 per 1000 emails Sent.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-35.png"><img loading="lazy" decoding="async" width="975" height="394" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-35.png" alt="" class="wp-image-6204" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-35.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-35-300x121.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-35-768x310.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">I hope this article can help you; it is a reliable, robust, low-cost solution for high-volume email sending. Remember that all the resources used for this article are always free.</p>



<p class="wp-block-paragraph">See you in the next article.</p>



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



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>
<p>O post <a href="https://www.dbadutra.com/2024/01/sending-email-using-oci-email-delivery-service/">Sending email using OCI Email Delivery service</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/01/sending-email-using-oci-email-delivery-service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6184</post-id>	</item>
		<item>
		<title>Fazendo Backup do seu sistema usando Object Storage (OCI).</title>
		<link>https://www.dbadutra.com/2024/01/fazendo-backup-do-seu-sistema-usando-object-storage-oci/</link>
					<comments>https://www.dbadutra.com/2024/01/fazendo-backup-do-seu-sistema-usando-object-storage-oci/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Tue, 02 Jan 2024 18:22:08 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Object Storage]]></category>
		<category><![CDATA[OCI]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6163</guid>

					<description><![CDATA[<p>Hoje iremos implementar um sistema de backup usando Object Storage, que pode ser usado para diversos propositos. No meu caso como migrei meu blog para OCI,…</p>
<p>O post <a href="https://www.dbadutra.com/2024/01/fazendo-backup-do-seu-sistema-usando-object-storage-oci/">Fazendo Backup do seu sistema usando Object Storage (OCI).</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Hoje iremos implementar um sistema de backup usando Object Storage, que pode ser usado para diversos propositos. No meu caso como migrei meu blog para OCI, estou utilizando este recurso para fazer backup do banco de dados, site e do painel de administração.</p>



<p class="wp-block-paragraph">Começamos criando uma compute instance no OCI em uma sub-rede Virtual Cloud Network (VCN) onde temos acesso SSH, seja via Internet Gateway ou um canal privado. Esta VCN deve ter um Gateway de Serviço que permitirá acesso privado à Oracle Services Network para fins de acesso ao Object Storage. Estou usando o Oracle Linux 8 em ARM de baixo custo para minha implantação. Você pode alterar o formato dependendo das necessidades desejadas.</p>



<p class="wp-block-paragraph">Ja fiz um artigo sobre isso “<a href="https://www.dbadutra.com/2019/05/creating-a-compute-instance-on-oracle-oci/">Criando um Compute Instance</a>”</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image.png"><img loading="lazy" decoding="async" width="975" height="89" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image.png" alt="" class="wp-image-6164" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-300x27.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-768x70.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Crie o bucket que vamos usar para armazenar nossos dados. Deve ser do tipo Armazenamento padrão. Certifique-se de que esteja definido como privado, a menos que você queira armazenar também os dados de outras pessoas.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-1.png"><img loading="lazy" decoding="async" width="975" height="307" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-1.png" alt="" class="wp-image-6165" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-1.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-1-300x94.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-1-768x242.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-2.png"><img loading="lazy" decoding="async" width="975" height="633" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-2.png" alt="" class="wp-image-6166" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-2.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-2-300x195.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-2-768x499.png 768w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-2-190x122.png 190w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Precismos usar Grupos Dinâmicos para atribuir à nossa instância um Instance Principal e, em seguida, escrever políticas para permitir que ela funcione com nosso novo bucket.</p>



<p class="wp-block-paragraph">Criando um Dynamic Group</p>



<p class="wp-block-paragraph">Criamos um grupo dinâmico para vincular políticas à nossa instância. Neste exemplo, estamos usando apenas uma instância, portanto identificamos essa instância pelo OCID.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-3.png"><img loading="lazy" decoding="async" width="975" height="308" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-3.png" alt="" class="wp-image-6167" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-3.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-3-300x95.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-3-768x243.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full is-resized"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-4.png"><img loading="lazy" decoding="async" width="975" height="558" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-4.png" alt="" class="wp-image-6168" style="width:840px;height:auto" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-4.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-4-300x172.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-4-768x440.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">A seguir, vamos vincular nosso Dynamic Group a um conjunto de permissões usando uma Política.</p>



<p class="wp-block-paragraph">Criando uma Politica para acesso ao Object Storage.</p>



<p class="wp-block-paragraph">É aqui que atribuímos permissões aos membros do Dynamic Group que acabamos de criar. Criaremos uma política com uma instrução que permite que a instância que executa o backup interaja com o bucket específico que queremos montar.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-5.png"><img loading="lazy" decoding="async" width="975" height="555" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-5.png" alt="" class="wp-image-6169" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-5.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-5-300x171.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-5-768x437.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-6.png"><img loading="lazy" decoding="async" width="975" height="271" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-6.png" alt="" class="wp-image-6170" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-6.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-6-300x83.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-6-768x213.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Temos tudo setado para que possamos fazer a instalação no Linux e configurar a ferramenta rclone para que possamos ter acesso ao Object Storage.</p>



<p class="wp-block-paragraph">Instalando pacotes e arquivo de configuração.</p>



<p class="wp-block-paragraph">Faremos SSH em nossa instância usando o usuário opc com acesso sudo. A partir daí, instalaremos o rclone e o fuse:</p>



<pre class="wp-block-preformatted">[opc@vm-blog var]$ sudo yum-config-manager --enable ol8_developer &amp;&amp; sudo yum install -y rclone fuse fuse3
Oracle Linux 8 Development Packages (aarch64)                                                                                                                         134 MB/s | 108 MB     00:00
Last metadata expiration check: 0:00:31 ago on Wed 13 Dec 2023 09:18:37 PM GMT.
Package fuse3-3.3.0-17.0.1.el8.aarch64 is already installed.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                   Architecture                               Version                                              Repository                                            Size
======================================================================================================================================================================================================
Installing:
 fuse                                      aarch64                                    2.9.7-17.0.1.el8                                     ol8_baseos_latest                                     81 k
 rclone                                    aarch64                                    1.65.0-1.0.1.el8                                     ol8_developer                                         19 M

Transaction Summary
======================================================================================================================================================================================================
Install  2 Packages

Total download size: 19 M
Installed size: 76 M
Downloading Packages:
(1/2): fuse-2.9.7-17.0.1.el8.aarch64.rpm                                                                                                                              2.3 MB/s |  81 kB     00:00
(2/2): rclone-1.65.0-1.0.1.el8.aarch64.rpm                                                                                                                             95 MB/s |  19 MB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                  94 MB/s |  19 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                              1/1
  Installing       : rclone-1.65.0-1.0.1.el8.aarch64                                                                                                                                              1/2
  Installing       : fuse-2.9.7-17.0.1.el8.aarch64                                                                                                                                                2/2
  Running scriptlet: fuse-2.9.7-17.0.1.el8.aarch64                                                                                                                                                2/2
  Verifying        : fuse-2.9.7-17.0.1.el8.aarch64                                                                                                                                                1/2
  Verifying        : rclone-1.65.0-1.0.1.el8.aarch64                                                                                                                                              2/2

Installed:
  fuse-2.9.7-17.0.1.el8.aarch64                                                                    rclone-1.65.0-1.0.1.el8.aarch64

Complete!
[opc@vm-blog var]$
</pre>



<p class="wp-block-paragraph">A seguir, criaremos um link simbolico para o diretorio <em>/usr/bin </em>directory:</p>



<pre class="wp-block-preformatted">[opc@vm-blog var]$ sudo ln -s /usr/bin/rclone /sbin/mount.rclone
[opc@vm-blog var]$
</pre>



<p class="wp-block-paragraph">Crie um diretório para rclone em /etc/rclone e use o editor de sua preferência para criar um /etc/rclone/rclone.conf</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-7.png"><img loading="lazy" decoding="async" width="975" height="134" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-7.png" alt="" class="wp-image-6171" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-7.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-7-300x41.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-7-768x106.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<p class="wp-block-paragraph">Teste da instalação</p>



<p class="wp-block-paragraph">A execução dos seguintes comandos montará o sistema de arquivos remoto (Object Storage):</p>



<pre class="wp-block-preformatted">sudo mkdir -p /backup</pre>



<p class="wp-block-paragraph">Depois que nosso local de montagem for criado:</p>



<pre class="wp-block-preformatted">[root@vm-blog rclone]# sudo rclone mount \
>     backup:blog_backup /backup\
>     --allow-other \
>     --cache-dir /tmp/rclone/cache \
>     --config /etc/rclone/rclone.conf \
>     --dir-perms 0770 \
>     --file-perms 0660 \
>     --log-file /var/log/rclone.log \
>     --log-level ERROR \
>     --tpslimit 50  \
>     --umask 0117 \
>     --vfs-cache-mode writes \
>     --vfs-fast-fingerprint &amp;
[1] 73993

</pre>



<p class="wp-block-paragraph">A seguir, vamos montar o storage editando nosso /etc/fstab (ponto de monagem deve ser um diretório existente):</p>



<pre class="wp-block-preformatted">
backup:blog_backup /backup rclone rw,umask=0117,nofail,_netdev,args2env,config=/etc/rclone/rclone.conf,uid=1000,gid=1000,file_perms=0760,dir_perms=0770,allow_other,vfs_cache_mode=writes,cache_dir=/tmp/rclone/cache 0 0
</pre>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-8.png"><img loading="lazy" decoding="async" width="975" height="318" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-8.png" alt="" class="wp-image-6172" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-8.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-8-300x98.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-8-768x250.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Depois que seu fstab for editado:</p>



<pre class="wp-block-preformatted">[root@vm-blog /]# sudo mount -av
/                        : ignored
/boot                    : already mounted
/boot/efi                : already mounted
/var/oled                : already mounted
/dev/shm                 : already mounted
none                     : ignored
/backup                  : already mounted
[root@vm-blog /]#
</pre>



<p class="wp-block-paragraph">Para este teste configurei o diretório de backup padrão para banco de dados e servidor Web no Object Storage.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-9.png"><img loading="lazy" decoding="async" width="975" height="76" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-9.png" alt="" class="wp-image-6173" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-9.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-9-300x23.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-9-768x60.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



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



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-10.png"><img loading="lazy" decoding="async" width="975" height="620" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-10.png" alt="" class="wp-image-6174" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-10.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-300x191.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-768x488.png 768w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-190x122.png 190w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-120x76.png 120w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-265x168.png 265w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-284x180.png 284w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-274x173.png 274w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-10-220x140.png 220w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-11.png"><img loading="lazy" decoding="async" width="975" height="679" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-11.png" alt="" class="wp-image-6175" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-11.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-11-300x209.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-11-768x535.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Podemos ver aqui que os backups foram gerados no /backup.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-12.png"><img loading="lazy" decoding="async" width="975" height="384" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-12.png" alt="" class="wp-image-6176" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-12.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-12-300x118.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-12-768x302.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Aqui podemos confirmar que os objetos estão no bucket e sincronizados com o arquivos que foram gerados no servidor pelo backup.</p>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-13.png"><img loading="lazy" decoding="async" width="975" height="402" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-13.png" alt="" class="wp-image-6177" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-13.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-13-300x124.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-13-768x317.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-14.png"><img loading="lazy" decoding="async" width="975" height="389" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-14.png" alt="" class="wp-image-6178" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-14.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-14-300x120.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-14-768x306.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://www.dbadutra.com/wp-content/uploads/2024/01/image-15.png"><img loading="lazy" decoding="async" width="975" height="408" src="https://www.dbadutra.com/wp-content/uploads/2024/01/image-15.png" alt="" class="wp-image-6179" srcset="https://www.dbadutra.com/wp-content/uploads/2024/01/image-15.png 975w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-15-300x126.png 300w, https://www.dbadutra.com/wp-content/uploads/2024/01/image-15-768x321.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></a></figure>



<p class="wp-block-paragraph">Espero que este artigo possa te auxiliar em uma solução simples e sincronizada para seus backups, lembrando que todos os recursos utilizados para este artigos são <a href="https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm">Always Free</a>. </p>



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



<p class="wp-block-paragraph">Te vejo em um próximo artigo.<br></p>



<p class="wp-block-paragraph">Até a próxima.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.</strong></p>



<p class="wp-block-paragraph"></p>
<p>O post <a href="https://www.dbadutra.com/2024/01/fazendo-backup-do-seu-sistema-usando-object-storage-oci/">Fazendo Backup do seu sistema usando Object Storage (OCI).</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2024/01/fazendo-backup-do-seu-sistema-usando-object-storage-oci/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6163</post-id>	</item>
		<item>
		<title>Refresh database from Data Guard</title>
		<link>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/</link>
					<comments>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Wed, 13 Dec 2023 20:17:28 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Dataguard]]></category>
		<category><![CDATA[Refresh]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6150</guid>

					<description><![CDATA[<p>My client asked me for help. He needs to update the DEV environment every month The current process (using export-import) takes a few days. To reduce…</p>
<p>O post <a href="https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/">Refresh database from Data Guard</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">My client asked me for help. He needs to update the DEV environment every month</p>



<p class="wp-block-paragraph">The current process (using export-import) takes a few days.</p>



<p class="wp-block-paragraph">To reduce the time, an alternative approach was implemented</p>



<ul class="wp-block-list">
<li>Replicate constantly all production changes to a standby database.&nbsp;&nbsp; This is achieved using Data Guard</li>



<li>For the refresh<ul><li>Stop synchronization</li></ul><ul><li>Drop old DEV databases</li></ul><ul><li>Create new DEV databases by cloning from the standby database</li></ul>
<ul class="wp-block-list">
<li>Restart synchronization</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">The new procedure should considerably reduce the refresh time considerably to a few hours.</p>



<h4 class="wp-block-heading"><a>1         Pre-Requirements</a></h4>



<ul class="wp-block-list">
<li>Oracle version and Patch Level on Primary and Secondary should be same.</li>



<li>Db_unique_name on standby and primary database should be different in order to used in DG_CONFIG setting of the LOG_ARCHIVE_CONFIG parameter.</li>
</ul>



<h4 class="wp-block-heading"><a>2         Preparation</a></h4>



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



<h4 class="wp-block-heading"><a><strong>Standby preparation</strong></a></h4>



<p class="wp-block-paragraph">Check if standby is in sync with primary</p>



<pre class="wp-block-preformatted">****** To check archivelog apply lag

SELECT al.thrd "Thread", almax "Last Seq Received", lhmax "Last Seq Applied" FROM
(select thread# thrd, MAX(sequence#) almax FROM v$archived_log WHERE resetlogs_change#=(SELECT resetlogs_change#
FROM v$database) GROUP BY thread#) al, (SELECT thread# thrd, MAX(sequence#) lhmax FROM v$log_history
WHERE resetlogs_change#=(SELECT resetlogs_change# FROM v$database) GROUP BY thread#) lh WHERE al.thrd = lh.thrd;

</pre>



<p class="wp-block-paragraph">Convert standby in snapshot standby</p>



<pre class="wp-block-preformatted">

shutdown immediate
startup mount
alter database convert to snapshot standby;
alter database open;

<a><strong> </strong></a></pre>



<p class="wp-block-paragraph"><a><strong>Create DB links between Standby and DEV</strong></a></p>



<pre class="wp-block-preformatted">---- Standby

alter pluggable database ALL open read only;
CREATE USER c##r_clone identified by Oracle23 CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSOPER, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO  c##r_clone CONTAINER=ALL;
GRANT DBA to c##r_clone;

CREATE DATABASE LINK refresh_link CONNECT TO c##r_clone identified by Oracle23 using 'DUTSD'; 

----- Dev Database

CREATE DATABASE LINK refresh_link CONNECT TO c##r_clone identified by Oracle23 using 'DUTSST';

alter pluggable database ALL open read only;
CREATE USER c##r_clone identified by Oracle23 CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSOPER, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO  c##r_clone CONTAINER=ALL;
GRANT DBA to c##r_clone;

</pre>



<p class="wp-block-paragraph"><a><strong>Cleanup old PDB&#8217;s in DUTSD</strong></a></p>



<pre class="wp-block-preformatted">####### DROP OLD PDB - DUTSD
Show pdbs; 

ALTER PLUGGABLE DATABASE &lt;PDBNAME> CLOSE;
DROP PLUGGABLE DATABASE &lt;PDBNAME> INCLUDING DATAFILES;
</pre>



<h4 class="wp-block-heading"><a>3   Clone PDBs</a></h4>



<p class="wp-block-paragraph">The files of standby were created using OMF convention.&nbsp;&nbsp; For this reason the database files need to be converted from</p>



<p class="wp-block-paragraph">+DATA01/DUTSD/&lt;GUID&gt;/DATAFILE/&lt;file&gt;.&lt;id&gt;&nbsp; to</p>



<p class="wp-block-paragraph">+DATA01/DUTSST/DATAFILE/&lt;file&gt;.dbf&#8217;</p>



<p class="wp-block-paragraph"><a><strong>Clone DUTSD</strong></a></p>



<pre class="wp-block-preformatted">CREATE PLUGGABLE DATABASE DUTSD FROM DUTSD@refresh_link storage unlimited tempfile reuse 
file_name_convert=('+DATA01/DUTSD/CCA899613E3D0713E0531114C30A2022/DATAFILE/duts01.474.1147957609','+DATA01/DUTSST/DATAFILE/duts01.dbf',
'+DATA01/DUTSD/CCA899613E3D0713E0531114C30A2022/DATAFILE/duts02.269.1147957617','+DATA01/DUTSST/ /DATAFILE/duts02.dbf') 
keystore identified by "Duts23" parallel 6;
</pre>



<h4 class="wp-block-heading"><a>4   Finalize the refresh</a></h4>



<pre class="wp-block-preformatted">. oraenv
sqlplus / as sysdba
shutdown immediate

startup mount


</pre>



<p class="wp-block-paragraph"><a><strong>Restore datafiles permissions</strong></a></p>



<pre class="wp-block-preformatted">
exec dbms_dnfs.restore_datafile_permissions('&lt;CDBNAME>');

</pre>



<p class="wp-block-paragraph"><a><strong>Convert the snapshot back to physical standby</strong></a></p>



<pre class="wp-block-preformatted">show pdbs
alter database convert to physical standby;
shutdown immediate
startup
</pre>



<p class="wp-block-paragraph">See you soon in other articles.</p>



<p class="wp-block-paragraph">Stay tuned by following us on Twitter @aontalba and Linkedin.</p>



<p class="wp-block-paragraph"><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.”</strong></p>
<p>O post <a href="https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/">Refresh database from Data Guard</a> apareceu primeiro em <a href="https://www.dbadutra.com">Blog DBA Dutra</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6150</post-id>	</item>
	</channel>
</rss>
