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

<channel>
	<title>Archives des database - dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/tag/database/</link>
	<description></description>
	<lastBuildDate>Mon, 12 Oct 2026 19:41:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/05/cropped-favicon_512x512px-min-32x32.png</url>
	<title>Archives des database - dbi Blog</title>
	<link>https://www.dbi-services.com/blog/tag/database/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Oracle database linux service not working properly after Oracle Linux upgrade</title>
		<link>https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/</link>
					<comments>https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 17:11:47 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[oracle linux]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=46145</guid>

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



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



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



<h3>Problem description</h3>



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



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



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

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

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




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



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

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

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

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



<h3>Analyzing the problem</h3>



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



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



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



<h3>Solution</h3>



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



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

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

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

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



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



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

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



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



<p class="wp-block-paragraph">I took a lot of time to understand what could happen here, moreover it was working without any problem under el7. This is why I think it is good to know and decided to share it. I thank my collegue, Jérôme Witt, who could face this problem earlier and shared this good tips with me.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/">Oracle database linux service not working properly after Oracle Linux upgrade</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-database-linux-service-not-working-properly-after-oracle-linux-upgrade/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SQL Server Always On Availability Groups and Database Master Keys: A Hidden Failover Pitfall</title>
		<link>https://www.dbi-services.com/blog/sql-server-always-on-availability-groups-and-database-master-keys-a-hidden-failover-pitfall/</link>
					<comments>https://www.dbi-services.com/blog/sql-server-always-on-availability-groups-and-database-master-keys-a-hidden-failover-pitfall/#respond</comments>
		
		<dc:creator><![CDATA[Hocine Mechara]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 15:01:28 +0000</pubDate>
				<category><![CDATA[Database management]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[disaster recovery]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[High availability]]></category>
		<category><![CDATA[SQL-Server]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44986</guid>

					<description><![CDATA[<p>I recently came across an interesting case involving a client whose application used SQL Server symmetric keys to encrypt sensitive data. The database was hosted in an Always On Availability Group environment for high-availability and disaster-recovery. The interesting and challenging aspect of this setup is ensuring that the encryption and decryption remains intact after a [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/sql-server-always-on-availability-groups-and-database-master-keys-a-hidden-failover-pitfall/">SQL Server Always On Availability Groups and Database Master Keys: A Hidden Failover Pitfall</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently came across an interesting case involving a client whose application used SQL Server symmetric keys to encrypt sensitive data. The database was hosted in an Always On Availability Group environment for high-availability and disaster-recovery.</p>



<p class="wp-block-paragraph">The interesting and challenging aspect of this setup is ensuring that the encryption and decryption remains intact after a failover. </p>



<p class="wp-block-paragraph">This challenge originates from SQL Server&#8217;s encryption hierarchy. In a typical setup, the Service Master Key (SMK) on server level protects the Database Master Key (DMK) on database level. The Database Master Key, in turn, protects certificates and asymmetric keys, while certificates are commonly used to protect symmetric keys. These symmetric keys may then be used by the application to encrypt and decrypt sensitive data.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="509" height="529" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image.png" alt="" class="wp-image-44987" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image.png 509w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-289x300.png 289w" sizes="(max-width: 509px) 100vw, 509px" /></figure>



<p class="wp-block-paragraph">When a failover to a secondary replica occurs, the Service Master Key (SMK) is no longer the same as on the previous primary replica. Since the Database Master Key (DMK) is typically encrypted by the local Service Master Key, SQL Server may no longer be able to open the DMK transparently after the failover. As a result, any encryption objects that depend on the DMK, such as certificates and symmetric keys, may become inaccessible, potentially causing application failures when encrypted data needs to be read or written.</p>



<p class="wp-block-paragraph">Let&#8217;s now explore the built-in approaches in SQL Server to ensure that the encryption hierarchy remains functional across replicas and that applications continue to operate seamlessly after a failover.</p>



<p class="wp-block-paragraph">First, let&#8217;s create a test database and a Database Master Key:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
-- Create Demo DB
CREATE DATABASE TestDMK;
GO
--Backup DB
BACKUP DATABASE TestDMK
TO DISK = &#039;C:\SQLServer_mnt\BACKUP\TestDMK.bak&#039;;
go
-- Create Database Master Key
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = &#039;MyVeryStrongPassword_123!&#039;;
GO
-- Check Master Key
SELECT DB_NAME() as DB, *
FROM sys.symmetric_keys
WHERE name = &#039;##MS_DatabaseMasterKey##&#039;;
GO

</pre></div>


<figure class="wp-block-image size-full"><img decoding="async" width="1022" height="265" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-1.png" alt="" class="wp-image-44988" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-1.png 1022w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-1-300x78.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-1-768x199.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<p class="wp-block-paragraph">It is worth noting that you can verify whether a Database Master Key is also encrypted by the Service Master Key by querying the <strong>sys.databases</strong> catalog view. When a Database Master Key is created, SQL Server typically adds encryption by the Service Master Key automatically. This behaviour can be changed by explicitly removing the Service Master Key encryption.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
select is_master_key_encrypted_by_server, * from sys.databases where name = &#039;TestDMK&#039;
</pre></div>


<figure class="wp-block-image size-full"><img decoding="async" width="961" height="272" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-2.png" alt="" class="wp-image-44989" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-2.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-2-300x85.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-2-768x217.png 768w" sizes="(max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">With the Database Master Key in place, let&#8217;s create a certificate and a symmetric key that will be used throughout the remainder of this demonstration.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
CREATE CERTIFICATE &#x5B;mainDBCert] --&gt; This cert is going to be encrypted by the dmk
WITH SUBJECT = &#039;test Cert&#039;;
go
CREATE SYMMETRIC KEY mainKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE mainDBCert;
go
SELECT * FROM sys.certificates;
SELECT * FROM sys.symmetric_keys WHERE name &lt;&gt; &#039;##MS_DatabaseMasterKey##&#039;;
SELECT * FROM sys.symmetric_keys;
go

</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="444" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-3.png" alt="" class="wp-image-44990" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-3.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-3-300x139.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-3-768x355.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">To demonstrate the encryption and decryption process, let&#8217;s create a simple table that will contain sensitive information and insert some data.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
--create table with sensitive data
CREATE TABLE CreditCards
(
    Id int,
    CreditCardNr varbinary(max),
    CVC varbinary(max),
    ExpirationDate varbinary(max)
);
go
--open symmetric key
OPEN SYMMETRIC KEY mainKey
DECRYPTION BY CERTIFICATE mainDBCert;
--insert sensitive data
INSERT INTO CredîtCards
VALUES
(
    1,
    EncryptByKey(Key_GUID(&#039;mainKey&#039;), &#039;1234-5678-9012-3456&#039;),
    EncryptByKey(Key_GUID(&#039;mainKey&#039;), &#039;123&#039;),
    EncryptByKey(Key_GUID(&#039;mainKey&#039;), &#039;1233&#039;)
);
CLOSE SYMMETRIC KEY mainKey;
GO
Select * from CreditCards

</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="575" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-21.png" alt="" class="wp-image-45008" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-21.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-21-300x180.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-21-768x460.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">If we query the table without opening the symmetric key and decrypting the values, we can see that we won’t see the data.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
--select data without decryption
SELECT
    Id,
    CONVERT(varchar(50), CreditCardNr) AS CreditCardNr,
    CONVERT(varchar(10), CVC) AS CVC,
    CONVERT(varchar(10), ExpirationDate) AS ExpirationDate
FROM CreditCards;

</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="893" height="559" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-5.png" alt="" class="wp-image-44992" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-5.png 893w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-5-300x188.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-5-768x481.png 768w" sizes="auto, (max-width: 893px) 100vw, 893px" /></figure>



<p class="wp-block-paragraph">However, if we open the symmetric key first and use it to decrypt the data, we are able to retrieve the original sensitive information:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
OPEN SYMMETRIC KEY mainKey
DECRYPTION BY CERTIFICATE mainDBCert;
GO
SELECT
    Id,
    CONVERT(varchar(50), DecryptByKey(CreditCardNr)) AS CreditCardNr,
    CONVERT(varchar(10), DecryptByKey(CVC)) AS CVC,
    CONVERT(varchar(10), DecryptByKey(ExpirationDate)) AS ExpirationDate
FROM CredîtCards;
GO
CLOSE SYMMETRIC KEY mainKey;
GO
</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="705" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-6.png" alt="" class="wp-image-44993" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-6.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-6-300x220.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-6-768x563.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">Now let&#8217;s add our database to an Always On Availability Group to provide high availability and disaster recovery. If you follow the Availability Group wizard, you may notice that the wizard asks you to enter a password. What the wizards is asking for here is the password of the Database Master Key (DMK). The DMK protects the certificate in our encryption hierarchy, and the certificate, in turn, protects the symmetric key used to encrypt and decrypt the sensitive data.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="705" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-7.png" alt="" class="wp-image-44994" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-7.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-7-300x220.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-7-768x563.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="254" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-9.png" alt="" class="wp-image-44996" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-9.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-9-300x79.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-9-768x203.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">On the right-hand side of the wizard, there is a small and easily overlooked text box where you can enter the Database Master Key password.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="207" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-10.png" alt="" class="wp-image-44997" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-10.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-10-300x65.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-10-768x165.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">And now comes the tricky &#8211; and at the same time somewhat surprising &#8211; part. If you use automatic seeding, which is my preferred option whenever the database size allows it, the process will skip the part where the Master Key password is verified and applied on the secondary replicas.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="904" height="343" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-11.png" alt="" class="wp-image-44998" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-11.png 904w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-11-300x114.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-11-768x291.png 768w" sizes="auto, (max-width: 904px) 100vw, 904px" /></figure>



<p class="wp-block-paragraph">As a result, when a failover occurs, SQL Server would no longer be able to open the Database Master Key (DMK) transparently on the new primary replica. Consequently, the application would no longer be able to encrypt or decrypt data unless the Database Master Key is explicitly opened first with the password.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="591" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-12.png" alt="" class="wp-image-44999" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-12.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-12-300x184.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-12-768x472.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="759" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-13.png" alt="" class="wp-image-45000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-13.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-13-300x237.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-13-768x607.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">In such a scenario, the issue can be resolved by storing the Database Master Key password as a credential on each replica using the <strong>sp_control_dbmasterkey_password </strong>stored procedure. SQL Server can then use this credential to automatically open the Database Master Key after a failover, allowing the encryption hierarchy to remain intact and ensuring that certificates, symmetric keys, and encrypted data remain accessible transparently.</p>



<p class="wp-block-paragraph"><strong>!!Note that you must do that on each replica!!</strong></p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
sp_control_dbmasterkey_password @db_name = N&#039;TestDMK&#039;
    , @password = N&#039;MyVeryStrongPassword_123!&#039;
    , @action = N&#039;add&#039;;
select * from sys.master_key_passwords;
select * from sys.credentials;

</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="368" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-14.png" alt="" class="wp-image-45001" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-14.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-14-300x115.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-14-768x294.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">Once the credential has been created, SQL Server is again able to open the Database Master Key transparently. As a result, the application can continue to encrypt and decrypt data without having to explicitly open the Master Key with the password.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="562" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-15.png" alt="" class="wp-image-45002" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-15.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-15-300x175.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-15-768x449.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">There is also an option by which SQL Server automatically creates the Database Master Key credential across all replicas when a database is joined to an Availability Group. This happens when <strong>&#8220;Full Database Backup and Log Backup&#8221;</strong> is selected as the initial data synchronization option in the Availability Group wizard.</p>



<p class="wp-block-paragraph">To demonstrate this, let&#8217;s remove the previously created credential using the same stored procedure.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
sp_control_dbmasterkey_password @db_name = N&#039;TestDMK&#039;
    , @password = N&#039;MyVeryStrongPassword_123!&#039;
    , @action = N&#039;drop&#039;;
select * from sys.master_key_passwords;
select * from sys.credentials;

</pre></div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="823" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-16.png" alt="" class="wp-image-45003" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-16.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-16-300x257.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-16-768x658.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">Now, let&#8217;s select <strong>&#8220;Full Database and Log Backup&#8221;</strong> as the initial data synchronization option in the Availability Group wizard.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="875" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-17.png" alt="" class="wp-image-45004" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-17.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-17-300x273.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-17-768x699.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">As you can see, the process is no longer skipping the Database Master Key password validation step.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="899" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-18.png" alt="" class="wp-image-45005" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-18.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-18-300x281.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-18-768x718.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">In the summary, you can see that the process automatically created the Database Master Key password credential on each replica.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="961" height="884" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-19.png" alt="" class="wp-image-45006" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-19.png 961w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-19-300x276.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-19-768x706.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p class="wp-block-paragraph">If you check the credentials on each replica afterwards, you can verify that they were created automatically.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="910" height="412" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-20.png" alt="" class="wp-image-45007" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-20.png 910w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-20-300x136.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/06/image-20-768x348.png 768w" sizes="auto, (max-width: 910px) 100vw, 910px" /></figure>



<p class="wp-block-paragraph">As the Database Master Key password credential has been added to all replicas, SQL Server can transparently open the DMK after a failover. As a result, the application can continue to encrypt and decrypt data without having to explicitly open the Database Master Key.</p>



<p class="wp-block-paragraph"><strong>But one question still puzzles me:</strong> why the same operation isn&#8217;t performed automatically when automatic seeding is used?</p>



<p class="wp-block-paragraph">Honestly, I have no clue yet. If you know more let me know it in the comments section. I&#8217;d love to learn more about it.</p>



<p class="wp-block-paragraph">Thanks for reading – Hocine 😉</p>
<p>L’article <a href="https://www.dbi-services.com/blog/sql-server-always-on-availability-groups-and-database-master-keys-a-hidden-failover-pitfall/">SQL Server Always On Availability Groups and Database Master Keys: A Hidden Failover Pitfall</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/sql-server-always-on-availability-groups-and-database-master-keys-a-hidden-failover-pitfall/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle Database 26ai Client and SQLNET.EXPIRE_TIME</title>
		<link>https://www.dbi-services.com/blog/oracle-database-26ai-client-and-sqlnet-expire_time/</link>
					<comments>https://www.dbi-services.com/blog/oracle-database-26ai-client-and-sqlnet-expire_time/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Fri, 22 May 2026 13:34:46 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Dead Connection Detection]]></category>
		<category><![CDATA[EXPIRE_TIME]]></category>
		<category><![CDATA[Oracle 26ai Client]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44747</guid>

					<description><![CDATA[<p>We have been facing one issue at one of our customer where the Oracle Client connections remained opened for days blocking some avaloq JobNetz. We have been doing some tests and we could fortunately find a solution resolving the problem thanks to Oracle Database 26ai supporting now SQLNET.EXPIRE_TIME on the client side. Through this blog, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-database-26ai-client-and-sqlnet-expire_time/">Oracle Database 26ai Client and SQLNET.EXPIRE_TIME</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We have been facing one issue at one of our customer where the Oracle Client connections remained opened for days blocking some avaloq JobNetz. We have been doing some tests and we could fortunately find a solution resolving the problem thanks to Oracle Database 26ai supporting now SQLNET.EXPIRE_TIME on the client side. Through this blog, I would like to share with you the problem and then the tests that have been performed helping us to conclude to a solution.</p>



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



<h3>Environment and problem description</h3>



<p class="wp-block-paragraph">At our customer environment, client connection run from the HelperVM does not establish database connections directly to the database listener. The connection goes through the Network Load Balancer, so called NLB, and the Oracle Connection Manager, so called CMAN.</p>



<p class="wp-block-paragraph">The diagram below describes the database connection establishment process.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/diagram-1024x537.jpg" alt="" class="wp-image-44751" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/diagram-1024x537.jpg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/diagram-300x157.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/diagram-768x403.jpg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/diagram.jpg 1396w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This is how it works.</p>



<ul class="wp-block-list">
<li>1 &#8211; Client seeks for connection details (ideally, get the connection details from Oracle Directory Service)</li>



<li>2 &#8211; Client connects to Network Load Balancer</li>



<li>3 &#8211; Network Load Balancer &#8220;forwards&#8221; the request to Oracle Connection MANager using Virtual IP</li>



<li>4 &#8211; Oracle Connection MANager acts as a rule-based firewall and ensure the database target service is running on the &#8220;white listed targets (next_hop)</li>



<li>5 &#8211; Oracle Database establish connectivity upon credential validate (Oracle listener acts in between). The listener hands the connection over to the Oracle CMAN gateway process, which passes data back and forth between the client and the db-server and collects statistics.</li>
</ul>



<p class="wp-block-paragraph">We could observed per reverse engineering&nbsp;&nbsp;technique that the TCP connection established between the Oracle client and Oracle CMAN works upon Network Load Balancer Virtual IP.</p>



<p class="wp-block-paragraph">The Network Load Balancer needs for Session persistence &#8220;statefullnes&#8221; to be enabled. This means that once the connection is established, the NLB &#8220;remembers&#8221; established connections and fails them over in case of planned downtime.</p>



<p class="wp-block-paragraph">We have been facing some broken connectivity issue. Checking Linux socket connection with linux ss command (# ss -nop) we could see TCP connection hungs between client and NLB virtual IP (CNAME DNS entry). On CMAN and DB-Server side the connection were already cleaned up as per Dead Connection Detection configuration. We can see in the diagram that EXPIRE_TIME is setup with a value of 10 minutes on the CMAN side and the listener configuration from the VM Cluster database.</p>



<p class="wp-block-paragraph">The connection was still opened on the client side because:</p>



<ul class="wp-block-list">
<li>The client was still waiting on a result which would never come</li>



<li>TCP connection to the NLB Virtual IP was still existing albeit closed with the CMAN and database listener</li>



<li>TCP connection to the NLB would remain alive for days</li>
</ul>



<p class="wp-block-paragraph">The problem is that by default Oracle client does not enable TCP Keepalive, which is an expected behavior. Oracle expects the keepalive to be set on the server side. The “Dead Connection Detection” will then be enforced for all clients.</p>



<p class="wp-block-paragraph">TCP Keepalive should then be managed in our case on the client side. And we are currently running Oracle 19c Client.</p>



<h3>EXPIRE_TIME handled on Oracle 19c Client</h3>



<p class="wp-block-paragraph">Oracle 19c client does not come with SQLNET.EXPIRE_TIME aka &#8220;Oracle dead connection detection&#8221;, unless hacked over connection string hidden (unsupported) parameter ENABLE_BROKEN. </p>



<p class="wp-block-paragraph">See following blog from a one of my former colleagues: </p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/sqlnet-expire_time-and-enablebroken">sqlnet-expire_time and enablebroken</a></p>



<p class="wp-block-paragraph">And what about Oracle 26ai Client? Let&#8217;s do some test&#8230;</p>



<h3>Installation of Oracle 26ai Client</h3>



<p class="wp-block-paragraph">On the lab, I will use the VM called bastion to act as the client. The bastion has already an Oracle 19c Client installed. I&#8217;m going to installed new Oracle 26ai Client on it.</p>



<p class="wp-block-paragraph">First we need to download the client version, which can be done from the following website:</p>



<p class="wp-block-paragraph"><a href="https://www.oracle.com/database/technologies/oracle26ai-linux-downloads.html">https://www.oracle.com/database/technologies/oracle26ai-linux-downloads.html</a></p>



<p class="wp-block-paragraph">I will install Oracle 26ai Client version in /opt/oracle.</p>



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

[root@bastion oracle]# ls -ld client*
drwxr-xr-x. 52 oracle oinstall 4096 Jun  6  2024 client19c
drwxr-xr-x. 47 oracle oinstall 4096 Nov 11  2025 client_21c
[root@bastion oracle]#
</pre>
</br>




<p class="wp-block-paragraph">I will first unzip the downloaded oracle zip file.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[oracle@bastion oracle]$ pwd
/opt/oracle

[oracle@bastion oracle]$ unzip -q LINUX.X64_2326100_client.zip
</pre>
</br>



<p class="wp-block-paragraph">I will then rename the client installation directory:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6,9]">
[oracle@bastion oracle]$ ls -ld client*
drwxr-xr-x.  5 oracle oinstall   90 Jan 17 13:59 client
drwxr-xr-x. 52 oracle oinstall 4096 Jun  6  2024 client19c
drwxr-xr-x. 47 oracle oinstall 4096 Nov 11  2025 client_21c

[oracle@bastion oracle]$ mv client client26ai
[oracle@bastion oracle]$

[oracle@bastion oracle]$ ls -ld client*
drwxr-xr-x. 52 oracle oinstall 4096 Jun  6  2024 client19c
drwxr-xr-x. 47 oracle oinstall 4096 Nov 11  2025 client_21c
drwxr-xr-x.  5 oracle oinstall   90 Jan 17 13:59 client26ai
[oracle@bastion oracle]$
</pre>
</br>



<p class="wp-block-paragraph">I will prepare the response file for the command line installation.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,5]">
[oracle@bastion client26ai]$ cp -p response/client_install.rsp response/client_install_custom.rsp

[oracle@bastion client26ai]$ vi response/client_install_custom.rsp

[oracle@bastion client26ai]$ diff response/client_install.rsp response/client_install_custom.rsp
22c22
 UNIX_GROUP_NAME=oinstall
26c26
 INVENTORY_LOCATION=/opt/oracle/oraInventory
30c30
 ORACLE_HOME=/opt/oracle/client26ai
34c34
 ORACLE_BASE=/opt/oracle
48c48
 oracle.install.client.installType=Administrator
[oracle@bastion client26ai]$
</pre>
</br>



<p class="wp-block-paragraph">And I will run the Oracle 26ai Client installation.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,12]">
[oracle@bastion client26ai]$ pwd
/opt/oracle/client26ai

[oracle@bastion client26ai]$ ls -ltrh
total 24K
-rwxrwx---.  1 oracle oinstall  500 Feb  6  2013 welcome.html
-rwxr-xr-x.  1 oracle oinstall 8.7K Jan 17 12:38 runInstaller
drwxr-xr-x.  4 oracle oinstall 4.0K Jan 17 12:38 install
drwxr-xr-x. 15 oracle oinstall 4.0K Jan 17 13:37 stage
drwxr-xr-x.  2 oracle oinstall   82 May 21 16:13 response

[oracle@bastion client26ai]$ ./runInstaller -silent -responseFile /opt/oracle/client26ai/response/client_install_custom.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 415 MB.   Actual 5025 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2026-05-21_04-16-17PM. Please wait ... [WARNING] [INS-32016] The selected Oracle home contains directories or files.
   ACTION: To start with an empty Oracle home, either remove its contents or specify a different location.
*********************************************
Package: compat-openssl10-1.0.2 (x86_64): This is a prerequisite condition to test whether the package "compat-openssl10-1.0.2 (x86_64)" is available on the system.
Severity: IGNORABLE
Overall status: VERIFICATION_FAILED
Error message: PRVF-7532 : Package "compat-openssl10(x86_64)-1.0.2" is missing on node "bastion"
Cause:  A required package is either not installed or, if the package is a kernel module, is not loaded on the specified node.
Action:  Ensure that the required package is installed and available.
-----------------------------------------------
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. /opt/oraInventory/logs/installActions2026-05-21_04-16-17PM.log.
   ACTION: Identify the list of failed prerequisite checks from the log: /opt/oraInventory/logs/installActions2026-05-21_04-16-17PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /opt/oracle/client26ai/install/response/client_2026-05-21_04-16-17PM.rsp

You can find the log of this install session at:
 /opt/oraInventory/logs/installActions2026-05-21_04-16-17PM.log

The installation of Oracle Client 26ai was successful.
Please check '/opt/oraInventory/logs/silentInstall2026-05-21_04-16-17PM.log' for more details.
Successfully Setup Software with warning(s).
[INS-10115] All configuration tools were previously ran successfully, no further configuration is required.

[oracle@bastion client26ai]$
</pre>
</br>



<p class="wp-block-paragraph">And the Oracle 26ai Client is now installed.</p>



<h3>Prepare target database</h3>



<p class="wp-block-paragraph">I will create a user on the target lab PDB, named TESTZ_TMR_003I, in order to establish sqlplus connection and test the EXPIRE_TIME configuration.</p>



<p class="wp-block-paragraph">I will create a user test01 and grant the connect permissions.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,16,31,35,39]">
[oracle@svl-oat ~]$ echo $ORACLE_SID
CDB001I

[oracle@svl-oat ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 21 14:30:39 2026
Version 19.23.0.0.0

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


Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.23.0.0.0

SQL&gt; show pdbs

    CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
     2 PDB$SEED           READ ONLY  NO
     3 TESTZ_APP_006I         READ WRITE NO
     4 RCLON_TMR_003I         MOUNTED
     5 RCLON_TMR_002I         MOUNTED
     6 RCLON_TMR_001I         MOUNTED
     7 CLONZ_TMR_002I         MOUNTED
     8 TESTZ_TMR_003I         READ WRITE NO
    10 TESTZ_APP_004I         READ WRITE NO
    11 CLONZ_APP_001I         READ WRITE NO
    12 RCLON_APP_003I         READ WRITE NO

SQL&gt; alter session set container=TESTZ_TMR_003I;

Session altered.

SQL&gt; create user test01 identified by "test_expire";

User created.

SQL&gt; grant connect to test01;

Grant succeeded.

SQL&gt;
</pre>
</br>



<h3>Test connection with Oracle 26ai Client</h3>



<p class="wp-block-paragraph">I will first set the ORACLE_HOME variable on the appropriate client directory.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,6]">
[oracle@bastion client26ai]$ echo $ORACLE_HOME
/opt/oracle/client19c

[oracle@bastion client26ai]$ export ORACLE_HOME=/opt/oracle/client26ai

[oracle@bastion client26ai]$ echo $ORACLE_HOME
/opt/oracle/client26ai
[oracle@bastion client26ai]$
</pre>
</br>



<p class="wp-block-paragraph">I will update the PATH variable to get tnsping and sqlplus binary from the appropriate Oracle 26ai Client.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4,6]">
[oracle@bastion client26ai]$ echo $PATH
/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/oracle/client19c/bin:/opt/oracle/sqlcl-24.1.0.087.0929//bin

[oracle@bastion client26ai]$ export PATH=/opt/oracle/client26ai/bin

[oracle@bastion client26ai]$ echo $PATH
/opt/oracle/client26ai/bin
[oracle@bastion client26ai]$
</pre>
</br>



<p class="wp-block-paragraph">I will check that the appropriate tnsping and sqlplus is taken.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
[oracle@bastion client26ai]$ which sqlplus
/opt/oracle/client26ai/bin/sqlplus

[oracle@bastion client26ai]$ which tnsping
/opt/oracle/client26ai/bin/tnsping
</pre>
</br>



<p class="wp-block-paragraph">I checked that the connection to target PDB is working.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion ~]$ tnsping svl-oat:1521/testz_tmr_003i.db.jewlab.oraclevcn.com

TNS Ping Utility for Linux: Version 23.26.1.0.0 - Production on 21-MAY-2026 16:28:56

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

Used parameter files:
/opt/oracle/client19c/network/admin/sqlnet.ora

Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=testz_tmr_003i.db.jewlab.oraclevcn.com))(ADDRESS=(PROTOCOL=tcp)(HOST=X.X.1.135)(PORT=1521)))
OK (0 msec)
[oracle@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph">The TNS_ADMIN used is from the 19c Oracle client directory, which is absolutely not a problem.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion ~]$ echo $TNS_ADMIN
/opt/oracle/client19c/network/admin
[oracle@bastion ~]$
</pre>
</br>



<h3>Test sqlplus connection with Oracle 26ai Client</h3>



<p class="wp-block-paragraph">As I can see on my client side, I do not have any sqlplus connection running right now.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[opc@bastion ~]$ ss -nop | grep 1521
[opc@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph"> I will generate a sqlplus connection.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion client26ai]$ sqlplus test01/test_expire@svl-oat:1521/testz_tmr_003i.db.jewlab.oraclevcn.com

SQL*Plus: Release 23.26.1.0.0 - Production on Thu May 21 16:34:23 2026
Version 23.26.1.0.0

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


Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.23.0.0.0

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">And I can see that I have got a sqlplus connection with no timer/keepalive.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[opc@bastion ~]$ ss -nop | grep 1521
tcp   ESTAB  0      0   X.X.0.89:51404    X.X.1.135:1521
[opc@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph">I will now configure Oracle Dead Connection Detection with SQLNET.EXPIRE_TIME parameter set in the client sqlnet.ora with a value of 1 minute.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3,6,8]">
[oracle@bastion ~]$ cd $TNS_ADMIN

[oracle@bastion admin]$ /usr/bin/grep -i expire sqlnet.ora
[oracle@bastion admin]$ 

[oracle@bastion admin]$ /usr/bin/vi sqlnet.ora

[oracle@bastion admin]$ /usr/bin/grep -i expire sqlnet.ora
SQLNET.EXPIRE_TIME=1
[oracle@bastion admin]$
</pre>
</br>



<p class="wp-block-paragraph">I will run a new sqlplus connection.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion admin]$ sqlplus test01/test_expire@svl-oat:1521/testz_tmr_003i.db.jewlab.oraclevcn.com

SQL*Plus: Release 23.26.1.0.0 - Production on Thu May 21 16:41:06 2026
Version 23.26.1.0.0

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

Last Successful login time: Thu May 21 2026 16:34:23 +02:00

Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.23.0.0.0

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">I can now see that I have got a connection configured with a timer and keep alive remaining of 38s.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[opc@bastion ~]$ ss -nop | grep 1521
tcp   ESTAB  0      0     X.X.0.89:62868    X.X.1.135:1521   timer:(keepalive,38sec,0)
[opc@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph">Let&#8217;s configure the EXPIRE_TIME with a value of 15 minutes.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[oracle@bastion admin]$ /usr/bin/vi sqlnet.ora

[oracle@bastion admin]$ /usr/bin/grep -i expire sqlnet.ora
SQLNET.EXPIRE_TIME=15
</pre>
</br>



<p class="wp-block-paragraph">I run a new sqlplus connection.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion admin]$ sqlplus test01/test_expire@svl-oat:1521/testz_tmr_003i.db.jewlab.oraclevcn.com

SQL*Plus: Release 23.26.1.0.0 - Production on Thu May 21 16:43:25 2026
Version 23.26.1.0.0

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

Last Successful login time: Thu May 21 2026 16:42:29 +02:00

Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.23.0.0.0

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">And I now have got a connection configured with a timer and keep alive remaining of 14min.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[opc@bastion ~]$ ss -nop | grep 1521
tcp   ESTAB  0      0     X.X.0.89:60630    X.X.1.135:1521   timer:(keepalive,14min,0)
[opc@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph">So, all good Oracle 26ai Client is supporting Dead Connection Detection with SQLNET.EXPIRE_TIME parameter.</p>



<h3>Let&#8217;s test it with Oracle 19c Client</h3>



<p class="wp-block-paragraph">We can easily confirm again that Oracle 19c Client does not support Dead Connection Detection on the client side.</p>



<p class="wp-block-paragraph">Let&#8217;s move back to Oracle 19c Client home.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,3]">
[oracle@bastion admin]$ export PATH=/opt/oracle/client19c/bin

[oracle@bastion admin]$ which sqlplus
/opt/oracle/client19c/bin/sqlplus
</pre>
</br>



<p class="wp-block-paragraph">Run a sqlplus connection.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[oracle@bastion admin]$ sqlplus test01/test_expire@svl-oat:1521/testz_tmr_003i.db.jewlab.oraclevcn.com

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 21 16:48:09 2026
Version 19.3.0.0.0

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

Last Successful login time: Thu May 21 2026 16:46:07 +02:00

Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.23.0.0.0

SQL&gt;
</pre>
</br>




<p class="wp-block-paragraph">And check connection configuration.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
[opc@bastion ~]$ ss -nop | grep 1521
tcp   ESTAB      0      0    X.X.0.89:64078    X.X.1.135:1521
[opc@bastion ~]$
</pre>
</br>



<p class="wp-block-paragraph">There is no timer/keepalive handled with Oracle 19c Client.</p>



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



<p class="wp-block-paragraph">Oracle Database 26ai Client is now supporting Dead Connection Detection on the client side. For our customer configuration this will help the client to check every X minutes (EXPIRE_TIME configured value) for Dead Connection. So if the CMAN and listener connections have already died and if for any reason the Network Load Balancer is still keeping the connection with the client, the client will close the connection after X minutes.</p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-database-26ai-client-and-sqlnet-expire_time/">Oracle Database 26ai Client and SQLNET.EXPIRE_TIME</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-database-26ai-client-and-sqlnet-expire_time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle DMK release 2.2.0 new features / Windows support.</title>
		<link>https://www.dbi-services.com/blog/oracle-dmk-release-2-2-0-new-features-windows-support/</link>
					<comments>https://www.dbi-services.com/blog/oracle-dmk-release-2-2-0-new-features-windows-support/#respond</comments>
		
		<dc:creator><![CDATA[Tomek Sikorski]]></dc:creator>
		<pubDate>Fri, 06 Jun 2025 08:05:21 +0000</pubDate>
				<category><![CDATA[Database Administration & Monitoring]]></category>
		<category><![CDATA[Database management]]></category>
		<category><![CDATA[Operating systems]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[CDB]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[DMK]]></category>
		<category><![CDATA[dmk 2.2]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[multitenant]]></category>
		<category><![CDATA[PDB]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[windows server 2022]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=37773</guid>

					<description><![CDATA[<p>DMK is a Database Management Kit that can be used in various database environments. It simplifies command-line tasks for Databases Administrator on Unix and Windows systems. It supports multiple databases including Oracle, MongoDB, MariaDB, and PostgreSQL. It also includes additional modules for automating RMAN backups, database duplication, and database creation.dbi-services recently released version 2.2.0, introducing significant improvements for Oracle databases [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-dmk-release-2-2-0-new-features-windows-support/">Oracle DMK release 2.2.0 new features / Windows support.</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMK is a Database Management Kit that can be used in various database environments. </p>



<p class="wp-block-paragraph">It simplifies command-line tasks for Databases Administrator on Unix and Windows systems. It supports multiple databases including Oracle, MongoDB, MariaDB, and PostgreSQL. It also includes additional modules for automating RMAN backups, database duplication, and database creation.<br>dbi-services recently released version 2.2.0, introducing significant improvements for Oracle databases with RAC/ASM and enhanced support for Windows.</p>



<p class="wp-block-paragraph">You can check here more details:</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/products/dmk-management-kit/">https://www.dbi-services.com/products/dmk-management-kit/</a></p>



<p class="wp-block-paragraph">Below example how its showing on command line processes output :</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="914" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-914x1024.png" alt="" class="wp-image-37788" style="width:606px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-914x1024.png 914w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-268x300.png 268w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-768x860.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11.png 1314w" sizes="auto, (max-width: 914px) 100vw, 914px" /></figure>



<h2 class="wp-block-heading" id="h-windows-support">Windows support:</h2>



<p class="wp-block-paragraph">Now managing your Oracle databases on Windows server has never been easier.</p>



<p class="wp-block-paragraph">Just clicking DMK.cmd shortcut on your Desktop open you directly command line with DMK API.</p>



<p class="wp-block-paragraph">Using commands like istat/CDBNAME/lspdb we can easly navigate between our databases.</p>



<p class="wp-block-paragraph">With simple alias &#8216;u&#8217; we can see all databases on Windows server.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6-1024x537.png" alt="" class="wp-image-37780" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6-1024x537.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6-300x157.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6-768x403.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6-1536x805.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-6.png 1950w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<p class="wp-block-paragraph">You can easily list or connect to your Multitenant PDBs just by using alias like lspdb. Use PDBNAME to directly login to your PDB:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="892" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-15-892x1024.png" alt="" class="wp-image-37802" style="width:621px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-15-892x1024.png 892w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-15-261x300.png 261w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-15-768x882.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-15.png 1230w" sizes="auto, (max-width: 892px) 100vw, 892px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="593" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7-1024x593.png" alt="" class="wp-image-37781" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7-1024x593.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7-300x174.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7-768x444.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7-1536x889.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-7.png 1970w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">in connection of DMK_backup and DMK_dbcreate DMK_dbduplicate its quite a powerful pack to manage your databases on Windows platform.</p>



<p class="wp-block-paragraph">Now syntax and output is fully compatible with Linux version</p>



<p class="wp-block-paragraph">This version also not need extra Perl installation, at it will use Perl binaries from Oracle Home on Unix and Windows OS.</p>



<p class="wp-block-paragraph">sqlplus/rman/asmcmd work with command history, simply use sqh and arrrow &#8216;up&#8217; and &#8216;down&#8217; to navigate over your previous selects:</p>



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



<p class="wp-block-paragraph"> taa &#8211; tail on alertlog</p>



<p class="wp-block-paragraph">cdh- move to current ORACLE_HOME</p>



<p class="wp-block-paragraph">cdd -move to DMK home</p>



<p class="wp-block-paragraph">sqh &#8211; sqlplus with history</p>



<p class="wp-block-paragraph">asmh -asmcmd with history</p>



<p class="wp-block-paragraph">rmanh &#8211; rman with history</p>



<p class="wp-block-paragraph">cddi &#8211; move to current DB DIAG_DEST</p>



<p class="wp-block-paragraph">vit/vil/vio &#8211; giving you fast access to edit your current tnsnames listener and oratab config without long time looking them all over filesystem.</p>



<p class="wp-block-paragraph">Full list of aliased you can find in DMK documentation under this <a href="https://dbi-services.gitbook.io/dmk-oracle-manual/installation-and-configuration/variables-and-aliases" target="_blank" rel="noreferrer noopener">link </a></p>



<p class="wp-block-paragraph">Below example of tail on alertlog:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="245" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-1024x245.png" alt="" class="wp-image-37783" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-1024x245.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-300x72.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-768x184.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-1536x368.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-8-2048x490.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Now also when your environment change:</p>



<p class="wp-block-paragraph">·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new ORACLE_HOME</p>



<p class="wp-block-paragraph">·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changed ORACLE_HOME</p>



<p class="wp-block-paragraph">·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new/removed ORACLE_SID</p>



<p class="wp-block-paragraph">·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new/removed PDB&#8217;s</p>



<p class="wp-block-paragraph">DMK will automatically adjust informations and aliases.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="72" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10-1024x72.png" alt="" class="wp-image-37785" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10-1024x72.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10-300x21.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10-768x54.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10-1536x108.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-10.png 1880w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Now when you type &#8216;u&#8217; or SID, all your instances are refreshed from actual state also when some of database up/down status changed:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="846" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9-846x1024.png" alt="" class="wp-image-37784" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9-846x1024.png 846w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9-248x300.png 248w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9-768x929.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9-1270x1536.png 1270w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-9.png 1458w" sizes="auto, (max-width: 846px) 100vw, 846px" /></figure>



<p class="wp-block-paragraph">These changes also apply to Linux version.</p>



<h2 class="wp-block-heading" id="h-oracle-rac-clusterware">Oracle RAC / Clusterware :</h2>



<p class="wp-block-paragraph">For Oracle with RAC/Clusterware configuration there are also some improvements. </p>



<p class="wp-block-paragraph">Use cstat to see crs resources in colored output. </p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="914" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-914x1024.png" alt="" class="wp-image-37788" style="width:759px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-914x1024.png 914w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-268x300.png 268w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11-768x860.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-11.png 1314w" sizes="auto, (max-width: 914px) 100vw, 914px" /></figure>



<p class="wp-block-paragraph">&nbsp;&nbsp;Also you can check your ASM instance:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="824" height="516" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-14.png" alt="" class="wp-image-37792" style="width:454px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-14.png 824w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-14-300x188.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-14-768x481.png 768w" sizes="auto, (max-width: 824px) 100vw, 824px" /></figure>



<p class="wp-block-paragraph">What is also interesting for srvctl command we implemented command-completion with tab </p>



<p class="wp-block-paragraph">So you don&#8217;t need to think anymore about proper srvctl command arguments (and as you know its a lot of options). Now, just choose from the list using [tab]</p>



<p class="wp-block-paragraph">For example, stopping and starting database.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="479" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13-1024x479.png" alt="" class="wp-image-37790" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13-1024x479.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13-300x140.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13-768x359.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13-1536x719.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/03/image-13.png 1598w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">DMK not only helps to use command line commands , but it also helps to keep structural Oracle Optimal Flexible Architecture (OFA) standards of your naming convention/folder structure and keep Oracle best practices for database configuration. By installing additional modules for backup/duplication/dbcreate, you can provide instant standardization and improve quality for your environments.</p>



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



<p class="wp-block-paragraph">You can read more in DMK documentation under this <a href="https://dbi-services.gitbook.io/dmk-oracle-manual" target="_blank" rel="noreferrer noopener">link.</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-dmk-release-2-2-0-new-features-windows-support/">Oracle DMK release 2.2.0 new features / Windows support.</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-dmk-release-2-2-0-new-features-windows-support/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Set SQL Server Trace Flags Automatically and Smoothly</title>
		<link>https://www.dbi-services.com/blog/set-sql-server-trace-flags-automatically-and-smoothly/</link>
					<comments>https://www.dbi-services.com/blog/set-sql-server-trace-flags-automatically-and-smoothly/#respond</comments>
		
		<dc:creator><![CDATA[Hocine Mechara]]></dc:creator>
		<pubDate>Tue, 29 Apr 2025 15:56:09 +0000</pubDate>
				<category><![CDATA[Database management]]></category>
		<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=38241</guid>

					<description><![CDATA[<p>Managing SQL Server trace flags effectively is a common task for DBAs and system engineers, especially when tuning the SQL Server behavior for specific use cases or performance optimizations. While trace flags can be enabled programmatically using T-SQL commands such as DBCC TRACEON, this approach has an inherent limitation: the flags are session-based or global [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/set-sql-server-trace-flags-automatically-and-smoothly/">Set SQL Server Trace Flags Automatically and Smoothly</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Managing SQL Server trace flags effectively is a common task for DBAs and system engineers, especially when tuning the SQL Server behavior for specific use cases or performance optimizations. While trace flags can be enabled programmatically using T-SQL commands such as DBCC TRACEON, this approach has an inherent limitation: the flags are session-based or global only until the SQL Server instance is restarted. After a service restart, these trace flags are no longer active unless they are configured as startup parameters.</p>



<p class="wp-block-paragraph">To ensure persistence across restarts, trace flags need to be set as startup parameters. Traditionally, this can be done manually through two main avenues: using the SQL Server Configuration Manager or editing the Windows Registry directly. However, both of these approaches require manual interaction and are not ideal for automated deployments, large-scale environments or automated deployments.</p>



<p class="wp-block-paragraph">Unfortunately, SQL Server doesn’t provide a built-in command-line tool or T-SQL syntax to set trace flags as startup parameters programmatically. This gap leaves many DBAs and system engineers either scripting complex registry edits themselves or relying on manual configurations.</p>



<p class="wp-block-paragraph">That’s exactly the problem I set out to solve. I developed a PowerShell function that allows you to set SQL Server trace flags as startup parameters in a programmatical way and I’m using this function already at one of my customers to set Trace flags within an automated deployment process. This function not only configures the registry settings required for each SQL Server instance on a server, but it also offers optional functionality to restart the SQL Server service—ensuring that your changes take effect immediately. Even better, it includes logic to detect which trace flags are already in place and avoids redundant updates.</p>



<p class="wp-block-paragraph">In this blog post, I’ll walk you through how the function works, how to use it in your own environment, and how it can fit into your broader infrastructure automation strategy. Whether you manage a single SQL Server or dozens across a large environment, this solution aims to simplify your workflow and reduce the risk of human error.</p>



<h2 class="wp-block-heading" id="h-let-s-take-a-look-at-how-to-set-the-trace-flag-programmatically-with-the-powershell-function"><strong>Let’s take a look at how to set the Trace flag programmatically with the PowerShell Function:</strong></h2>



<p class="wp-block-paragraph">I have the function stored in a ps1 file within my visual studio project directory.</p>



<figure class="wp-block-image size-full is-resized is-style-default wp-duotone-unset-1"><img loading="lazy" decoding="async" width="226" height="221" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-39.png" alt="" class="wp-image-38244" style="width:421px;height:auto" /></figure>



<p class="wp-block-paragraph">To execute the function and pass the appropriate input parameters to the function, I create a second .ps1 file in the same directory.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="229" height="220" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-38.png" alt="" class="wp-image-38243" style="width:424px;height:auto" /></figure>



<p class="wp-block-paragraph">In this file I add the following values in variables:</p>



<p class="wp-block-paragraph"><strong>$Trace flags</strong> &#8211; The trace flags I would like to set for the particular instances</p>



<p class="wp-block-paragraph"><strong>$Restart</strong> &#8211; This defines if the SQL-Server Service should be restarted after setting the trace flags (Y = restart, N = no restart)</p>



<p class="wp-block-paragraph"><strong>$ServerName</strong> &#8211; This defines the Server on which the trace flags should be set as a startup parameter for every instance running on it</p>



<p class="wp-block-paragraph"><strong>$Cred &#8211;</strong>This is the credential which is used to access the remote Server</p>



<p class="wp-block-paragraph">Then I import the function as a module and execute the function with the values stored in the variables as input parameters.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="205" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-40.png" alt="" class="wp-image-38245" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-40.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-40-300x102.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">After saving the file I execute it from the terminal. You can see that the Trace flags have been successfully set.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="206" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-41.png" alt="" class="wp-image-38246" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-41.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-41-300x103.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">When we take a look in the registry on the particular server we can see, that the Trace flags have been added.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="177" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-42.png" alt="" class="wp-image-38247" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-42.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-42-300x88.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">We can see the same result when taking a look on the startup parameters from the SQL Server Configuration Manager.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="328" height="401" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-43.png" alt="" class="wp-image-38248" style="width:388px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-43.png 328w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-43-245x300.png 245w" sizes="auto, (max-width: 328px) 100vw, 328px" /></figure>



<p class="wp-block-paragraph">Let’s take a look from the SQL Server Management Studio. With the DBCC TRACESTATUS() function. You can see, that no trace flags are currently active.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="218" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-44.png" alt="" class="wp-image-38249" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-44.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-44-300x109.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">This is because the trace flags are set as startup parameters and will become active on the next service start. </p>



<p class="wp-block-paragraph">After restarting the SQL Server service, we can see that the trace flags are now active. </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="496" height="307" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-45.png" alt="" class="wp-image-38250" style="width:484px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-45.png 496w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-45-300x186.png 300w" sizes="auto, (max-width: 496px) 100vw, 496px" /></figure>



<p class="wp-block-paragraph">In a running production environment, you can also enable the trace flags using the <code>DBCC TRACEON()</code> command with a global scope (<code>-1</code>) to avoid service interruption. This allows the trace flags to take effect immediately without restarting the SQL Server instance. Since the script also adds them as startup parameters in the registry, the trace flags will persist after the next restart.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
DBCC TRACEON (2371, -1);
GO
DBCC TRACEON (3226, -1);
GO
</pre></div>


<p class="wp-block-paragraph">The function is as well “intelligent” enough to see which trace flags are already in place and only sets the trace flags which are missing.</p>



<p class="wp-block-paragraph">When I execute the function again with the same trace flags, you can see, that the functions tells you that the trace flags are already in place.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="230" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-46.png" alt="" class="wp-image-38251" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-46.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-46-300x115.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">The function can also trigger a restart of the SQL-Server service to ensure that the trace flags become active immediately. Let consider therefore, that we want to set additionally the trace flag 1211. I change as well the $Restart variable to ‘Y’ to trigger a service restart.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="212" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-47.png" alt="" class="wp-image-38252" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-47.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-47-300x106.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">After saving the file and executing it again from the terminal you can see that the trace flag 1211 has been set and that the instance has been restarted.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="602" height="158" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-48.png" alt="" class="wp-image-38253" style="width:840px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-48.png 602w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-48-300x79.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph">As the function triggered a restart of the instance, you can now see from the SQL Server Management Studio that the trace flag has become already active.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="452" height="321" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-49.png" alt="" class="wp-image-38254" style="width:523px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-49.png 452w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/04/image-49-300x213.png 300w" sizes="auto, (max-width: 452px) 100vw, 452px" /></figure>



<p class="wp-block-paragraph">I hope this post was interesting for you <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Let me know your thoughts in the comment section below.</p>



<p class="wp-block-paragraph">I’ve uploaded the PowerShell function to GitHub. You can access it under this link: <a href="https://github.com/HocineMechara/SetSQLServerTraceFlags.git">https://github.com/HocineMechara/SetSQLServerTrace flags.git</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/set-sql-server-trace-flags-automatically-and-smoothly/">Set SQL Server Trace Flags Automatically and Smoothly</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/set-sql-server-trace-flags-automatically-and-smoothly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Restore a database using Veeam RMAN plug-in on an ODA</title>
		<link>https://www.dbi-services.com/blog/restore-a-database-using-veeam-rman-plug-in-on-an-oda/</link>
					<comments>https://www.dbi-services.com/blog/restore-a-database-using-veeam-rman-plug-in-on-an-oda/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 21:07:17 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[Veeam]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=38083</guid>

					<description><![CDATA[<p>I recently wrote a blog to show how to configure Veeam RMAN plug-in to take database backups. As all DBA knows, configuring a backup, will not go without testing a restore. In this blog I will show how I tested my previous Veeam configuration and backups performed with this Veeam RMAN plug-in on the same [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/restore-a-database-using-veeam-rman-plug-in-on-an-oda/">Restore a database using Veeam RMAN plug-in on an ODA</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently wrote a blog to show how to configure Veeam RMAN plug-in to take database backups. As all DBA knows, configuring a backup, will not go without testing a restore. In this blog I will show how I tested my previous Veeam configuration and backups performed with this Veeam RMAN plug-in on the same ODA. In order to test that the Veeam backups are usable, we will create a new CVEEAMT container database on the ODA and restore existing CDB1 container database into CVEEAMT using a previous existing VEEAM backup we took after configuring the plug-in. The restore will be done through a duplicate.</p>



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



<h3>Pay attention</h3>



<p class="wp-block-paragraph">As we will restore an existing production container database, named CDB1, hosting a PDB named, PDB1,  into new CVEEAMT container database, we will have a duplicate PDB. As we know that each PDB is registered into the listener, both PDB1 will be reachable through the same service, which, if the PDB1 is in use, could have dramatical consequence. There before doing the restore into the new container database we will change the domain of the newly created one.</p>



<h3>Create new container database CVEEAMT</h3>



<p class="wp-block-paragraph">With odacli we will create the new container databasse named CVEEAMT.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,7,22]">
[root@ODA2 ~]# odacli list-dbhomes
ID                                       Name                 DB Version           DB Edition Home Location                                            Status
---------------------------------------- -------------------- -------------------- ---------- -------------------------------------------------------- ----------
3941f574-77bd-4f9e-a1f6-db2bb654f334     OraDB19000_home1     19.25.0.0.241015     SE         /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1     CONFIGURED
b922980f-cecd-4bf8-a688-eb41dd4b5b4b     OraDB19000_home2     19.25.0.0.241015     SE         /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2     CONFIGURED

[root@ODA2 ~]# odacli create-database -dh 3941f574-77bd-4f9e-a1f6-db2bb654f334 -n CVEEAMT -u CVEEAMT_SITE1 -cl OLTP -c -p VEEAMT -no-co -cs AL32UTF8 -ns UTF8 -l AMERICAN -dt AMERICA -s odb1 -r ACFS
Enter SYS, SYSTEM and PDB Admin user password:
Retype SYS, SYSTEM and PDB Admin user password:

Job details
----------------------------------------------------------------
                     ID:  7d99e795-31e8-4c96-af15-376405180978
            Description:  Database service creation with DB name: CVEEAMT
                 Status:  Created
                Created:  February 19, 2025 11:37:16 CET
                Message:

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

[root@ODA2 ~]# odacli describe-job -i 7d99e795-31e8-4c96-af15-376405180978

Job details
----------------------------------------------------------------
                     ID:  7d99e795-31e8-4c96-af15-376405180978
            Description:  Database service creation with DB name: CVEEAMT
                 Status:  Success
                Created:  February 19, 2025 11:37:16 CET
                Message:

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------
Setting up SSH equivalence               February 19, 2025 11:37:20 CET           February 19, 2025 11:37:20 CET           Success
Setting up SSH equivalence               February 19, 2025 11:37:20 CET           February 19, 2025 11:37:20 CET           Success
Creating volume datCVEEAMT               February 19, 2025 11:37:20 CET           February 19, 2025 11:37:35 CET           Success
Creating volume rdoCVEEAMT               February 19, 2025 11:37:35 CET           February 19, 2025 11:37:50 CET           Success
Creating ACFS filesystem for DATA        February 19, 2025 11:37:50 CET           February 19, 2025 11:38:14 CET           Success
Creating ACFS filesystem for RECO        February 19, 2025 11:38:14 CET           February 19, 2025 11:38:37 CET           Success
Database Service creation                February 19, 2025 11:38:38 CET           February 19, 2025 11:52:54 CET           Success
Database Creation by RHP                 February 19, 2025 11:38:38 CET           February 19, 2025 11:50:16 CET           Success
Change permission for xdb wallet files   February 19, 2025 11:50:16 CET           February 19, 2025 11:50:17 CET           Success
Add Startup Trigger to Open all PDBS     February 19, 2025 11:50:17 CET           February 19, 2025 11:50:18 CET           Success
Place SnapshotCtrlFile in sharedLoc      February 19, 2025 11:50:18 CET           February 19, 2025 11:50:21 CET           Success
SqlPatch upgrade                         February 19, 2025 11:51:35 CET           February 19, 2025 11:51:55 CET           Success
Running dbms_stats init_package          February 19, 2025 11:51:55 CET           February 19, 2025 11:51:56 CET           Success
Set log_archive_dest for Database        February 19, 2025 11:51:56 CET           February 19, 2025 11:51:58 CET           Success
Updating the Database version            February 19, 2025 11:51:58 CET           February 19, 2025 11:52:02 CET           Success
Create Users tablespace                  February 19, 2025 11:52:54 CET           February 19, 2025 11:52:57 CET           Success
Clear all listeners from Database        February 19, 2025 11:52:57 CET           February 19, 2025 11:52:58 CET           Success
Copy Pwfile to Shared Storage            February 19, 2025 11:53:00 CET           February 19, 2025 11:53:01 CET           Success

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



<h3>Change the domain</h3>



<p class="wp-block-paragraph">As explained previously, for the newly created container database, we will change the existing domain domain.ch to test.ch, in order not to conflict connecting to both PDB1 once the restore is done.</p>



<p class="wp-block-paragraph">Existing listener registration for the new CVEEAMT container database and PDB:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] lsnrctl status | grep -i veeam
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMTXDB.domain.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMT_SITE1.domain.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "veeamt.domain.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
</pre>
</br>



<p class="wp-block-paragraph">As we can see new CDB and new PDB are registered into the listener using existing ODA domain domain.ch.</p>



<p class="wp-block-paragraph">Let&#8217;s change it to test.ch.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13,19]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 11:59:25 2025
Version 19.25.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; show parameter domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      domain.ch

SQL&gt; alter system set db_domain='test.ch' scope=spfile;

System altered.
</pre>
</br>



<p class="wp-block-paragraph">We will restart the database for the changes to take effects.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] srvctl stop database -d CVEEAMT_SITE1
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] srvctl start database -d CVEEAMT_SITE1
</pre>
</br>



<p class="wp-block-paragraph">We will check listener registration:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] lsnrctl status | grep -i veeam
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMTXDB.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMT_SITE1.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "veeamt.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
</pre>
</br>



<p class="wp-block-paragraph">As well as domain instance parameter:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 12:02:23 2025
Version 19.25.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; show parameter db_domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      test.ch
</pre>
</br>



<h3>Listener configuration</h3>



<p class="wp-block-paragraph">As we will duplicate CDB1 to CVEEAMT, the database name will be renamed. This implies a database restart, which will be done through a listener connection. Therefore, for RMAN to connect to a closed database remotely, we will need to add a static entry that will be used for RMAN duplicate auxiliary connection.</p>



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



<pre class="brush: sql; gutter: true; first-line: 1">
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = CVEEAMT_SITE1.test.ch)
      (ORACLE_HOME   = /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME      = CVEEAMT)
     )
  )
</pre>
</br>



<p class="wp-block-paragraph">Backup existing listener configuration on the ODA:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,12,13]">
grid@ODA2:~/ [rdbms1900] grinf19
grid@ODA2:~/ [grinf19] cdt
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] ls -ltrh
total 28K
-rw-r--r-- 1 grid oinstall 1.5K Feb 14  2018 shrept.lst
drwxr-xr-x 2 grid oinstall 4.0K Apr 17  2019 samples
-rw-r--r-- 1 grid oinstall  266 Dec  3 17:33 listener.ora.bak.ODA2.grid
-rw-r--r-- 1 grid oinstall  504 Dec  3 17:34 listener.ora
-rw-r----- 1 grid oinstall  504 Dec  3 17:34 listener2412035PM3433.bak
-rw-r----- 1 grid oinstall  179 Dec  3 17:34 sqlnet.ora.20250204
-rw-r----- 1 grid oinstall  200 Feb  4 15:00 sqlnet.ora
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] mkdir history
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] cp -p listener.ora ./history/listener.ora.202502191205
</pre>
</br>



<p class="wp-block-paragraph">Add listener static entry:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] vi listener.ora
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] diff listener.ora ./history/listener.ora.202502191205
7,15d6
&lt;
&lt; SID_LIST_LISTENER =
&lt;   (SID_LIST =
&lt;     (SID_DESC =
&lt;       (GLOBAL_DBNAME = CVEEAMT_SITE1.test.ch)
&lt;       (ORACLE_HOME   = /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1)
&lt;       (SID_NAME      = CVEEAMT)
&lt;      )
&lt;   )
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19]
</pre>
</br>



<p class="wp-block-paragraph">Reload the listener:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] lsnrctl reload

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-FEB-2025 13:01:10

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
The command completed successfully
</pre>
</br>



<p class="wp-block-paragraph">And check running static registration, that we can recognize with the UNKNOWN status:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5,6]">
grid@ODA2:/u01/app/19.25.0.0/grid/network/admin/ [grinf19] lsnrctl status | grep -i veeam
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMTXDB.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMT_SITE1.test.ch" has 2 instance(s).
  Instance "CVEEAMT", status UNKNOWN, has 1 handler(s) for this service...
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "veeamt.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
</pre>
</br>




<h3>Configure Oracle network connections</h3>



<p class="wp-block-paragraph">We will configure appropriate tnsnames.ora entries that will be used to connect to target and auxiliary database.</p>



<p class="wp-block-paragraph">We just need to add new auxiliary entry. The target entry for CDB1 connection is still existing and will permit connection to existing CDB1 production container database.</p>



<p class="wp-block-paragraph">tnsnames connection to add:</p>



<pre class="brush: sql; gutter: true; first-line: 1">
CVEEAMT_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ODA2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = CVEEAMT_SITE1.test.ch)
    )
  )
</pre>
</br>



<p class="wp-block-paragraph">tnsnames.ora backup and configuration changes. Entry for CVEEAMT_SITE1 already exist and was performed initially by odacli:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,8,9,10]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] cdt
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] ls -ltrh
total 112K
-rw-r--r-- 1 oracle oinstall 1.5K Feb 14  2018 shrept.lst
drwxr-xr-x 2 oracle oinstall  20K Apr 17  2019 samples
drwxr-xr-x 2 oracle oinstall  20K Dec 18 14:01 history
-rw-r----- 1 oracle oinstall 2.6K Feb 19 11:45 tnsnames.ora
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] cp -p tnsnames.ora ./history/tnsnames.ora.202502191305
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] vi tnsnames.ora
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] diff tnsnames.ora ./history/tnsnames.ora.202502191305
115c115
       (SERVICE_NAME = CVEEAMT_SITE1.domain.ch)
</pre>
</br>



<h3>Test target and auxiliary connections</h3>



<p class="wp-block-paragraph">Test connection to auxiliary database, CVEEAMT:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,14,15]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] sqlplus sys@CVEEAMT_SITE1 as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 13:07:24 2025
Version 19.25.0.0.0

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

Enter password:

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; set line 300
SQL&gt; select instance_name, host_name from v$instance;

INSTANCE_NAME    HOST_NAME
---------------- ----------------------------------------------------------------
CVEEAMT          ODA2.domain.ch

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">Test connection to target database, CDB1:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,14,15]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/ [CVEEAMT (CDB$ROOT)] sqlplus sys@CDB1_SITE1 as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 13:08:53 2025
Version 19.25.0.0.0

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

Enter password:

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; set line 300
SQL&gt; select instance_name, host_name from v$instance;

INSTANCE_NAME    HOST_NAME
---------------- ----------------------------------------------------------------
CDB1            ODA2.domain.ch

SQL&gt;
</pre>
</br>




<h3> Delete CVEEAMT DB files</h3>



<p class="wp-block-paragraph">We will now delete CVEEAMT database files before executing the restore.</p>



<p class="wp-block-paragraph">We will first check spfile:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,8,10]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] cdh
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/ [CVEEAMT (CDB$ROOT)] cd dbs
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] ls -ltrh *CVEEAMT*
-rw-r----- 1 oracle asmadmin   24 Feb 19 11:39 lkCVEEAMT_SITE1
-rw-r----- 1 oracle asmadmin   24 Feb 19 11:40 lkCVEEAMT
-rw-r----- 1 oracle oinstall   69 Feb 19 11:48 initCVEEAMT.ora
-rw-rw---- 1 oracle asmadmin 1.6K Feb 19 12:01 hc_CVEEAMT.dat
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] cat initCVEEAMT.ora
SPFILE='/u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora'
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] srvctl config database -d CVEEAMT_SITE1 | grep -i spfile
Spfile: /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)]
</pre>
</br>




<p class="wp-block-paragraph">We will stop the database:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] srvctl stop database -d CVEEAMT_SITE1
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] CVEEAMT

 **************************
 INSTANCE_NAME   : CVEEAMT
 STATUS          : DOWN
 **************************
 Statustime: 2025-02-19 13:11:56
</pre>
</br>



<p class="wp-block-paragraph">We will backup the spfile:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] cp -p /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora.bak.202502191312
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] ls -ltrh /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/
total 20K
-rw-r----- 1 oracle asmadmin 2.0K Feb 19 11:41 orapwCVEEAMT
-rw-r----- 1 oracle oinstall 6.5K Feb 19 12:02 spfileCVEEAMT.ora.bak.202502191312
-rw-r----- 1 oracle asmadmin 6.5K Feb 19 12:02 spfileCVEEAMT.ora
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)]
</pre>
</br>



<p class="wp-block-paragraph">We will drop CVEEAMT database:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,10,20]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 13:14:09 2025
Version 19.25.0.0.0

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

Connected to an idle instance.

SQL&gt; startup mount restrict
ORACLE instance started.

Total System Global Area 4294965864 bytes
Fixed Size                  9185896 bytes
Variable Size             855638016 bytes
Database Buffers         3388997632 bytes
Redo Buffers               41144320 bytes
Database mounted.

SQL&gt; drop database;

Database dropped.

Disconnected from Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">We will restore the spfile that was deleted with the drop database command:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6,8]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] ls -ltrh /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/
total 12K
-rw-r----- 1 oracle asmadmin 2.0K Feb 19 11:41 orapwCVEEAMT
-rw-r----- 1 oracle oinstall 6.5K Feb 19 12:02 spfileCVEEAMT.ora.bak.202502191312

oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] cp -p /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora.bak.202502191312 /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/spfileCVEEAMT.ora

oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] ls -ltrh /u02/app/oracle/oradata/CVEEAMT_SITE1/dbs/
total 20K
-rw-r----- 1 oracle asmadmin 2.0K Feb 19 11:41 orapwCVEEAMT
-rw-r----- 1 oracle oinstall 6.5K Feb 19 12:02 spfileCVEEAMT.ora.bak.202502191312
-rw-r----- 1 oracle oinstall 6.5K Feb 19 12:02 spfileCVEEAMT.ora
</pre>
</br>



<h3>Startup nomount auxiliary database</h3>



<p class="wp-block-paragraph">We will startup in nomount status the auxiliary database, CVEEAMT.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,10]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 13:15:45 2025
Version 19.25.0.0.0

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

Connected to an idle instance.

SQL&gt; startup nomount
ORACLE instance started.

Total System Global Area 4294965864 bytes
Fixed Size                  9185896 bytes
Variable Size             855638016 bytes
Database Buffers         3388997632 bytes
Redo Buffers               41144320 bytes
SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">Database is started in nomunt and static registration available:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)] lsnrctl status | grep -i veeam
Service "CVEEAMT_SITE1.test.ch" has 2 instance(s).
  Instance "CVEEAMT", status UNKNOWN, has 1 handler(s) for this service...
  Instance "CVEEAMT", status BLOCKED, has 1 handler(s) for this service...
oracle@ODA2:/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/ [CVEEAMT (CDB$ROOT)]
</pre>
</br>



<h3>Check CDB1 backups</h3>



<p class="wp-block-paragraph">We will check that last automatic backups that we configured in the crontab at the end of the VEEAM RMAN plug-in configuration are successfully.</p>



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



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] ls -ltrh *inc0* | tail -n1
-rw-r--r-- 1 oracle oinstall 17K Feb 16 18:20 CDB1_bck_inc0_no_arc_del_tape_20250216_180002.log

oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] tail CDB1_bck_inc0_no_arc_del_tape_20250216_180002.log

Recovery Manager complete.

RMAN return Code: 0

#**************************************************************************************************#
#                    END OF: CDB1_bck_inc0_no_arc_del_tape_20250216_180002.log                    #
#--------------------------------------------------------------------------------------------------#
#                                  timestamp: 2025-02-16_18:20:54                                  #
#**************************************************************************************************#
</pre>
</br>



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



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] ls -ltrh *inc1* | tail -n1
-rw-r--r-- 1 oracle oinstall 17K Feb 18 18:01 CDB1_bck_inc1_no_arc_del_tape_20250218_180002.log

oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] tail CDB1_bck_inc1_no_arc_del_tape_20250218_180002.log

Recovery Manager complete.

RMAN return Code: 0

#**************************************************************************************************#
#                    END OF: CDB1_bck_inc1_no_arc_del_tape_20250218_180002.log                    #
#--------------------------------------------------------------------------------------------------#
#                                  timestamp: 2025-02-18_18:01:31                                  #
#**************************************************************************************************#
</pre>
</br>



<p class="wp-block-paragraph">Archived log backup:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,4]">
oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] ls -ltrh *arc_no_arc* | tail -n1
-rw-r--r-- 1 oracle oinstall 7.6K Feb 19 12:40 CDB1_bck_arc_no_arc_del_tape_20250219_124002.log

oracle@ODA2:/u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/ [CDB1 (CDB$ROOT)] tail CDB1_bck_arc_no_arc_del_tape_20250219_124002.log

Recovery Manager complete.

RMAN return Code: 0

#**************************************************************************************************#
#                    END OF: CDB1_bck_arc_no_arc_del_tape_20250219_124002.log                     #
#--------------------------------------------------------------------------------------------------#
#                                  timestamp: 2025-02-19_12:40:49                                  #
#**************************************************************************************************#
</pre>
</br>



<h3>Create a new table on PDB1 existing in target CDB1</h3>



<p class="wp-block-paragraph">In order to check some data contents after the restore we will create a TEST1 table in the PDB1 from existing target CDB1 container database.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13,20,24]">
oracle@ODA2:~/ [CDB1 (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 14:07:35 2025
Version 19.25.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO

SQL&gt; alter session set container=PDB1;

Session altered.

SQL&gt; create table TEST1 as select * from dba_users;

Table created.
</pre>
</br>



<h3>Archived log backup on CDB1</h3>



<p class="wp-block-paragraph">Let&#8217;s take a last archived log backup to record last transaction, including our TEST1 table creation.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:~/ [CDB1 (CDB$ROOT)] /u01/app/oracle/local/dmk_ha/bin/check_primary.ksh CDB1 "/u01/app/oracle/local/dmk_dbbackup/bin/dmk_rman.ksh -s CDB1 -t bck_arc_no_arc_del_tape.rcv -c /u01/app/odaorabase/oracle/admin/CDB1_SITE1/etc/rman.cfg"
2025-02-19_14:09:49::check_primary.ksh::SetOraEnv       ::INFO ==&gt; Environment: CDB1 (/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1)
2025-02-19_14:09:49::check_primary.ksh::MainProgram     ::INFO ==&gt; Getting V$DATABASE.DB_ROLE for CDB1
2025-02-19_14:09:49::check_primary.ksh::MainProgram     ::INFO ==&gt; CDB1 Database Role is: PRIMARY
2025-02-19_14:09:49::check_primary.ksh::MainProgram     ::INFO ==&gt; Program going ahead and starting requested command
2025-02-19_14:09:49::check_primary.ksh::MainProgram     ::INFO ==&gt; Script : /u01/app/oracle/local/dmk_dbbackup/bin/dmk_rman.ksh -s CDB1 -t bck_arc_no_arc_del_tape.rcv -c /u01/app/odaorabase/oracle/admin/CDB1_SITE1/etc/rman.cfg

[OK]::EBL::RMAN::dmk_dbbackup::CDB1::bck_arc_no_arc_del_tape.rcv::RMAN_retCode::0
Logfile is : /u01/app/odaorabase/oracle/admin/CDB1_SITE1/log/CDB1_bck_arc_no_arc_del_tape_20250219_140949.log


2025-02-19_14:10:37::check_primary.ksh::CleanExit       ::INFO ==&gt; Program exited with ExitCode : 0
oracle@ODA2:~/ [CDB1 (CDB$ROOT)]
</pre>
</br>



<h3>Duplicate CDB1 to CVEEAMT</h3>



<p class="wp-block-paragraph">Let&#8217;s do our VEEAM RMAN Plug-in test by restoring CDB1 to CVEEAMT using duplicate from backup command.</p>



<p class="wp-block-paragraph">The run block will be the following. We will allocate an auxiliary channel using the VEEAM RMAN plug-in library connection that was configured in previous blog.</p>



<pre class="brush: sql; gutter: true; first-line: 1">
run {
ALLOCATE AUXILIARY CHANNEL VeeamAgentChannel1 DEVICE TYPE SBT_TAPE PARMS 'SBT_LIBRARY=/opt/veeam/VeeamPluginforOracleRMAN/libOracleRMANPlugin.so' FORMAT 'e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_%I_%d_%T_%U.vab';
duplicate database CDB1 to CVEEAMT;
}
</pre>
</br>



<p class="wp-block-paragraph">Check auxiliary database files. We can see there is no OMF datafile directory.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] ls -lrh /u02/app/oracle/oradata/CVEEAMT_SITE1/
total 168K
drwx------ 2 root   root     64K Feb 19 11:38 lost+found
drwxr-x--- 2 oracle oinstall 20K Feb 19 13:15 dbs
drwxrwx--- 2 oracle oinstall 20K Feb 19 11:51 arc10
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)]
</pre>
</br>



<p class="wp-block-paragraph">Restore the database using the VEEAM backups. We will only use 1 target and 1 auxiliary channel knowing we are running Oracle SE2 edition at customer side:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,8,13,18,19,20,21,22,23,24,25]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] rmanh

Recovery Manager: Release 19.0.0.0.0 - Production on Wed Feb 19 14:13:30 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect target sys@CDB1_SITE1
connect target *
target database Password:
connected to target database: CDB1 (DBID=756666048)

RMAN&gt; connect auxiliary sys@CVEEAMT_SITE1
connect auxiliary *
auxiliary database Password:
connected to auxiliary database: CVEEAMT (not mounted)

run {
run {
2&gt; ALLOCATE AUXILIARY CHANNEL VeeamAgentChannel1 DEVICE TYPE SBT_TAPE PARMS 'SBT_LIBRARY=/opt/veeam/VeeamPluginforOracleRMAN/libOracleRMANPlugin.so' FORMAT 'e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_%I_%d_%T_%U.vab';
ALLOCATE AUXILIARY CHANNEL VeeamAgentChannel1 DEVICE TYPE SBT_TAPE PARMS 'SBT_LIBRARY=/opt/veeam/VeeamPluginforOracleRMAN/libOracleRMANPlugin.so' FORMAT 'e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_%I_%d_%T_%U.vab';
3&gt; duplicate database CDB1 to CVEEAMT;
duplicate database CDB1 to CVEEAMT;
4&gt; }
}
using target database control file instead of recovery catalog
allocated channel: VeeamAgentChannel1
channel VeeamAgentChannel1: SID=16 device type=SBT_TAPE
channel VeeamAgentChannel1: Veeam Plug-in for Oracle RMAN

Starting Duplicate Db at 19-FEB-2025 14:15:08
current log archived
duplicating Online logs to Oracle Managed File (OMF) location
duplicating Datafiles to Oracle Managed File (OMF) location

contents of Memory Script:
{
   sql clone "alter system set  control_files =
  ''/u04/app/oracle/redo/CVEEAMT/CVEEAMT_SITE1/controlfile/o1_mf_mvcf9nor_.ctl'' comment=
 ''Set by RMAN'' scope=spfile";
   sql clone "alter system set  db_name =
 ''CDB1'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  control_files =   ''/u04/app/oracle/redo/CVEEAMT/CVEEAMT_SITE1/controlfile/o1_mf_mvcf9nor_.ctl'' comment= ''Set by RMAN'' scope=spfile

sql statement: alter system set  db_name =  ''CDB1'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area    4294965864 bytes

Fixed Size                     9185896 bytes
Variable Size                855638016 bytes
Database Buffers            3388997632 bytes
Redo Buffers                  41144320 bytes
allocated channel: VeeamAgentChannel1
channel VeeamAgentChannel1: SID=21 device type=SBT_TAPE
channel VeeamAgentChannel1: Veeam Plug-in for Oracle RMAN

Starting restore at 19-FEB-2025 14:15:33

channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: restoring control file
channel VeeamAgentChannel1: reading from backup piece c-756666048-20250219-09_RMAN_AUTOBACKUP.vab
channel VeeamAgentChannel1: piece handle=c-756666048-20250219-09_RMAN_AUTOBACKUP.vab tag=TAG20250219T141031
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
output file name=/u04/app/oracle/redo/CVEEAMT/CVEEAMT_SITE1/controlfile/o1_mf_mvcf9nor_.ctl
Finished restore at 19-FEB-2025 14:15:56

database mounted

contents of Memory Script:
{
   set until scn  13117839;
   set newname for clone datafile  1 to new;
   set newname for clone datafile  3 to new;
   set newname for clone datafile  4 to new;
   set newname for clone datafile  5 to new;
   set newname for clone datafile  6 to new;
   set newname for clone datafile  7 to new;
   set newname for clone datafile  8 to new;
   set newname for clone datafile  9 to new;
   set newname for clone datafile  10 to new;
   set newname for clone datafile  11 to new;
   set newname for clone datafile  12 to new;
   set newname for clone datafile  13 to new;
   set newname for clone datafile  14 to new;
   set newname for clone datafile  15 to new;
   set newname for clone datafile  16 to new;
   set newname for clone datafile  17 to new;
   set newname for clone datafile  18 to new;
   set newname for clone datafile  19 to new;
   set newname for clone datafile  20 to new;
   set newname for clone datafile  21 to new;
   set newname for clone datafile  22 to new;
   set newname for clone datafile  23 to new;
   set newname for clone datafile  24 to new;
   set newname for clone datafile  25 to new;
   set newname for clone datafile  26 to new;
   set newname for clone datafile  27 to new;
   set newname for clone datafile  28 to new;
   set newname for clone datafile  29 to new;
   set newname for clone datafile  30 to new;
   set newname for clone datafile  31 to new;
   set newname for clone datafile  32 to new;
   set newname for clone datafile  33 to new;
   set newname for clone datafile  34 to new;
   set newname for clone datafile  35 to new;
   set newname for clone datafile  36 to new;
   set newname for clone datafile  37 to new;
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 19-FEB-2025 14:16:01

channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00005 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_system_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00006 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_sysaux_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00007 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_undotbs1_%u_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250204_en3guuba_471_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250204_en3guuba_471_1_1.vab tag=INC0_20250204_133948
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00010 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 1 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_1_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00010 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 2 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_2_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_2_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 2
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00010 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 3 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_3_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_3_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 3
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00013 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00014 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00017 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00020 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00023 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00026 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00029 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00032 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00035 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_%u_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s83hv262_904_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s83hv262_904_1_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00008 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_system_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00015 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00018 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00021 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00024 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00027 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00030 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00033 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00036 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_%u_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s93hv2h6_905_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s93hv2h6_905_1_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00009 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00011 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00016 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00019 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00022 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00025 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00028 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00031 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00034 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00037 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_%u_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sa3hv2pf_906_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sa3hv2pf_906_1_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
channel VeeamAgentChannel1: starting datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
channel VeeamAgentChannel1: restoring datafile 00001 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_system_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00003 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00004 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_%u_.dbf
channel VeeamAgentChannel1: restoring datafile 00012 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_%u_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sb3hv2pu_907_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sb3hv2pu_907_1_1.vab tag=INC0_20250216_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:07
Finished restore at 19-FEB-2025 14:16:50

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=40 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_system_mvcpfwvf_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=41 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=42 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=43 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_system_mvcpdmpq_.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=44 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_sysaux_mvcpdmq3_.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=45 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_undotbs1_mvcpdmqj_.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=46 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_system_mvcpfhf3_.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=47 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=48 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=49 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=50 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf
datafile 13 switched to datafile copy
input datafile copy RECID=51 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf
datafile 14 switched to datafile copy
input datafile copy RECID=52 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpf7lt_.dbf
datafile 15 switched to datafile copy
input datafile copy RECID=53 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpfgl2_.dbf
datafile 16 switched to datafile copy
input datafile copy RECID=54 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpfost_.dbf
datafile 17 switched to datafile copy
input datafile copy RECID=55 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpf7m4_.dbf
datafile 18 switched to datafile copy
input datafile copy RECID=56 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_mvcpfgls_.dbf
datafile 19 switched to datafile copy
input datafile copy RECID=57 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf
datafile 20 switched to datafile copy
input datafile copy RECID=58 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf
datafile 21 switched to datafile copy
input datafile copy RECID=59 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf
datafile 22 switched to datafile copy
input datafile copy RECID=60 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf
datafile 23 switched to datafile copy
input datafile copy RECID=61 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_mvcpf7nb_.dbf
datafile 24 switched to datafile copy
input datafile copy RECID=62 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfgmz_.dbf
datafile 25 switched to datafile copy
input datafile copy RECID=63 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfovr_.dbf
datafile 26 switched to datafile copy
input datafile copy RECID=64 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf
datafile 27 switched to datafile copy
input datafile copy RECID=65 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_mvcpfgnp_.dbf
datafile 28 switched to datafile copy
input datafile copy RECID=66 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__mvcpfowc_.dbf
datafile 29 switched to datafile copy
input datafile copy RECID=67 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf
datafile 30 switched to datafile copy
input datafile copy RECID=68 STAMP=1193494610 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf
datafile 31 switched to datafile copy
input datafile copy RECID=69 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf
datafile 32 switched to datafile copy
input datafile copy RECID=70 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf
datafile 33 switched to datafile copy
input datafile copy RECID=71 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf
datafile 34 switched to datafile copy
input datafile copy RECID=72 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_mvcpfoxh_.dbf
datafile 35 switched to datafile copy
input datafile copy RECID=73 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_mvcpf7pp_.dbf
datafile 36 switched to datafile copy
input datafile copy RECID=74 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_mvcpfgph_.dbf
datafile 37 switched to datafile copy
input datafile copy RECID=75 STAMP=1193494611 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf

contents of Memory Script:
{
   set until scn  13117839;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 19-FEB-2025 14:16:51
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00010: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 1 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_1_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00010: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 2 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_2_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_2_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 2
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00010: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
channel VeeamAgentChannel1: restoring section 3 of 3
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_3_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_3_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 3
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00013: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf
destination for restore of datafile 00014: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpf7lt_.dbf
destination for restore of datafile 00017: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpf7m4_.dbf
destination for restore of datafile 00020: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf
destination for restore of datafile 00023: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_mvcpf7nb_.dbf
destination for restore of datafile 00026: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf
destination for restore of datafile 00029: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf
destination for restore of datafile 00032: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf
destination for restore of datafile 00035: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_mvcpf7pp_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uc3i4aqd_972_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uc3i4aqd_972_1_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00008: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_system_mvcpfhf3_.dbf
destination for restore of datafile 00015: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpfgl2_.dbf
destination for restore of datafile 00018: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_mvcpfgls_.dbf
destination for restore of datafile 00021: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf
destination for restore of datafile 00024: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfgmz_.dbf
destination for restore of datafile 00027: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_mvcpfgnp_.dbf
destination for restore of datafile 00030: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf
destination for restore of datafile 00033: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf
destination for restore of datafile 00036: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_mvcpfgph_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ud3i4aqk_973_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ud3i4aqk_973_1_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00009: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf
destination for restore of datafile 00011: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf
destination for restore of datafile 00016: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpfost_.dbf
destination for restore of datafile 00019: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf
destination for restore of datafile 00022: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf
destination for restore of datafile 00025: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfovr_.dbf
destination for restore of datafile 00028: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__mvcpfowc_.dbf
destination for restore of datafile 00031: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf
destination for restore of datafile 00034: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_mvcpfoxh_.dbf
destination for restore of datafile 00037: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ue3i4aqr_974_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ue3i4aqr_974_1_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03
channel VeeamAgentChannel1: starting incremental datafile backup set restore
channel VeeamAgentChannel1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_system_mvcpfwvf_.dbf
destination for restore of datafile 00003: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf
destination for restore of datafile 00004: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf
destination for restore of datafile 00012: /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf
channel VeeamAgentChannel1: reading from backup piece e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uf3i4ar2_975_1_1.vab
channel VeeamAgentChannel1: piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uf3i4ar2_975_1_1.vab tag=INC1_20250218_180002
channel VeeamAgentChannel1: restored backup piece 1
channel VeeamAgentChannel1: restore complete, elapsed time: 00:00:03

starting media recovery

archived log for thread 1 with sequence 236 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_18/o1_mf_1_236_mv9h6t7z_.arc
archived log for thread 1 with sequence 237 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_18/o1_mf_1_237_mv9rjr7s_.arc
archived log for thread 1 with sequence 238 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_238_mvb6lr1f_.arc
archived log for thread 1 with sequence 239 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_239_mvbnnqvg_.arc
archived log for thread 1 with sequence 240 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_240_mvc2pr6m_.arc
archived log for thread 1 with sequence 241 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_241_mvcjrr7v_.arc
archived log for thread 1 with sequence 242 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_242_mvcp13py_.arc
archived log for thread 1 with sequence 243 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_243_mvcpbw6z_.arc
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_18/o1_mf_1_236_mv9h6t7z_.arc thread=1 sequence=236
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_18/o1_mf_1_237_mv9rjr7s_.arc thread=1 sequence=237
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_238_mvb6lr1f_.arc thread=1 sequence=238
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_239_mvbnnqvg_.arc thread=1 sequence=239
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_240_mvc2pr6m_.arc thread=1 sequence=240
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_241_mvcjrr7v_.arc thread=1 sequence=241
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_242_mvcp13py_.arc thread=1 sequence=242
archived log file name=/u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_19/o1_mf_1_243_mvcpbw6z_.arc thread=1 sequence=243
media recovery complete, elapsed time: 00:00:03
Finished recover at 19-FEB-2025 14:17:17
released channel: VeeamAgentChannel1
Oracle instance started

Total System Global Area    4294965864 bytes

Fixed Size                     9185896 bytes
Variable Size                855638016 bytes
Database Buffers            3388997632 bytes
Redo Buffers                  41144320 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''CVEEAMT'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
}
executing Memory Script

sql statement: alter system set  db_name =  ''CVEEAMT'' comment= ''Reset to original value by RMAN'' scope=spfile
Oracle instance started

Total System Global Area    4294965864 bytes

Fixed Size                     9185896 bytes
Variable Size                855638016 bytes
Database Buffers            3388997632 bytes
Redo Buffers                  41144320 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "CVEEAMT" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP     1  SIZE 512 M ,
  GROUP     2  SIZE 512 M ,
  GROUP     3  SIZE 512 M
 DATAFILE
  '/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_system_mvcpfwvf_.dbf',
  '/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_system_mvcpdmpq_.dbf',
  '/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_system_mvcpfhf3_.dbf'
 CHARACTER SET AL32UTF8


contents of Memory Script:
{
   set newname for clone tempfile  1 to new;
   set newname for clone tempfile  2 to new;
   set newname for clone tempfile  3 to new;
   switch clone tempfile all;
   catalog clone datafilecopy  "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_sysaux_mvcpdmq3_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_undotbs1_mvcpdmqj_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpf7lt_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpfgl2_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpfost_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpf7m4_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_mvcpfgls_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_mvcpf7nb_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfgmz_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfovr_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_mvcpfgnp_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__mvcpfowc_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_mvcpfoxh_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_mvcpf7pp_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_mvcpfgph_.dbf",
 "/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_temp_%u_.tmp in control file
renamed tempfile 2 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_temp_%u_.tmp in control file
renamed tempfile 3 to /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temp_%u_.tmp in control file

cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf RECID=1 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf RECID=2 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_sysaux_mvcpdmq3_.dbf RECID=3 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_undotbs1_mvcpdmqj_.dbf RECID=4 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf RECID=5 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf RECID=6 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf RECID=7 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf RECID=8 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf RECID=9 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpf7lt_.dbf RECID=10 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpfgl2_.dbf RECID=11 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpfost_.dbf RECID=12 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpf7m4_.dbf RECID=13 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_mvcpfgls_.dbf RECID=14 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf RECID=15 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf RECID=16 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf RECID=17 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf RECID=18 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_mvcpf7nb_.dbf RECID=19 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfgmz_.dbf RECID=20 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfovr_.dbf RECID=21 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf RECID=22 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_mvcpfgnp_.dbf RECID=23 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__mvcpfowc_.dbf RECID=24 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf RECID=25 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf RECID=26 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf RECID=27 STAMP=1193494661
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf RECID=28 STAMP=1193494662
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf RECID=29 STAMP=1193494662
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_mvcpfoxh_.dbf RECID=30 STAMP=1193494662
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_mvcpf7pp_.dbf RECID=31 STAMP=1193494662
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_mvcpfgph_.dbf RECID=32 STAMP=1193494662
cataloged datafile copy
datafile copy file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf RECID=33 STAMP=1193494662

datafile 3 switched to datafile copy
input datafile copy RECID=1 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=2 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=3 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_sysaux_mvcpdmq3_.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=4 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987BF93B6232B35E063425C210AC02A/datafile/o1_mf_undotbs1_mvcpdmqj_.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=5 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=6 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=7 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=8 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf
datafile 13 switched to datafile copy
input datafile copy RECID=9 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf
datafile 14 switched to datafile copy
input datafile copy RECID=10 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpf7lt_.dbf
datafile 15 switched to datafile copy
input datafile copy RECID=11 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_ami_hub__mvcpfgl2_.dbf
datafile 16 switched to datafile copy
input datafile copy RECID=12 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpfost_.dbf
datafile 17 switched to datafile copy
input datafile copy RECID=13 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_base_sys_mvcpf7m4_.dbf
datafile 18 switched to datafile copy
input datafile copy RECID=14 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_idm_mvcpfgls_.dbf
datafile 19 switched to datafile copy
input datafile copy RECID=15 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf
datafile 20 switched to datafile copy
input datafile copy RECID=16 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf
datafile 21 switched to datafile copy
input datafile copy RECID=17 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf
datafile 22 switched to datafile copy
input datafile copy RECID=18 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf
datafile 23 switched to datafile copy
input datafile copy RECID=19 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_main_mvcpf7nb_.dbf
datafile 24 switched to datafile copy
input datafile copy RECID=20 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfgmz_.dbf
datafile 25 switched to datafile copy
input datafile copy RECID=21 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_md_readi_mvcpfovr_.dbf
datafile 26 switched to datafile copy
input datafile copy RECID=22 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf
datafile 27 switched to datafile copy
input datafile copy RECID=23 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading_mvcpfgnp_.dbf
datafile 28 switched to datafile copy
input datafile copy RECID=24 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_reading__mvcpfowc_.dbf
datafile 29 switched to datafile copy
input datafile copy RECID=25 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf
datafile 30 switched to datafile copy
input datafile copy RECID=26 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf
datafile 31 switched to datafile copy
input datafile copy RECID=27 STAMP=1193494661 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf
datafile 32 switched to datafile copy
input datafile copy RECID=28 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf
datafile 33 switched to datafile copy
input datafile copy RECID=29 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf
datafile 34 switched to datafile copy
input datafile copy RECID=30 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_uam_mvcpfoxh_.dbf
datafile 35 switched to datafile copy
input datafile copy RECID=31 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_mvcpf7pp_.dbf
datafile 36 switched to datafile copy
input datafile copy RECID=32 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_unit_ind_mvcpfgph_.dbf
datafile 37 switched to datafile copy
input datafile copy RECID=33 STAMP=1193494662 file name=/u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf
Reenabling controlfile options for auxiliary database
Executing: alter database force logging

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened

contents of Memory Script:
{
   sql clone "alter pluggable database all open";
}
executing Memory Script

sql statement: alter pluggable database all open
Finished Duplicate Db at 19-FEB-2025 14:17:48
</pre>
</br>



<p class="wp-block-paragraph">We can see that RMAN used INC0 VEEAM backups:</p>



<pre class="wp-block-code"><code>piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250204_en3guuba_471_1_1.vab tag=INC0_20250204_133948

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_1_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_2_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s53hv217_901_3_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s83hv262_904_1_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_s93hv2h6_905_1_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sa3hv2pf_906_1_1.vab tag=INC0_20250216_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250216_sb3hv2pu_907_1_1.vab tag=INC0_20250216_180002</code></pre>



<p class="wp-block-paragraph">We can see that RMAN used INC1 VEEAM backups:</p>



<pre class="wp-block-code"><code>piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_1_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_2_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_u93i4ap9_969_3_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uc3i4aqd_972_1_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ud3i4aqk_973_1_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_ue3i4aqr_974_1_1.vab tag=INC1_20250218_180002

piece handle=e718bc55-0c60-43bc-b1f7-f8cf2c793120/RMAN_756666048_CDB1_20250218_uf3i4ar2_975_1_1.vab tag=INC1_20250218_180002</code></pre>



<p class="wp-block-paragraph">RMAN duplicate did not used any of the archived log backup as archived log file was still existing in the FRA, which is ok for our tests, see media recovery message like:</p>



<pre class="wp-block-code"><code>archived log for thread 1 with sequence 236 is already on disk as file /u03/app/oracle/fast_recovery_area/CDB1_SITE1/archivelog/2025_02_18/o1_mf_1_236_mv9h6t7z_.arc</code></pre>



<p class="wp-block-paragraph">RMAN duplicated played all archived log files as we did not specified any until_scn or until_time clause.</p>



<h3>Checks</h3>



<p class="wp-block-paragraph">We have 2 PDB1 pdb one for each CDB on appropriate domain registered to the listener:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] lsnrctl status | grep -iE veeam\|pdb1
  Instance "CDB1", status READY, has 1 handler(s) for this service...
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CDB1XDB.domain.ch" has 1 instance(s).
  Instance "CDB1", status READY, has 1 handler(s) for this service...
Service "CDB1_SITE1.domain.ch" has 1 instance(s).
  Instance "CDB1", status READY, has 1 handler(s) for this service...
Service "CVEEAMTXDB.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "CVEEAMT_SITE1.test.ch" has 2 instance(s).
  Instance "CVEEAMT", status UNKNOWN, has 1 handler(s) for this service...
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
Service "PDB1_PRI.domain.ch" has 1 instance(s).
  Instance "CDB1", status READY, has 1 handler(s) for this service...
Service "pdb1.domain.ch" has 1 instance(s).
  Instance "CDB1", status READY, has 1 handler(s) for this service...
Service "pdb1.test.ch" has 1 instance(s).
  Instance "CVEEAMT", status READY, has 1 handler(s) for this service...
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)]
</pre>
</br>



<p class="wp-block-paragraph">Check target container database CDB1:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13,20,26,27,28]">
oracle@ODA2:~/ [CDB1 (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 14:46:06 2025
Version 19.25.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO

SQL&gt; select instance_name from v$instance;

INSTANCE_NAME
----------------
CDB1

SQL&gt; set line 300
SQL&gt; col name for a20
SQL&gt; select NAME, GUID, total_size/1024/1024/1024 GB from v$pdbs;

NAME                 GUID                                     GB
-------------------- -------------------------------- ----------
PDB$SEED             2987BF93B6232B35E063425C210AC02A 1.09960938
PDB1                 2987D4B68CF25579E063425C210AB61B 46.3935547

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">Check auxiliary container database CVEEAMT. We will check PDB1, that our TEST1 table exists, and also database files:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,22,34,41,45,51,57,101,105,106,107,116,117,118,124,131]">
oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] CVEEAMT

 ******************************************************
 INSTANCE_NAME   : CVEEAMT
 DB_NAME         : CVEEAMT
 DB_UNIQUE_NAME  : CVEEAMT_SITE1
 STATUS          : OPEN READ WRITE
 LOG_MODE        : ARCHIVELOG
 USERS/SESSIONS  : Normal: 0/0, Oracle-maintained: 2/7
 DATABASE_ROLE   : PRIMARY
 FLASHBACK_ON    : NO
 FORCE_LOGGING   : YES
 VERSION         : 19.25.0.0.0
 NLS_LANG        : AMERICAN_AMERICA.AL32UTF8
 CDB_ENABLED     : YES
 PDBs            : PDB1  PDB$SEED
 ******************************************************

 PDB color: pdbname=open read-write, pdbname=open read-only
 Statustime: 2025-02-19 14:42:03

oracle@ODA2:~/ [CVEEAMT (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 19 14:42:05 2025
Version 19.25.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO

SQL&gt; alter session set container=PDB1;

Session altered.

SQL&gt; select count(*) from test1;

  COUNT(*)
----------
        51

SQL&gt; select instance_name from v$instance;

INSTANCE_NAME
----------------
CVEEAMT

SQL&gt; @qdbstbssize.sql

Container                          Nb      Extent Segment     Alloc.      Space       Max.    Percent Block
name            Name            files Type Mgmnt  Mgmnt    size (GB)  free (GB)  size (GB)     used % size  Log Encrypt Compress
--------------- --------------- ----- ---- ------ ------- ---------- ---------- ---------- ---------- ----- --- ------- --------
PDB1            XXX_XXX_INDEXES     1 DATA LM-SYS AUTO          1.00        .90      10.00       1.00 8 KB  YES NO      NO
                XXX_XXX_TABLES      1 DATA LM-SYS AUTO          1.00        .91      10.00        .95 8 KB  YES NO      NO
                XXXX_SYSTEM         1 DATA LM-SYS AUTO          1.00        .70      10.00       3.01 8 KB  YES NO      NO
                XXXX_SYSTEM_IND     1 DATA LM-SYS AUTO          1.00        .86      10.00       1.36 8 KB  YES NO      NO
                EXES

                IDM                 1 DATA LM-SYS AUTO          1.00        .85      10.00       1.53 8 KB  YES NO      NO
                JOB                 1 DATA LM-SYS AUTO          1.00        .92      10.00        .83 8 KB  YES NO      NO
                JOB_INDEXES         1 DATA LM-SYS AUTO          1.00        .92      10.00        .83 8 KB  YES NO      NO
                LOG                 1 DATA LM-SYS AUTO          1.00        .88      10.00       1.24 8 KB  YES NO      NO
                LOG_INDEXES         1 DATA LM-SYS AUTO          1.00        .86      10.00       1.41 8 KB  YES NO      NO
                MAIN                1 DATA LM-SYS AUTO          1.00        .93      10.00        .74 8 KB  YES NO      NO
                XX_XXXXXXX          1 DATA LM-SYS AUTO          1.00        .92      10.00        .78 8 KB  YES NO      NO
                XX_XX_XXXXXXX_INDE     1 DATA LM-SYS AUTO          1.00        .92      10.00        .80 8 KB  YES NO      NO
                XES

                QUEUE_TABLES        1 DATA LM-SYS AUTO          1.00        .93      10.00        .75 8 KB  YES NO      NO
                XXXXXXX             1 DATA LM-SYS AUTO          1.00        .84      10.00       1.61 8 KB  YES NO      NO
                XXXXXXX_INDEXES     1 DATA LM-SYS AUTO          1.00        .88      10.00       1.20 8 KB  YES NO      NO
                SETUP               1 DATA LM-SYS AUTO          1.00        .91      10.00        .93 8 KB  YES NO      NO
                SETUP_INDEXES       1 DATA LM-SYS AUTO          1.00        .91      10.00        .88 8 KB  YES NO      NO
                STATISTIC           1 DATA LM-SYS AUTO          1.00        .71      10.00       2.85 8 KB  YES NO      NO
                STATSPACK           1 DATA LM-SYS AUTO           .98        .13       2.00      42.32 8 KB  YES NO      NO
                SYSAUX              1 DATA LM-SYS AUTO           .58        .04      10.00       5.32 8 KB  YES NO      NO
                SYSTEM              1 DATA LM-SYS MANUAL         .62        .05       4.00      14.21 8 KB  YES NO      NO
                TEMP                1 TEMP LM-UNI MANUAL         .22        .66      31.00      -1.40 8 KB  NO  NO      NO
                TEMPORARY_DATA      1 DATA LM-SYS AUTO          1.00        .93      10.00        .67 8 KB  YES NO      NO
                TEMPORARY_DATA_     1 DATA LM-SYS AUTO          1.00        .93      10.00        .66 8 KB  YES NO      NO
                INDEXES

                XXX                 1 DATA LM-SYS AUTO          1.00        .93      10.00        .68 8 KB  YES NO      NO
                UNDOTBS1            1 UNDO LM-SYS MANUAL       20.00      19.97      20.00        .13 8 KB  YES NO      NO
                XXXX                1 DATA LM-SYS AUTO          1.00        .92      10.00        .82 8 KB  YES NO      NO
                XXXX_INDEXES        1 DATA LM-SYS AUTO          1.00        .91      10.00        .94 8 KB  YES NO      NO
                USERS               1 DATA LM-SYS AUTO           .00        .00       2.00        .05 8 KB  YES NO      NO
                USER_DATA           1 DATA LM-SYS AUTO          1.00        .93      10.00        .66 8 KB  YES NO      NO
***************                 -----                     ---------- ---------- ----------
TOTAL                              30                          46.39      42.14     309.00

SQL&gt; alter session set container=cdb$root;

Session altered.

SQL&gt; set lines 300
SQL&gt; col name for a20
SQL&gt; select NAME, GUID, total_size/1024/1024/1024 GB from v$pdbs;

NAME                 GUID                                     GB
-------------------- -------------------------------- ----------
PDB$SEED             2987BF93B6232B35E063425C210AC02A 1.09960938
PDB1                 2987D4B68CF25579E063425C210AB61B 46.3935547

2 rows selected.

SQL&gt; set lines 300 pages 500
SQL&gt; col file_name for a150
SQL&gt; select instance_name from v$instance;

INSTANCE_NAME
----------------
CVEEAMT

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO

SQL&gt; select con_id, file_name from cdb_data_files;

    CON_ID FILE_NAME
---------- ------------------------------------------------------------------------------------------------------------------------------------------------------
         1 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_system_mvcpfwvf_.dbf
         1 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_sysaux_mvcpfwtl_.dbf
         1 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_undotbs1_mvcpfwt0_.dbf
         1 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/datafile/o1_mf_users_mvcpfwvt_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_system_mvcpfhf3_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_sysaux_mvcpfppo_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_undotbs1_mvcpdoc3_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_users_mvcpfpz5_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statspac_mvcpf8jp_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxx_xxx__mvcpf7lt_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxx_xxx__mvcpfgl2_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxx_sys_mvcpfost_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxx_sys_mvcpf7m4_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxx_mvcpfgls_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_mvcpfotj_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_job_inde_mvcpf7mq_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_mvcpfgmd_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_log_inde_mvcpfov5_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxx_mvcpf7nb_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xx_xxxxx_mvcpfgmz_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xx_xxxxx_mvcpfgmz_mvcpfovr_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_queue_ta_mvcpf7nx_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxxxxx_mvcpfgnp_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxxxxx__mvcpfowc_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_mvcpf7oj_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_setup_in_mvcpfgo9_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_statisti_mvcpfowx_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpf7p2_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_temporar_mvcpfgow_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxx_mvcpfoxh_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxx_mvcpf7pp_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_xxxx_ind_mvcpfgph_.dbf
         3 /u02/app/oracle/oradata/CVEEAMT_SITE1/CVEEAMT_SITE1/2987D4B68CF25579E063425C210AB61B/datafile/o1_mf_user_dat_mvcpfoy2_.dbf

33 rows selected.

SQL&gt;
</pre>
</br>



<p class="wp-block-paragraph">As we can see, the restore from CDB1 into CVEEAMT with RMAN duplicate command using VEEAM backups could be done successfully.</p>



<h3>Cleanup</h3>



<p class="wp-block-paragraph">Let&#8217;s cleanup by deleting CVEEAMT database.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,30]">
[root@ODA2 ~]# odacli delete-database -n CVEEAMT
{
  "jobId" : "565aa4e3-9152-45f8-a739-dd7c53b22044",
  "status" : "Running",
  "message" : "",
  "reports" : [ {
    "taskId" : "TaskDcsJsonRpcExt_14309",
    "taskName" : "Validate DB 96122ad1-182a-4059-8a26-677300d93d71 for deletion",
    "nodeName" : "ODA2",
    "taskResult" : "",
    "startTime" : "February 19, 2025 14:55:01 CET",
    "endTime" : null,
    "duration" : "00:00:00.10",
    "status" : "Running",
    "taskDescription" : null,
    "parentTaskId" : "TaskSequential_14307",
    "jobId" : "565aa4e3-9152-45f8-a739-dd7c53b22044",
    "tags" : [ ],
    "reportLevel" : "Info",
    "updatedTime" : "February 19, 2025 14:55:01 CET"
  } ],
  "createTimestamp" : "February 19, 2025 14:54:59 CET",
  "resourceList" : [ ],
  "description" : "Database service deletion with DB name: CVEEAMT with ID : 96122ad1-182a-4059-8a26-677300d93d71",
  "updatedTime" : "February 19, 2025 14:55:01 CET",
  "jobType" : null,
  "cpsMetadata" : null
}

[root@ODA2 ~]# odacli describe-job -i "565aa4e3-9152-45f8-a739-dd7c53b22044"

Job details
----------------------------------------------------------------
                     ID:  565aa4e3-9152-45f8-a739-dd7c53b22044
            Description:  Database service deletion with DB name: CVEEAMT with ID : 96122ad1-182a-4059-8a26-677300d93d71
                 Status:  Success
                Created:  February 19, 2025 14:54:59 CET
                Message:

Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------
Validate DB                              February 19, 2025 14:55:01 CET           February 19, 2025 14:55:01 CET           Success
96122ad1-182a-4059-8a26-677300d93d71
for deletion
Deleting the RMAN logs                   February 19, 2025 14:55:01 CET           February 19, 2025 14:55:01 CET           Success
Database Deletion By RHP                 February 19, 2025 14:55:01 CET           February 19, 2025 14:56:07 CET           Success
Unregister DB From Cluster               February 19, 2025 14:56:07 CET           February 19, 2025 14:56:08 CET           Success
Kill PMON Process                        February 19, 2025 14:56:08 CET           February 19, 2025 14:56:08 CET           Success
Database Files Deletion                  February 19, 2025 14:56:08 CET           February 19, 2025 14:56:08 CET           Success
Deleting Volume                          February 19, 2025 14:56:13 CET           February 19, 2025 14:56:17 CET           Success
Deleting Volume                          February 19, 2025 14:56:23 CET           February 19, 2025 14:56:26 CET           Success
</pre>
</br>



<p class="wp-block-paragraph">We would also restore initial listener.ora configuration file. As you might see, there is job in the appliance that already regularly restore initial listener configuration file.</p>



<p class="wp-block-paragraph">We would also delete our TEST1 table we created in the production PDB1.</p>



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



<p class="wp-block-paragraph">We could successfully restore CDB1 into CVEEAMT with RMAN duplicate command using VEEAM backups. This validates our VEEAM RMAN plug-in previous configuration and also any backup done with the VEEAM RMAN plug-in.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/restore-a-database-using-veeam-rman-plug-in-on-an-oda/">Restore a database using Veeam RMAN plug-in on an ODA</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/restore-a-database-using-veeam-rman-plug-in-on-an-oda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Delphix Data Virtualization and Masking</title>
		<link>https://www.dbi-services.com/blog/delphix-data-virtualization-and-masking/</link>
					<comments>https://www.dbi-services.com/blog/delphix-data-virtualization-and-masking/#respond</comments>
		
		<dc:creator><![CDATA[Hervé Schweitzer]]></dc:creator>
		<pubDate>Thu, 20 Feb 2025 15:55:44 +0000</pubDate>
				<category><![CDATA[Delphix]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[datafishing]]></category>
		<category><![CDATA[masking]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=37343</guid>

					<description><![CDATA[<p>After successfully completing several customer projects involving Delphix products, Data Virtualization and Data Masking, I decided to set up a complete infrastructure internally to test the combination of both products. Delphix Data Virtualization Creates only a virtual copy of your database blocks instead of a full physical copy. For example this allows making a new [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/delphix-data-virtualization-and-masking/">Delphix Data Virtualization and Masking</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After successfully completing several customer projects involving Delphix products,<strong> Data Virtualization </strong> and <strong>Data Masking</strong>, I decided to set up a complete infrastructure internally to test the combination of both products.</p>



<p class="wp-block-paragraph"><strong><a href="https://www.delphix.com/platform/continuous-data">Delphix Data Virtualization</a></strong> Creates only a virtual copy of your database blocks instead of a full physical copy. For example this allows making a new big database available only in a few seconds.</p>



<p class="wp-block-paragraph"><strong><a href="https://www.delphix.com/platform/continuous-compliance">Delphix Data Masking</a></strong> Protects sensitive data by replacing it with <strong>realistic but non-sensitive</strong> values, ensuring compliance with <strong>privacy regulations</strong> while maintaining data usability for development, testing, and analytics. For reference, dbi-services has developed Swiss masking rules for customers to apply all their specific needs.</p>



<h3 class="wp-block-heading" id="h-setup"><strong>Setup</strong></h3>



<p class="wp-block-paragraph">As always, setting up the prerequisites took some time, but once the environment was built, it was truly rewarding to demonstrate the combined power of these tools to my colleagues. It&#8217;s a real pleasure, like a game, building database environments in a flash, where the data is directly masked.</p>



<p class="wp-block-paragraph">This allows you to rapidly provision databases to your internal or external developers, without taking any risk of a data phishing attack!</p>



<p class="wp-block-paragraph">Watch this video! It&#8217;s only a minute-long and you&#8217;ll see how easy it is! to create a new masked Oracle pluggable database VPDB2_masked on another server (These tasks can also be fully automated in a pipeline using an API)</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" autoplay controls loop muted src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Delphix.mp4" playsinline></video></figure>



<h3 class="wp-block-heading" id="h-relevant-outcomes"><strong>Relevant outcomes</strong> </h3>



<p class="wp-block-paragraph">The Delphix pricing model is based on the size of your databases, thus you can apply the same Virtualization and Masking capabilities at least for PostgreSQL, SQL Server, and Sybase at no additional cost. Are you interested in making your database development environments fully secure? Don’t wait, dbi    services has your solution!</p>



<h3 class="wp-block-heading" id="h-for-those-who-are-interested-in-more-details"><strong>For those who are interested in more details </strong></h3>



<p class="wp-block-paragraph">1. Table data from the source database PDB1</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="377" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-1024x377.png" alt="Original data of the table " class="wp-image-37388" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-1024x377.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-300x111.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-768x283.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-1536x566.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.53.21-2048x755.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">2. Table data in the new created and masked virtual database VPDB2_Masked </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="426" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-1024x426.png" alt="masked data table" class="wp-image-37389" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-1024x426.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-300x125.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-768x320.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-1536x640.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-15.55.24-2048x853.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">   3. Output of the masking job</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="512" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13-1024x512.png" alt="output from a masking job" class="wp-image-37391" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13-1024x512.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13-300x150.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13-768x384.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13-1536x768.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Screenshot-2025-02-20-at-16.19.13.png 1899w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="h-useful-information-related-to-delphix"><strong>Useful information related to Delphix</strong></h3>



<p class="wp-block-paragraph">Blog that presents Data Masking in detail</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-dbi-blog wp-block-embed-dbi-blog"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="PSc3ktDQaF"><a href="https://www.dbi-services.com/blog/data-masking-with-delphix-continuous-compliance/">Data Masking with Delphix Continuous Compliance</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Data Masking with Delphix Continuous Compliance&#8221; &#8212; dbi Blog" src="https://www.dbi-services.com/blog/data-masking-with-delphix-continuous-compliance/embed/#?secret=s1fPl8S0x3#?secret=PSc3ktDQaF" data-secret="PSc3ktDQaF" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">Customer success story </p>



<figure class="wp-block-embed is-type-wp-embed is-provider-dbi-services wp-block-embed-dbi-services"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="l34mKnQlGt"><a href="https://www.dbi-services.com/testimonials/galenicas-data-security-standards-with-delphix/">Galenica&#8217;s data security standards with Delphix</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Galenica&#8217;s data security standards with Delphix&#8221; &#8212; dbi services" src="https://www.dbi-services.com/testimonials/galenicas-data-security-standards-with-delphix/embed/#?secret=Gnu6rNzWLH#?secret=l34mKnQlGt" data-secret="l34mKnQlGt" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">Webinar that presents Data Virtualization </p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Delphix - Continuous Data pour Oracle" width="500" height="281" src="https://www.youtube.com/embed/yRv8i5vML7s?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



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



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



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



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/delphix-data-virtualization-and-masking/">Delphix Data Virtualization and Masking</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/delphix-data-virtualization-and-masking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/02/Delphix.mp4" length="167" type="video/mp4" />

			</item>
		<item>
		<title>Future Data Driven 2024 &#8211; introduction to vector databases</title>
		<link>https://www.dbi-services.com/blog/future-data-driven-2024-introduction-to-vector-databases/</link>
					<comments>https://www.dbi-services.com/blog/future-data-driven-2024-introduction-to-vector-databases/#respond</comments>
		
		<dc:creator><![CDATA[Amine Haloui]]></dc:creator>
		<pubDate>Mon, 30 Sep 2024 16:30:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Database management]]></category>
		<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[Artificial inteligence]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=34882</guid>

					<description><![CDATA[<p>I had the opportunity to participate in the Future Data Driven 2024 event (https://datadrivencommunity.com/FutureDataDriven2024.html) with my colleague Stéphane Haby. Many speakers were present, and I was able to attend several sessions covering the following topics: Azure, AI, CosmosDB, Co-Pilot, Database Watcher. In several sessions, when AI was discussed, we talked about vector databases. These were [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/future-data-driven-2024-introduction-to-vector-databases/">Future Data Driven 2024 &#8211; introduction to vector databases</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I had the opportunity to participate in the Future Data Driven 2024 event (<a href="https://datadrivencommunity.com/FutureDataDriven2024.html">https://datadrivencommunity.com/FutureDataDriven2024.html</a>) with my colleague <a href="https://www.dbi-services.com/blog/author/stephane-haby/">Stéphane Haby</a>.</p>



<figure class="wp-block-image size-full img {border:1px solid black}"><img loading="lazy" decoding="async" width="957" height="610" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-45.png" alt="" class="wp-image-34905" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-45.png 957w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-45-300x191.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-45-768x490.png 768w" sizes="auto, (max-width: 957px) 100vw, 957px" /></figure>



<p class="wp-block-paragraph">Many speakers were present, and I was able to attend several sessions covering the following topics: Azure, AI, CosmosDB, Co-Pilot, Database Watcher. In several sessions, when AI was discussed, we talked about vector databases.</p>



<p class="wp-block-paragraph">These were terms I had heard before but never really understood. So, I would like to present how vector databases are used.</p>



<p class="wp-block-paragraph">Before talking about vector databases, it is necessary to cover certain concepts, which are as follows:</p>



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



<li>Vector embeddings</li>



<li>Cosine similarity</li>
</ul>



<h2 id="h-vectors" class="wp-block-heading">Vectors</h2>



<p class="wp-block-paragraph"><strong>General Information</strong></p>



<p class="img { border:1px solid black} wp-block-paragraph">Vectors are mathematical objects that consist of both a magnitude (or length) and a direction. We can graphically represent a vector (in a 2-dimensional plane) as follows:</p>



<figure class="wp-block-image aligncenter size-full is-style-default img { border:1px solid black}"><img loading="lazy" decoding="async" width="882" height="681" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-35.png" alt="" class="wp-image-34895" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-35.png 882w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-35-300x232.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-35-768x593.png 768w" sizes="auto, (max-width: 882px) 100vw, 882px" /></figure>



<p class="wp-block-paragraph">A 2-dimensional vector can be written as follows:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="165" height="52" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-24.png" alt="" class="wp-image-34884" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">In our case, we can write it as:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="173" height="52" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-33.png" alt="" class="wp-image-34889" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">We also find another notation to describe vectors, which is as follows:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="79" height="52" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-36.png" alt="" class="wp-image-34896" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">Vectors are multidimensional, and their notation can be as follows for a 4-dimensional vector:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="89" height="99" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-23.png" alt="" class="wp-image-34883" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">A first problem arises here. Indeed, when multiple vectors are described, this initial form of notation can be confusing. In this case, we can introduce a new notation:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="98" height="31" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-42.png" alt="" class="wp-image-34899" style="width:126px;height:auto;border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">x and y are the components of vector a.</p>



<p class="wp-block-paragraph"><strong>Length or Magnitude of a Vector:</strong></p>



<p class="wp-block-paragraph">We mentioned earlier that one of the properties of a vector is its length or norm. This is calculated as follows for a vector:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="147" height="47" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-25.png" alt="" class="wp-image-34885" style="width:166px;height:auto;border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">In the case of the vector described above, this results in:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="173" height="52" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-26.png" alt="" class="wp-image-34887" style="width:150px;height:auto;border:1px solid #000000" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="332" height="33" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-27.png" alt="" class="wp-image-34886" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-27.png 332w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-27-300x30.png 300w" sizes="auto, (max-width: 332px) 100vw, 332px" /></figure>



<p class="wp-block-paragraph">Thus, we can see that this formula corresponds to the calculation of the hypotenuse. The length of the vector is the value of the hypotenuse.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="668" height="494" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-34.png" alt="" class="wp-image-34894" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-34.png 668w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-34-300x222.png 300w" sizes="auto, (max-width: 668px) 100vw, 668px" /></figure>



<h2 id="h-vectors-embeddings" class="wp-block-heading"><strong>Vectors embeddings</strong></h2>



<p class="wp-block-paragraph">Vector embeddings allow us to represent data (texts, images, etc.) in the form of vectors. One way to describe images using a relational database system would be to use several tables:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="740" height="408" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-39.png" alt="" class="wp-image-34898" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-39.png 740w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-39-300x165.png 300w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<figure class="wp-block-table aligncenter is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-center" data-align="center"><strong>Table name</strong></th><th class="has-text-align-center" data-align="center"><strong>Details</strong></th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">Image</td><td class="has-text-align-center" data-align="center">Contains images</td></tr><tr><td class="has-text-align-center" data-align="center">Tag</td><td class="has-text-align-center" data-align="center">Contains words that describes images</td></tr><tr><td class="has-text-align-center" data-align="center">Description</td><td class="has-text-align-center" data-align="center">Associate an image with the words, the tags that describe it</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">By using certain SQL operators, it should be possible to find images that are described as similar (because they share the same tags).</p>



<p class="wp-block-paragraph">Vector embeddings represent data differently. Several techniques exist for this, including:</p>



<ul class="wp-block-list">
<li><strong>Word2Vec</strong>: A method that uses neural networks to create vector representations of words.</li>
</ul>



<ul class="wp-block-list">
<li><strong>GloVe (Global Vectors for Word Representation)</strong>: A technique that uses co-occurrence statistics to create embeddings.</li>
</ul>



<ul class="wp-block-list">
<li><strong>BERT (Bidirectional Encoder Representations from Transformers)</strong>: An advanced model that generates contextual embeddings, taking into account surrounding words.</li>
</ul>



<p class="wp-block-paragraph">Thus, vector databases use vector embeddings. Once these embeddings are generated, they are stored in vector databases. Then, it is possible to use cosine similarity to evaluate how similar the vectors are. Finally, vector databases index the vectors, and there are several methods:</p>



<ul class="wp-block-list">
<li>Tree-based indexing</li>



<li>Approximate Nearest Neighbors</li>



<li>Quantization</li>
</ul>



<h2 id="h-cosine-similarity" class="wp-block-heading"><strong>Cosine similarity</strong></h2>



<p class="wp-block-paragraph">Cosine similarity allows for a precise evaluation of the similarity between two vectors. Here is an example:</p>



<ul class="wp-block-list">
<li>Imagine that I have two recipe cards. I would like to determine if these two recipes are similar based on the ingredients mentioned in them.
<ul class="wp-block-list">
<li>So, I have two recipes: R1 and R2
<ul class="wp-block-list">
<li>R1: in this recipe, the word &#8220;egg&#8221; is mentioned 6 times and the word &#8220;flour&#8221; is mentioned 1 time.</li>



<li>R2: in this recipe, the word &#8220;egg&#8221; is mentioned 1 time and the word &#8220;flour&#8221; is mentioned 8 times.</li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">Based on this information, it is possible to graphically represent how many times these words appear.</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-44-1024x615.png" alt="" class="wp-image-34904" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-44-1024x615.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-44-300x180.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-44-768x461.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-44.png 1209w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The first vector represents my first recipe. The second vector represents my second recipe.</p>



<p class="wp-block-paragraph">Cosine similarity will determine if these two recipes are similar (this is a very simplified example). To do this, we need to calculate the cosine of 81 degrees (which is 0.15643447). Here, on the graph, the angle formed between the two vectors is 81 degrees.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="234" height="31" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-43.png" alt="" class="wp-image-34903" style="border:1px solid #000000" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="157" height="27" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-29.png" alt="" class="wp-image-34892" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-29.png 157w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-29-150x27.png 150w" sizes="auto, (max-width: 157px) 100vw, 157px" /></figure>



<p class="wp-block-paragraph">Here are more details on how to calculate cosine similarity:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="234" height="54" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-37.png" alt="" class="wp-image-34897" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">It is possible to represent recipes R1 and R2 by two vectors, which are as follows:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="188" height="32" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-31.png" alt="" class="wp-image-34891" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">So we have:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="328" height="27" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-28.png" alt="" class="wp-image-34888" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-28.png 328w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-28-300x25.png 300w" sizes="auto, (max-width: 328px) 100vw, 328px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="318" height="67" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-40.png" alt="" class="wp-image-34901" style="border:1px solid #000000" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-40.png 318w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-40-300x63.png 300w" sizes="auto, (max-width: 318px) 100vw, 318px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="254" height="50" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-32.png" alt="" class="wp-image-34893" style="border:1px solid #000000" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="228" height="51" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-38.png" alt="" class="wp-image-34900" style="border:1px solid #000000" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="283" height="47" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-30.png" alt="" class="wp-image-34890" style="border:1px solid #000000" /></figure>



<p class="wp-block-paragraph">The values of cosine similarity can range between -1 and 1. Here, this value indicates that the two recipes are not very similar.</p>



<h2 id="h-pinecone-vector-databases-python-implementation" class="wp-block-heading"><strong>Pinecone, vector databases, python implementation</strong></h2>



<p class="wp-block-paragraph">Pinecone is a vector database. It is designed to store, manage, and search vectors, enabling similarity search operations and analyses based on unstructured data.</p>



<p class="wp-block-paragraph">Here is an example created from the documentation that illustrates how to use vector databases and calculate similarities between vectors:</p>



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



<pre class="wp-block-code"><code>from pinecone.grpc import PineconeGRPC as Pinecone
from pinecone import ServerlessSpec

pc = Pinecone(api_key='MyAPIKey')

index_name = "example-index"

pc.create_index(
&nbsp;&nbsp;&nbsp; name=index_name,
&nbsp;&nbsp;&nbsp; dimension=2,
&nbsp;&nbsp;&nbsp; metric="cosine", #we use the cosine similarity
&nbsp;&nbsp;&nbsp; spec=ServerlessSpec(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloud='aws',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region='us-east-1'
&nbsp;&nbsp;&nbsp; )
)

while not pc.describe_index(index_name).status&#091;'ready']:
&nbsp;&nbsp;&nbsp; time.sleep(1)
index = pc.Index(index_name)

index.upsert(
&nbsp;&nbsp;&nbsp; vectors=&#091;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"id": "vec1", "values": &#091;6,1]}, #we define our first vector
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"id": "vec2", "values": &#091;1,8]}, #we define our second vector
&nbsp;&nbsp;&nbsp; ],
&nbsp;&nbsp;&nbsp; namespace="example-namespace1"
)

query_results1 = index.query(
&nbsp;&nbsp;&nbsp; namespace="example-namespace1",
&nbsp;&nbsp;&nbsp; vector=&#091;1,7],
&nbsp;&nbsp;&nbsp; top_k=3,
&nbsp;&nbsp;&nbsp; include_values=True
)

print(query_results1)</code></pre>



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



<p class="wp-block-paragraph"><strong>Here is the result:</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="493" height="211" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-41.png" alt="" class="wp-image-34902" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-41.png 493w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-41-300x128.png 300w" sizes="auto, (max-width: 493px) 100vw, 493px" /></figure>



<p class="wp-block-paragraph">We had as input a vector with the value of [1, 7]. This vector was compared to the other two vectors, and the cosine similarity (the score) was determined.</p>



<p class="wp-block-paragraph">If you encounter any errors while running this script, it is possible that your index already exists or has not yet been created.</p>



<p class="wp-block-paragraph">Thank you. <a href="https://www.linkedin.com/in/amine-haloui-76968056/">Amine Haloui</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/future-data-driven-2024-introduction-to-vector-databases/">Future Data Driven 2024 &#8211; introduction to vector databases</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/future-data-driven-2024-introduction-to-vector-databases/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why relocating the PDB after ZDM Physical Online migration with noncdb to cdb conversion is a must?</title>
		<link>https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/</link>
					<comments>https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/#respond</comments>
		
		<dc:creator><![CDATA[Marc Wagner]]></dc:creator>
		<pubDate>Tue, 30 Jul 2024 14:21:27 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[exacc]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[zdm]]></category>
		<category><![CDATA[zero downtime migration]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=34395</guid>

					<description><![CDATA[<p>I have been blogging about ZDM Physical Online migration with noncdb to cdb conversion. As you could read in my previous article, the target database name on CDB level should be the same as the source database, knowing physical online migration is using Data Guard. In our case, at customer, we wanted to group the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/">Why relocating the PDB after ZDM Physical Online migration with noncdb to cdb conversion is a must?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I have been blogging about ZDM Physical Online migration with noncdb to cdb conversion. As you could read in my previous article, the target database name on CDB level should be the same as the source database, knowing physical online migration is using Data Guard. In our case, at customer, we wanted to group the new migrated PDBs is some CDB, and thus the CDB name was not matching any convention any more. This is why we relocated the new migrated PDB from the target CDB database used during ZDM migration to a final one. I could later realise that in any case, if we are migrating and converting from noncdb to pdb with ZDM it is better to relocate the PDB at the end. Let me explain you why.</p>


<a class="wp-block-read-more" href="https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/" target="_self">Read more<span class="screen-reader-text">: Why relocating the PDB after ZDM Physical Online migration with noncdb to cdb conversion is a must?</span></a>


<h2 class="wp-block-heading" id="h-zdm-bug-on-grid-infra-resource">ZDM bug on Grid Infra resource</h2>



<p class="wp-block-paragraph">I made some test and migrated a source On-Premise database to the new ExaCC but just stopping after ZDM migration completed. The naming convention will be the same as the previous blog. As we can see the noncdb Source database has been successfully migrated to the new target database on the exaCC.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13,18,20,24,30]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 29 16:45:17 2024
Version 19.22.0.0.0

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


Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ONPRZ_APP_001T                 READ WRITE NO

SQL&gt; alter session set container=ONPRZ_APP_001T;

Session altered.

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 ONPRZ_APP_001T                 READ WRITE NO

SQL&gt; select status, message from pdb_plug_in_violations;

STATUS     MESSAGE
---------- ------------------------------------------------------------------------------------------------------------------------
RESOLVED   PDB needs to import keys from source.
RESOLVED   Database option RAC mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
RESOLVED   PDB plugged in is a non-CDB, requires noncdb_to_pdb.sql be run.
PENDING    Database option APS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option CATJAVA mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option CONTEXT mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option DV mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option JAVAVM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option OLS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option ORDIM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option SDO mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option XML mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Database option XOQ mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.
PENDING    Tablespace SYSTEM is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.
PENDING    Tablespace SYSAUX is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.

15 rows selected.
</pre>
</br>



<p class="wp-block-paragraph">As it was a fast test and as my target database was still on one instance I wanted to configured it to RAC again.</p>



<p class="wp-block-paragraph">I setup cluster_database instance parameter back to TRUE value.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,13]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] sqh

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 29 17:20:27 2024
Version 19.22.0.0.0

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


Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

SQL&gt; alter system set cluster_database=TRUE scope=spfile sid='*';

System altered.
</pre>
</br>



<p class="wp-block-paragraph">I stopped my database.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl stop database -d ONPR_CHZ2
</pre>
</br>



<p class="wp-block-paragraph">Added back the second instance.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl add instance -d ONPR_CHZ2 -i ONPR2 -node ExaCC-cl01n2
</pre>
</br>



<p class="wp-block-paragraph">Starting the database I could face some errors.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,5,11,12]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl start database -d ONPR_CHZ2
PRCR-1079 : Failed to start resource ora.onpr_chz2.db
CRS-5017: The resource action "ora.onpr_chz2.db start" encountered the following error:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u02/app/oracle/product/19.0.0.0/dbhome_1/dbs/initONPR2.ora'
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/ExaCC-cl01n2/crs/trace/crsd_oraagent_oracle.trc".

CRS-2674: Start of 'ora.onpr_chz2.db' on 'ExaCC-cl01n2' failed
CRS-2632: There are no more servers to try to place resource 'ora.onpr_chz2.db' on that would satisfy its placement policy
CRS-5017: The resource action "ora.onpr_chz2.db start" encountered the following error:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '+DATAC5/ONPRZ_APP_001T/datafile/system.651.1175616809'
ORA-01204: file number is 14 rather than 1 - wrong file
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/ExaCC-cl01n1/crs/trace/crsd_oraagent_oracle.trc".

CRS-2674: Start of 'ora.onpr_chz2.db' on 'ExaCC-cl01n1' failed
</pre>
</br>



<p class="wp-block-paragraph">Why init or spfile not in the ASM? Why the CDB will look in the ZDM temporary noncdb database folder?</p>



<p class="wp-block-paragraph">I have got my 2 instances, but none are running.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_CHZ2
Instance ONPR1 is not running on node ExaCC-cl01n1
Instance ONPR2 is not running on node ExaCC-cl01n2
</pre>
</br>



<p class="wp-block-paragraph">I checked the grid resource configuration and could realise that ZDM changed the spfile to the ZDM temporary noncdb database one.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,6]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl config database -d ONPR_CHZ2
Database unique name: ONPR_CHZ2
Database name: ONPR
Oracle home: /u02/app/oracle/product/19.0.0.0/dbhome_1
Oracle user: oracle
Spfile: /u02/app/oracle/product/19.0.0.0/dbhome_1/dbs/spfileONPRZ_APP_001T1.ora
Password file: +DATAC5/ONPR_CHZ2/PASSWORD/pwdonpr_chz2.599.1175606525
Domain: domain.com
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATAC5
Mount point paths: /acfs01
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: racoper
Database instances: ONPR1,ONPR2
Configured nodes: ExaCC-cl01n1,ExaCC-cl01n2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
</pre>
</br>



<p class="wp-block-paragraph">I checked the spfile for the target CDB in the ASM.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2]">
[grid@ExaCC-cl01n1 ~]$ asmcmd
ASMCMD&gt; ls +DATAC5/ONPR_CHZ2/PARAMETERFILE/
spfile.621.1175607313
</pre>
</br>



<p class="wp-block-paragraph">And updated the grid infra resource to match it.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,3]">
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl modify database -d ONPR_CHZ2 -spfile '+DATAC5/ONPR_CHZ2/PARAMETERFILE/spfile.621.1175607313'
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl start database -d ONPR_CHZ2
oracle@ExaCC-cl01n1:~/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_CHZ2
Instance ONPR1 is running on node ExaCC-cl01n1
Instance ONPR2 is running on node ExaCC-cl01n2
</pre>
</br>



<h2 class="wp-block-heading" id="h-placement-of-the-pdb-datafiles">Placement of the PDB datafiles</h2>



<p class="wp-block-paragraph">As we can see from the ZDM log, ZDM is doing the noncdb to pdb conversion by creating a pluggable database with the option NOCOPY.</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1]">
oracle@ExaCC-cl01n1:/u02/app/oracle/zdm/zdm_ONPR_CHZ2_280/zdm/log/ [ONPR1] grep -i "CREATE PLUGGABLE DATABASE" zdm_noncdbtopdb_conversion_211779.log
CREATE PLUGGABLE DATABASE ONPRZ_APP_001T AS CLONE USING '/tmp/ONPRZ_APP_001T.xml' NOCOPY TEMPFILE REUSE
</pre>
</br>



<p class="wp-block-paragraph">This means the PDB datafiles remains at the same position as the noncdb database was having, in our case ONPRZ_APP_001T.</p>



<p class="wp-block-paragraph">So the new PDB ONPRZ_APP_001T is located in ONPR_CHZ2 CDB but having its datafiles not in one subdirectory from the CDB using the GUID from the PDB but an external folder.</p>



<p class="wp-block-paragraph">Location of the PDB datafiles:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,2,10]">
[grid@ExaCC-cl01n1 ~]$ asmcmd
ASMCMD&gt; ls DATAC5/ONPRZ_APP_001T/
CHANGETRACKING/
DATAGUARDCONFIG/
TEMPFILE/
controlfile/
datafile/
onlinelog/
password/
ASMCMD&gt; ls DATAC5/ONPRZ_APP_001T/datafile
APP1.646.1175616827
APP2.644.1175616827
SYSAUX.650.1175616809
SYSTEM.651.1175616809
UNDOTBS1.648.1175616825
USERS.647.1175616827
</pre>
</br>



<p class="wp-block-paragraph">Location of the CDB and other PDB datafiles:</p>



<pre class="brush: sql; gutter: true; first-line: 1; highlight: [1,11,13,15]">
ASMCMD&gt; ls DATAC5/ONPR_CHZ2
0F39DE50B35B3B53E0638A5346646D89/
1E622346BAF56871E0630E1FA10AEBC4/
1E64CA31F0169FAEE0630E1FA10A0290/
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
PASSWORD/
TEMPFILE/
ASMCMD&gt; ls DATAC5/ONPR_CHZ2/1E64CA31F0169FAEE0630E1FA10A0290/
TEMPFILE/
ASMCMD&gt; ls DATAC5/ONPR_CHZ2/1E622346BAF56871E0630E1FA10AEBC4/
TEMPFILE/
ASMCMD&gt; ls DATAC5/ONPR_CHZ2/F39DE50B35B3B53E0638A5346646D89/DATAFILE/
SYSAUX.613.1175606819
SYSTEM.612.1175606819
UNDOTBS1.614.1175606819
</pre>
</br>



<h2 class="wp-block-heading" id="h-to-wrap-up">To wrap up</h2>



<p class="wp-block-paragraph">In case of a ZDM Physical Online Migration using noncdb to pdb conversion I would recommend to relocate the PDB at the end of the migration.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/">Why relocating the PDB after ZDM Physical Online migration with noncdb to cdb conversion is a must?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/why-relocating-the-pdb-after-zdm-physical-online-migration-with-noncdb-to-cdb-conversion-is-a-must/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Fix the etcd Error: &#8220;etcdserver: mvcc: database space exceeded&#8221; in a Patroni cluster</title>
		<link>https://www.dbi-services.com/blog/how-to-fix-the-etcd-error-etcdserver-mvcc-database-space-exceeded-in-a-patroni-cluster/</link>
					<comments>https://www.dbi-services.com/blog/how-to-fix-the-etcd-error-etcdserver-mvcc-database-space-exceeded-in-a-patroni-cluster/#comments</comments>
		
		<dc:creator><![CDATA[Joan Frey]]></dc:creator>
		<pubDate>Tue, 14 May 2024 12:50:44 +0000</pubDate>
				<category><![CDATA[Database Administration & Monitoring]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[etcd]]></category>
		<category><![CDATA[Patroni]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=32172</guid>

					<description><![CDATA[<p>If you&#8217;re encountering the etcd error &#8220;etcdserver: mvcc: database space exceeded,&#8221; it means your etcd database has exceeded its storage limit. This can occur due to a variety of reasons, such as a large number of revisions or excessive data accumulation. However, there&#8217;s no need to panic; this issue can be resolved effectively. I know [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/how-to-fix-the-etcd-error-etcdserver-mvcc-database-space-exceeded-in-a-patroni-cluster/">How to Fix the etcd Error: &#8220;etcdserver: mvcc: database space exceeded&#8221; in a Patroni cluster</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you&#8217;re encountering the etcd error &#8220;etcdserver: mvcc: database space exceeded,&#8221; it means your etcd database has exceeded its storage limit. This can occur due to a variety of reasons, such as a large number of revisions or excessive data accumulation. However, there&#8217;s no need to panic; this issue can be resolved effectively. </p>



<p class="wp-block-paragraph">I know that there is already plenty of blogs or posts about etcd, but 99% of them are related to Kubernetes topic where etcd is managed in containers. In my case, etcd cluster is installed on three SLES VMs alongside a Patroni cluster. Using etcd with Patroni enhances the reliability, scalability, and manageability of PostgreSQL clusters by providing a robust distributed coordination mechanism for high availability and configuration management. So dear DBA, I hope that this blog will help you ! Below, I&#8217;ll outline the steps to fix this error and prevent this error from happening.</p>



<h2 class="wp-block-heading" id="h-where-did-this-issue-happen">Where did this issue happen</h2>



<p class="wp-block-paragraph">The first time I saw this issue was at a customer. They had a Patroni cluster with 3 nodes, including 2 PostgreSQL instance. They noticed Patroni issue on their monitoring so I was asked to have a look. In the end, the Patroni issue was caused by the etcd database being full. I find the error logs from the etcd service status.</p>



<h2 class="wp-block-heading" id="h-understanding-the-error">Understanding the Error</h2>



<p class="wp-block-paragraph">Before diving into the solution, it&#8217;s essential to understand what causes this error. Etcd, a distributed key-value store, utilizes a Multi-Version Concurrency Control (MVCC) model to manage data. When the database space is exceeded, it indicates that there&#8217;s too much data stored, potentially leading to performance issues or even service disruptions. By default, the database size is limited to 2Gb, which should be more than enough, but without knowing this limitation, you might encounter the same issue than me one day.</p>



<h2 class="wp-block-heading" id="h-pause-patroni-cluster-management">Pause Patroni Cluster Management</h2>



<p class="wp-block-paragraph">Utilize Patroni&#8217;s patronictl command to temporarily suspend cluster management, effectively halting automated failover processes and configuration adjustments while conducting the fix procedure. (<a href="https://patroni.readthedocs.io/en/latest/pause.html" target="_blank" rel="noreferrer noopener">https://patroni.readthedocs.io/en/latest/pause.html</a>)</p>



<pre class="wp-block-code"><code># patronictl pause --wait
'pause' request sent, waiting until it is recognized by all nodes
Success: cluster management is paused</code></pre>



<h2 class="wp-block-heading" id="h-steps-to-fix-the-error">Steps to Fix the Error</h2>



<h3 class="wp-block-heading" id="h-update-etcd-configuration">Update etcd Configuration</h3>



<p class="wp-block-paragraph">The first step is to adjust the etcd configuration file to optimize database space usage. Add the following parameters to your etcd configuration file on all nodes of the cluster.</p>



<pre class="wp-block-code"><code>max-wals: 2
auto-compaction-mode: periodic
auto-compaction-retention: "36h"</code></pre>



<p class="wp-block-paragraph">Below, I&#8217;ll provide you with some explanation concerning the three parameters we are adding to the configuration file:</p>



<ol class="wp-block-list">
<li><strong>max-wals: 2</strong>:
<ul class="wp-block-list">
<li>This parameter specifies the maximum number of write-ahead logs (WALs) that etcd should retain before compacting them. WALs are temporary files used to store recent transactions before they are written to the main etcd database.</li>



<li>By limiting the number of WALs retained, you control the amount of temporary data stored, which helps in managing disk space usage. Keeping a low number of WALs ensures that disk space is not consumed excessively by temporary transaction logs.</li>
</ul>
</li>



<li><strong>auto-compaction-mode: periodic</strong>:
<ul class="wp-block-list">
<li>This parameter determines the mode of automatic database compaction. When set to &#8220;periodic,&#8221; etcd automatically compacts its database periodically based on the configured retention period.</li>



<li>Database compaction removes redundant or obsolete data, reclaiming disk space and preventing the database from growing indefinitely. Periodic compaction ensures that old data is regularly cleaned up, maintaining optimal performance and disk space usage.</li>
</ul>
</li>



<li><strong>auto-compaction-retention: &#8220;36h&#8221;</strong>:
<ul class="wp-block-list">
<li>This parameter defines the retention period for data before it becomes eligible for automatic compaction. It specifies the duration after which etcd should consider data for compaction.</li>



<li>In this example, &#8220;36h&#8221; represents a retention period of 36 hours. Any data older than 36 hours is eligible for compaction during the next periodic compaction cycle.</li>



<li>Adjusting the retention period allows you to control how long historical data is retained in the etcd database. Shorter retention periods result in more frequent compaction and potentially smaller database sizes, while longer retention periods preserve historical data for a longer duration.</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">Ensure to restart the etcd service on each node after updating the configuration. You can restart the nodes one by one and monitor the cluster&#8217;s status between each restart.</p>



<h3 class="wp-block-heading" id="h-remove-excessive-data-and-defragment-the-database">Remove Excessive Data and Defragment the Database</h3>



<p class="wp-block-paragraph">Execute various etcd commands to remove excessive data from the etcd database and defragment it. These commands need to be run on each etcd nodes. Complete the whole procedure node by node. In our case, I suggest that we start the process on our third nodes, where we don&#8217;t have any PostgreSQL instance running.</p>



<pre class="wp-block-code"><code># Obtain the current revision
$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=&lt;your-endpoints&gt; endpoint status --write-out="json" | grep -o '"revision":&#091;0-9]*' | grep -o '&#091;0-9].*')

# Compact all old revisions
$ ETCDCTL_API=3 etcdctl compact $rev

# Defragment the excessive space (execute for each etcd node)
$ ETCDCTL_API=3 etcdctl defrag --endpoints=&lt;your-endpoints&gt;

# Disarm alarm
$ ETCDCTL_API=3 etcdctl alarm disarm

# Check the cluster's status again
$ etcdctl endpoint status --cluster -w table
</code></pre>



<h3 class="wp-block-heading" id="h-additional-information-concerning-the-previous-command">Additional information concerning the previous command</h3>



<ul class="wp-block-list">
<li>if the $rev variable contains three times the same number, only use one instance of the number</li>



<li>The first time you run the compact/defrag commands, you may receive an etcd error. To be on the safe side, run the command on the third node first. In case of an error, you may need to restart the etcd service on the node before continuing. From a blog, this potential error might only concerned etcd version 3.5.x : &#8220;<strong>There is a known issue that etcd might run into data inconsistency issue if it crashes in the middle of an online defragmentation operation using </strong><code><strong>etcdctl</strong></code><strong> or clientv3 API. All the existing v3.5 releases are affected, including 3.5.0 ~ 3.5.5. So please use </strong><code><strong>etcdutl</strong></code><strong> to offline perform defragmentation operation</strong>, but this requires taking each member offline one at a time. It means that you need to stop each etcd instance firstly, then perform defragmentation using <code>etcdutl</code>, start the instance at last. Please refer to the issue 1 in <a href="https://docs.google.com/document/d/1q6PausGMsj-ZyqN2Zx0W8426KsB5GEh3XA801JxBCiE/edit" target="_blank" rel="noreferrer noopener">public statement</a>.&#8221; (<a href="https://etcd.io/blog/2023/how_to_debug_large_db_size_issue/#:~:text=Users%20can%20configure%20the%20quota,sufficient%20for%20most%20use%20cases" target="_blank" rel="noreferrer noopener">https://etcd.io/blog/2023/how_to_debug_large_db_size_issue/#:~:text=Users%20can%20configure%20the%20quota,sufficient%20for%20most%20use%20cases</a>)</li>



<li>Run the defrag command for each node and verify that the DB size has properly reduce each time.</li>
</ul>



<h3 class="wp-block-heading" id="h-verification">Verification</h3>



<p class="wp-block-paragraph">After completing the steps above, ensure there are no more alarms, and the database size has reduced. Monitor the cluster&#8217;s performance to confirm that the issue has been resolved successfully.</p>



<h2 class="wp-block-heading" id="h-resume-patroni-cluster-management">Resume Patroni Cluster Management</h2>



<p class="wp-block-paragraph">After confirming the successful clean of the alarms, proceed to re-enable cluster management, enabling Patroni to resume its standard operations and exit maintenance mode.</p>



<pre class="wp-block-code"><code># patronictl resume --wait
'resume' request sent, waiting until it is recognized by all nodes
Success: cluster management is resumed</code></pre>



<h2 class="wp-block-heading" id="h-conclusion">Conclusion</h2>



<p class="wp-block-paragraph">To conclude, facing the &#8220;etcdserver: mvcc: database space exceeded&#8221; error can be concerning, but with the right approach, it&#8217;s entirely manageable. By updating the etcd configuration and executing appropriate commands to remove excess data and defragment the database, you can optimize your etcd cluster&#8217;s performance and ensure smooth operation. Remember to monitor the cluster regularly to catch any potential issues early on. With these steps, you can effectively resolve the etcd database space exceeded error and maintain a healthy etcd environment.</p>



<h2 class="wp-block-heading" id="h-useful-links">Useful Links</h2>



<p class="wp-block-paragraph">Find more information about etcd database size: How to debug large db size issue?<a href="https://etcd.io/blog/2023/how_to_debug_large_db_size_issue/#:~:text=Users%20can%20configure%20the%20quota,sufficient%20for%20most%20use%20cases.">https://etcd.io/blog/2023/how_to_debug_large_db_size_issue/#:~:text=Users%20can%20configure%20the%20quota,sufficient%20for%20most%20use%20cases.</a></p>



<p class="wp-block-paragraph">Official etcd operations guide: <a href="https://etcd.io/docs/v3.5/op-guide/" target="_blank" rel="noreferrer noopener">https://etcd.io/docs/v3.5/op-guide/</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/how-to-fix-the-etcd-error-etcdserver-mvcc-database-space-exceeded-in-a-patroni-cluster/">How to Fix the etcd Error: &#8220;etcdserver: mvcc: database space exceeded&#8221; in a Patroni cluster</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/how-to-fix-the-etcd-error-etcdserver-mvcc-database-space-exceeded-in-a-patroni-cluster/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-11-11 23:12:14 by W3 Total Cache
-->