<?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>Julien Delattre, auteur/autrice sur dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/author/juliendelattre/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/author/juliendelattre/</link>
	<description></description>
	<lastBuildDate>Tue, 16 Jun 2026 15:16:16 +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>Julien Delattre, auteur/autrice sur dbi Blog</title>
	<link>https://www.dbi-services.com/blog/author/juliendelattre/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>LOB Replication With GoldenGate and Importance of Primary Keys</title>
		<link>https://www.dbi-services.com/blog/lob-replication-with-goldengate-and-importance-of-primary-keys/</link>
					<comments>https://www.dbi-services.com/blog/lob-replication-with-goldengate-and-importance-of-primary-keys/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 15:13:07 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[bad_column]]></category>
		<category><![CDATA[blob]]></category>
		<category><![CDATA[CLOB]]></category>
		<category><![CDATA[dba_goldengate_not_unique]]></category>
		<category><![CDATA[keycols]]></category>
		<category><![CDATA[LOB]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[primary key]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[unsupported]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44906</guid>

					<description><![CDATA[<p>Every time I work on database migrations with GoldenGate, I have the same talks with application teams about missing primary keys. Especially when it comes to LOB replication with GoldenGate. In a previous blog, I wrote about how to interpret the DBA_GOLDENGATE_NOT_UNIQUE view, which lists tables with no primary key or non-null unique indexes. There [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/lob-replication-with-goldengate-and-importance-of-primary-keys/">LOB Replication With GoldenGate and Importance of Primary Keys</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">Every time I work on database migrations with GoldenGate, I have the same talks with application teams about missing primary keys. Especially when it comes to LOB replication with GoldenGate. In a <a href="https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/" target="_blank" rel="noreferrer noopener">previous blog</a>, I wrote about how to interpret the <code><a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/refrn/DBA_GOLDENGATE_NOT_UNIQUE.html" target="_blank" rel="noreferrer noopener">DBA_GOLDENGATE_NOT_UNIQUE</a></code> view, which lists tables with <strong>no primary key or non-null unique indexes</strong>. There are two main groups of tables listed here:</p>



<ul class="wp-block-list">
<li>Tables where all columns can be used to identify uniqueness (<code>bad_column='N'</code>)</li>



<li>Tables where not all columns can be used (<code>bad_column='Y'</code>)</li>
</ul>



<p class="wp-block-paragraph">To show what happens when primary keys are missing in GoldenGate replication, let&#8217;s see a few examples. In all the examples, I will extract data from <code>APP_SOURCE</code> schema and replicate it into an <code>APP_TARGET</code> schema.</p>



<p class="wp-block-paragraph">The parameters of the replication do not really matter here, but to be precise, here is the extract parameter file:</p>



<pre class="wp-block-code"><code>EXTRACT EXT1
USERIDALIAS source_cdb DOMAIN OracleGoldenGate
EXTTRAIL pdb1/aa
SOURCECATALOG PDB1
DDL INCLUDE MAPPED
TABLE APP_SOURCE.*;</code></pre>



<p class="wp-block-paragraph">And here is the replicat parameter file:</p>



<pre class="wp-block-code"><code>REPLICAT REP2
USERIDALIAS target_pdb DOMAIN OracleGoldenGate
DDL INCLUDE MAPPED
MAP PDB1.APP_SOURCE.*, TARGET PDB2.APP_TARGET.*;</code></pre>



<h2 id="h-first-test-simple-table-with-primary-key" class="wp-block-heading">First test : simple table with primary key</h2>



<p class="wp-block-paragraph">First, let&#8217;s try the most common example, with a table <code>APP_SOURCE.TEST_PK</code> created <strong>with a primary key</strong>. You can skip this part if you know how GoldenGate works, but I just wanted to include this for comparison.</p>



<pre class="wp-block-code"><code>CREATE TABLE APP_SOURCE.TEST_PK
(
    id   NUMBER PRIMARY KEY,
    data VARCHAR2(100)
);</code></pre>



<p class="wp-block-paragraph">Let&#8217;s <strong>insert a few rows</strong> in this table and look at the content of the table in both the source and the target.</p>



<pre class="wp-block-code"><code>INSERT INTO APP_SOURCE.TEST_PK VALUES (1,'A');
INSERT INTO APP_SOURCE.TEST_PK VALUES (2,'B');
COMMIT;

-- Verify source/target
SELECT * FROM APP_SOURCE.TEST_PK ORDER BY id;
SELECT * FROM APP_TARGET.TEST_PK ORDER BY id;</code></pre>



<p class="wp-block-paragraph">You will see the same content in both tables.</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM APP_SOURCE.TEST_PK ORDER BY id;

        ID DATA
---------- --------------------
         1 A
         2 B</code></pre>



<p class="wp-block-paragraph">Now, if you update the row with <code>id=1</code>, it will be updated in both tables as well.</p>



<pre class="wp-block-code"><code>UPDATE APP_SOURCE.TEST_PK SET data='A_UPDATED' WHERE id=1;
COMMIT;

-- Verify
SELECT * FROM APP_SOURCE.TEST_PK ORDER BY id;
SELECT * FROM APP_TARGET.TEST_PK ORDER BY id;</code></pre>



<p class="wp-block-paragraph">Checking the tables will give you the updated data.</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM APP_TARGET.TEST_PK ORDER BY id;

        ID DATA
---------- --------------------
         1 A_UPDATED
         2 B</code></pre>



<p class="wp-block-paragraph">Until then, nothing really interesting, but let&#8217;s look at the <strong>report file of the extract</strong> on the source. You will see the following information:</p>



<pre class="wp-block-code"><code>2026-06-06 07:00:52&nbsp; INFO&nbsp;&nbsp;&nbsp; OGG-06509&nbsp; Using the following key columns for source table PDB1.APP_SOURCE.TEST_PK: ID.</code></pre>



<p class="wp-block-paragraph">Because the <strong>table has a primary key</strong>, GoldenGate knows that it should <strong>only use this column</strong> to identify unique rows.</p>



<h2 id="h-second-test-table-with-no-primary-key-and-no-lob-columns" class="wp-block-heading">Second test : table with no primary key and no LOB columns</h2>



<p class="wp-block-paragraph">In this second test, I will create a table without a primary key, but using only types that GoldenGate can use to identify uniqueness.</p>



<pre class="wp-block-code"><code>CREATE TABLE APP_SOURCE.TEST_NOPK
(
    id   NUMBER,
    data VARCHAR2(100)
);</code></pre>



<p class="wp-block-paragraph">We can already query the <code>DBA_GOLDENGATE_NOT_UNIQUE</code> view to find this new table listed with <code>bad_column='N'</code> :</p>



<pre class="wp-block-code"><code>SELECT *
FROM dba_goldengate_not_unique
WHERE owner='APP_SOURCE'
ORDER BY owner, table_name;

OWNER                          TABLE_NAME                     BAD_COLUMN
------------------------------ ------------------------------ ----------
APP_SOURCE                     TEST_NOPK                      N</code></pre>



<p class="wp-block-paragraph">Let&#8217;s do the same steps as before, inserting data and updating the content.</p>



<pre class="wp-block-code"><code>INSERT INTO APP_SOURCE.TEST_NOPK VALUES (1,'A');
INSERT INTO APP_SOURCE.TEST_NOPK VALUES (2,'B');
COMMIT;

SELECT * FROM APP_SOURCE.TEST_NOPK ORDER BY id;
SELECT * FROM APP_TARGET.TEST_NOPK ORDER BY id;

UPDATE APP_SOURCE.TEST_NOPK SET data='A_UPDATED' WHERE id=1;
COMMIT;</code></pre>



<p class="wp-block-paragraph">The content of the table is the same on source and target, as expected.</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM APP_TARGET.TEST_NOPK ORDER BY id;

        ID DATA
---------- --------------------
         1 A_UPDATED
         2 B</code></pre>



<p class="wp-block-paragraph">And looking at the <strong>extract report file</strong>, we can see that <strong>all viable columns were used</strong>. In that case, it meant taking <code>ID</code> and <code>DATA</code>.</p>



<pre class="wp-block-code"><code>2026-06-06 07:08:13  INFO    OGG-06508  Wildcard MAP (TABLE) resolved (entry PDB1.APP_SOURCE.*): TABLE "PDB1"."APP_SOURCE"."TEST_NOPK".

2026-06-06 07:08:13  WARNING OGG-06439  No unique key is defined for table TEST_NOPK. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key. If using KEYCOLS, make sure that you create an INDEX in the target database for those column(s) as well.

2026-06-06 07:08:13  INFO    OGG-06509  Using the following key columns for source table PDB1.APP_SOURCE.TEST_NOPK: ID, DATA.</code></pre>



<p class="wp-block-paragraph">As mentioned in the other blog about primary keys in GoldenGate, this will work, but you will of course have <strong>performance issues</strong> when replicating data.</p>



<h2 id="h-third-test-table-with-no-pk-and-a-clob-column" class="wp-block-heading">Third test : Table with no PK and a <code>CLOB</code> column</h2>



<p class="wp-block-paragraph">Now, let me show you the bad use case, where you don&#8217;t have a primary key and the <strong>table contains a non-viable column for uniqueness identification</strong>. In this example, I will use a <code>CLOB</code> column, but it could be another unbounded data type.</p>



<pre class="wp-block-code"><code>CREATE TABLE APP_SOURCE.TEST_CLOB
(
    id   NUMBER,
    code VARCHAR2(10),
    txt  CLOB
);</code></pre>



<p class="wp-block-paragraph">If we check the <code>DBA_GOLDENGATE_NOT_UNIQUE</code> view, we see the new table listed with <code>bad_column='Y'</code>.</p>



<pre class="wp-block-code"><code>SELECT *
FROM dba_goldengate_not_unique
WHERE owner='APP_SOURCE'
ORDER BY owner, table_name;

OWNER                          TABLE_NAME                     BAD_COLUMN
------------------------------ ------------------------------ ----------
APP_SOURCE                     TEST_CLOB                      Y
APP_SOURCE                     TEST_NOPK                      N</code></pre>



<p class="wp-block-paragraph">Let&#8217;s insert some data. But this time, I will add <strong>two more rows that are unique</strong>, but for which only the <strong><code>TXT</code> content differs</strong>.</p>



<pre class="wp-block-code"><code>INSERT INTO app_source.test_clob VALUES (1,'A',TO_CLOB('LOB_1'));
INSERT INTO app_source.test_clob VALUES (2,'B',TO_CLOB('LOB_2'));
INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_1'));
INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_2'));
COMMIT;</code></pre>



<p class="wp-block-paragraph">The data was correctly inserted, and the content is the same on the source and target.</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT id,code,DBMS_LOB.SUBSTR(txt,40,1) txt FROM app_target.test_clob ORDER BY id;

        ID CODE       TXT
---------- ---------- ----------------------------------------
         1 A	      LOB_1
         2 B	      LOB_2
       100 DUP	      LOB_1
       100 DUP	      LOB_2</code></pre>



<p class="wp-block-paragraph">In the <strong>report file</strong>, we do not see any difference between this example and the one before. GoldenGate mentions using <strong>two columns for uniqueness identification</strong> : <code>ID</code> and <code>CODE</code>. <strong>GoldenGate never mentions that a third column existed and was not used</strong>. The warning displayed is the same as before.</p>



<pre class="wp-block-code"><code>2026-06-06 07:10:13  INFO    OGG-06508  Wildcard MAP (TABLE) resolved (entry PDB1.APP_SOURCE.*): TABLE "PDB1"."APP_SOURCE"."TEST_CLOB".

2026-06-06 07:10:13  WARNING OGG-06439  No unique key is defined for table TEST_CLOB. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key. If using KEYCOLS, make sure that you create an INDEX in the target database for those column(s) as well.

2026-06-06 07:10:13  INFO    OGG-06509  Using the following key columns for source table PDB1.APP_SOURCE.TEST_CLOB: ID, CODE.</code></pre>



<p class="wp-block-paragraph">And now, the main problem I wanted to discuss regarding LOB replication with GoldenGate. If you <strong>try to delete one row by specifying all three columns</strong>, it will <strong>not always work</strong>.</p>



<pre class="wp-block-code"><code>DELETE FROM app_source.test_clob
WHERE id = 100
AND code = 'DUP'
AND DBMS_LOB.COMPARE(txt,TO_CLOB('LOB_1')) = 0;</code></pre>



<p class="wp-block-paragraph">Sometimes, the line with <code>LOB_1</code> will be deleted:</p>



<pre class="wp-block-code"><code>        ID CODE       TXT
---------- ---------- ----------------------------------------
         1 A	      LOB_1
         2 B	      LOB_2
       100 DUP	      LOB_2</code></pre>



<p class="wp-block-paragraph">But sometimes, the line with <code>LOB_2</code> will be deleted:</p>



<pre class="wp-block-code"><code>        ID CODE       TXT
---------- ---------- ----------------------------------------
         1 A	      LOB_1
         2 B	      LOB_2
       100 DUP	      LOB_1</code></pre>



<p class="wp-block-paragraph">More precisely, it will just <strong>delete the first line that was inserted</strong>. You then have two cases. If you insert <code>LOB_1</code> first, it will be deleted correctly:</p>



<pre class="wp-block-code"><code>DROP TABLE app_source.test_clob PURGE;

CREATE TABLE app_source.test_clob (id NUMBER, code VARCHAR2(10), txt CLOB);

INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_1'));
INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_2'));
COMMIT;

DELETE FROM app_source.test_clob
WHERE id = 100
AND code = 'DUP'
AND DBMS_LOB.COMPARE(txt,TO_CLOB('LOB_1')) = 0;
COMMIT;

SQL&gt; SELECT id,code,DBMS_LOB.SUBSTR(txt,40,1) txt
FROM app_target.test_clob
WHERE code='DUP';

        ID CODE       TXT
---------- ---------- ----------------------------------------
       100 DUP	      LOB_2</code></pre>



<p class="wp-block-paragraph">And if you insert <code>LOB_2</code> first, the incorrect line will be deleted:</p>



<pre class="wp-block-code"><code>DROP TABLE app_source.test_clob PURGE;

CREATE TABLE app_source.test_clob (id NUMBER, code VARCHAR2(10), txt CLOB);

INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_2'));
INSERT INTO app_source.test_clob VALUES (100,'DUP',TO_CLOB('LOB_1'));
COMMIT;

DELETE FROM app_source.test_clob
WHERE id = 100
AND code = 'DUP'
AND DBMS_LOB.COMPARE(txt,TO_CLOB('LOB_1')) = 0;
COMMIT;

SQL&gt; SELECT id,code,DBMS_LOB.SUBSTR(txt,40,1) txt
FROM app_target.test_clob
WHERE code='DUP';

        ID CODE       TXT
---------- ---------- ----------------------------------------
       100 DUP	      LOB_1</code></pre>



<p class="wp-block-paragraph">You now know why <strong>you should always pay attention</strong> to tables in the <code><a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/refrn/DBA_GOLDENGATE_NOT_UNIQUE.html" target="_blank" rel="noreferrer noopener">DBA_GOLDENGATE_NOT_UNIQUE</a></code> view with <code>bad_column='Y'</code>. If you have such tables, there are several scenarios that I presented in the <a href="https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/" target="_blank" rel="noreferrer noopener">last blog on the topic</a>. But <strong>ignoring them is not one of them</strong>. This way, you will avoid issues regarding LOB replication with GoldenGate.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/lob-replication-with-goldengate-and-importance-of-primary-keys/">LOB Replication With GoldenGate and Importance of Primary Keys</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/lob-replication-with-goldengate-and-importance-of-primary-keys/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate Row Identification: Misconceptions and Solutions</title>
		<link>https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 15:27:49 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[bad_column]]></category>
		<category><![CDATA[CLOB]]></category>
		<category><![CDATA[dba_goldengate_not_unique]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[LOB]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[pk]]></category>
		<category><![CDATA[primary key]]></category>
		<category><![CDATA[Replication]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44899</guid>

					<description><![CDATA[<p>GoldenGate is a powerful replication tool, but it is so versatile that you should always check whether what you intend to do is supported or not. Oracle provides a few interesting scripts and views to check your environments before attempting a replication with GoldenGate, and I wanted to write about the DBA_GOLDENGATE_NOT_UNIQUE view. Before explaining [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/">GoldenGate Row Identification: Misconceptions and Solutions</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">GoldenGate is a <strong>powerful replication tool</strong>, but it is so versatile that <strong>you should always check</strong> whether what you intend to do is <strong>supported or not</strong>. Oracle provides a few interesting scripts and views to check your environments before attempting a replication with GoldenGate, and I wanted to write about the <code><a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/refrn/DBA_GOLDENGATE_NOT_UNIQUE.html" target="_blank" rel="noreferrer noopener">DBA_GOLDENGATE_NOT_UNIQUE</a></code> view.</p>



<p class="wp-block-paragraph">Before explaining what this view contains and <strong>how to interpret it</strong>, you should remember that GoldenGate replicates data by replaying changes that occurred on the source database. One of the <strong>most important problems</strong> GoldenGate must solve is to <strong>identify the exact row</strong> that must be updated or deleted on the target database. This means that GoldenGate needs a way to <strong>uniquely identify</strong> every row in a table.</p>



<p class="wp-block-paragraph">The simplest solution is a <strong>primary key</strong>, but GoldenGate row identification can also be done through a <strong>non-null unique index</strong>. When neither exists, GoldenGate must <strong>fall back to less efficient mechanisms</strong>. This means <strong>using all available columns</strong> to identify a row.</p>



<p class="wp-block-paragraph">The <code>DBA_GOLDENGATE_NOT_UNIQUE</code> view contains tables that have <strong>no primary key</strong> and <strong>no non-null unique index</strong>. It is there to help you <strong>identify potential issues</strong> in your database schema and prepare in the best possible way a migration with GoldenGate or any replication work.</p>



<p class="wp-block-paragraph">Here is an example of the content of the view:</p>



<pre class="wp-block-code"><code>OWNER			       TABLE_NAME		      BAD_COLUMN
------------------------------ ------------------------------ ----------
APP_PDB1		       TEST_NOPK		      N
APP_PDB1		       TEST_CLOB		      Y</code></pre>



<p class="wp-block-paragraph">The view is very simple, yet very often misunderstood. The <code>owner</code> and <code>table_name</code> column names are self-explanatory, but let&#8217;s talk about <code>bad_column</code>. This column has two possible values: <code>Y</code> and <code>N</code>.</p>



<h2 id="h-first-case-bad-column-n" class="wp-block-heading">First case &#8211; <code>bad_column = 'N'</code></h2>



<p class="wp-block-paragraph" id="h-n-is-what-you-will-most-often-see-in-this-view-you-should-treat-these-as-warnings"><code>N</code> is what you will most often see in this view. You should treat these as <strong>warnings</strong>. If you intend to replicate a table from this list, you can choose to ignore the warning if you don&#8217;t care about <strong>replication performance</strong>.</p>



<p class="wp-block-paragraph" id="h-n-is-what-you-will-most-often-see-in-this-view-you-should-treat-these-as-warnings">Tables in this list will be <strong>replicated using all columns</strong> as a substitute key. GoldenGate can usually handle these tables without any functional issue. However, <code>UPDATE</code> and <code>DELETE</code> operations become more expensive because <strong>every column must be used</strong> to identify the target row.</p>



<p class="wp-block-paragraph">From my experience, you should still always <strong>discuss with the application owner</strong> or someone who knows the underlying database schema to try to <strong>avoid performance issues</strong>. A list of solutions is given at the end of the blog.</p>



<h2 id="h-second-case-bad-column-y" class="wp-block-heading">Second case &#8211; <code>bad_column = 'Y'</code></h2>



<p class="wp-block-paragraph">If there is one point to remember from this blog, it’s this: <strong>you should never replicate data from tables with <code>bad_column='Y'</code> without thorough investigation</strong>.</p>



<p class="wp-block-paragraph">Tables listed here contain one or more columns that GoldenGate cannot safely use as part of a substitute key, such as <code>LONG</code> or <code>CLOB</code>.</p>



<p class="wp-block-paragraph">Since GoldenGate cannot build a complete substitute key from all columns, row identification becomes problematic. Depending on the table structure and replication configuration, GoldenGate may be <strong>unable to correctly locate rows</strong> for <code>UPDATE</code> or <code>DELETE</code> operations.</p>



<p class="wp-block-paragraph">In practice, a table with <code>bad_column='Y'</code> should be considered a <strong>candidate for schema remediation</strong> before replication (see the list of options below).</p>



<h2 id="h-will-there-be-an-error-if-goldengate-cannot-identify-uniqueness" class="wp-block-heading">Will there be an error if GoldenGate cannot identify uniqueness ?</h2>



<p class="wp-block-paragraph">This is a very <strong>common misconception</strong> when talking about these primary key issues. <strong>GoldenGate does not verify</strong> that the columns used for row identification are truly unique. If duplicate rows exist, a replicat may update or delete an unintended row. In many cases no explicit GoldenGate error will be generated because, from GoldenGate’s perspective, a matching row was found. It could <strong>silently delete the wrong row</strong>, and you will never hear a word about it. In the logs, you won&#8217;t see the difference.</p>



<h2 id="h-what-can-be-done-to-solve-these-issues" class="wp-block-heading">What can be done to solve these issues ?</h2>



<p class="wp-block-paragraph">Essentially, there are four possible approaches:</p>



<ul class="wp-block-list">
<li>If you have the ability to <strong>create a primary key</strong> or a <strong>non-null unique index</strong> on the <strong>source database</strong>, go for it before the initial load of your target database. This is the <strong>safest approach</strong> because uniqueness is enforced by the database itself.</li>



<li>If you <strong>cannot alter the source</strong> schema but are <strong>100% sure</strong> that a <strong>subset of columns</strong> that already exists in the table <strong>can uniquely identify every row</strong>, you can use the <code>KEYCOLS</code> keyword in your parameter files.</li>



<li>Sometimes, the <strong>application</strong> design <strong>prevents duplicates</strong> from being generated. Again, you need to be sure about this. But sometimes, it means that you could <strong>rely on the application design</strong>.</li>



<li>When bad_column is <code>N</code>, you could decide to <strong>not do anything</strong>. For tables with a lot of activity, it could slow down your replication. During a migration, it could even completely block it in production. This should only be done in <strong>last resort</strong>.</li>
</ul>



<p class="wp-block-paragraph">A common misconception is that every table listed in <code>DBA_GOLDENGATE_NOT_UNIQUE</code> is unsupported by GoldenGate. This is not the case. At the other end of the spectrum, I&#8217;ve heard countless of times that these warnings can be ignored. Do that, and you will have nightmares solving issues once you hit production. The view merely highlights tables for which GoldenGate cannot rely on a primary key or a non-null unique index for row identification. The real concern is the <code>bad_column</code> flag: <code>N</code> is a <strong>performance warning</strong>, while <code>Y</code> deserves <strong>immediate investigation</strong> before any replication project.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/">GoldenGate Row Identification: Misconceptions and Solutions</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/goldengate-row-identification-misconceptions-and-solutions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate NGINX Reverse Proxy Behavior Changes</title>
		<link>https://www.dbi-services.com/blog/goldengate-nginx-reverse-proxy-behavior-changes/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-nginx-reverse-proxy-behavior-changes/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 06:47:40 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Multiple]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[restapi]]></category>
		<category><![CDATA[reverse]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44863</guid>

					<description><![CDATA[<p>I recently wrote about NGINX reverse proxy reconfiguration after creating or deleting a deployment in GoldenGate. It reminded me that there is an overlooked aspect of the reverse proxy configuration, which is important when trying to automate GoldenGate management with the REST API. In fact, when using a reverse proxy with a single deployment, some [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-nginx-reverse-proxy-behavior-changes/">GoldenGate NGINX Reverse Proxy Behavior Changes</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 about <a href="https://www.dbi-services.com/blog/reconfigure-nginx-after-adding-a-goldengate-deployment/" target="_blank" rel="noreferrer noopener">NGINX reverse proxy reconfiguration</a> after <strong>creating or deleting a deployment</strong> in GoldenGate. It reminded me that there is an <strong>overlooked aspect</strong> of the reverse proxy configuration, which is important when trying to <strong>automate GoldenGate management</strong> with the REST API.</p>



<p class="wp-block-paragraph">In fact, when using a <strong>reverse proxy with a single deployment</strong>, some <strong>endpoints are different</strong> from a <strong>multi-deployment</strong> configuration.</p>



<p class="wp-block-paragraph">Let&#8217;s take the <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-extracts-get.html" target="_blank" rel="noreferrer noopener">extract listing</a> endpoint as example: <code>GET /services/v2/extracts</code>. With a <strong>basic GoldenGate configuration</strong> without NGINX reverse proxy, you could <strong>list the extracts</strong> with the following URL: <code>https://vmogg:7809/services/v2/extracts</code></p>



<p class="wp-block-paragraph">In a <strong>single-deployment</strong> setting using NGINX, the <code>/services/v2/extracts</code> endpoint is <strong>still valid</strong> and will list the extracts of your only deployment (API response given below).</p>



<pre class="wp-block-code"><code>{
    "$schema": "api:standardResponse",
    "links": &#091;
        {
            "rel": "canonical",
            "href": "https://vmogg_single_deployment/services/v2/extracts",
            "mediaType": "text/html"
        },
        {
            "rel": "self",
            "href": "https://vmogg_single_deployment/services/v2/extracts",
            "mediaType": "text/html"
        },
        {
            "rel": "describedby",
            "href": "https://vmogg_single_deployment/services/ogg_test_01/adminsrvr/v2/metadata-catalog/extracts",
            "mediaType": "application/schema+json"
        }
    ],
    "messages": &#091;],
    "response": {
        "$schema": "ogg:collection",
        "items": &#091;
            {
                "links": &#091;
                    {
                        "rel": "parent",
                        "href": "https://vmogg_single_deployment/services/v2/extracts",
                        "mediaType": "application/json"
                    },
                    {
                        "rel": "canonical",
                        "href": "https://vmogg_single_deployment/services/v2/extracts/EXT1",
                        "mediaType": "application/json"
                    }
                ],
                "$schema": "ogg:collectionItem",
                "name": "EXT1",
                "status": "running"
            }
        ]
    }
}</code></pre>



<p class="wp-block-paragraph"><br>In a <strong>multi-deployment</strong> configuration, the <strong>endpoint does not work</strong>:</p>



<pre class="wp-block-code"><code>{
	"links": &#091;],
	"messages": &#091;
		{
			"$schema": "ogg:message",
			"title": "The requested resource does not exist.",
			"code": "OGG-12031",
			"severity": "ERROR",
			"issued": "2026-05-28T18:25:48Z",
			"type": "https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes"
		}
	]
}</code></pre>



<p class="wp-block-paragraph">This is an behavior is <strong>expected</strong>, since you <strong>cannot query multiple deployments</strong> at once.</p>



<ul class="wp-block-list">
<li>With a <strong>single deployment</strong>, you can list extracts without specifying the deployment name.</li>



<li>With <strong>multiple deployments</strong>, there is <strong>no meaning</strong> in listing extracts without having to specify which deployment you are targeting.</li>
</ul>



<p class="wp-block-paragraph">In the NGINX reverse proxy configuration file, this is materialized by a change of behavior for all endpoints that are deployment-specific. To keep the extracts endpoint as example, here is what the configuration looks like in a <strong>single-deployment</strong> setup:</p>



<pre class="wp-block-code"><code>location ~ ^/services/ogg_test_01/(?&lt;version&gt;&#091;^/]+)/(?&lt;resource&gt;extracts.*)$ {
location ~ ^/services/(?&lt;version&gt;&#091;^/]+)/(?&lt;resource&gt;extracts.*)$ {</code></pre>



<p class="wp-block-paragraph">And here is what it looks like in a <strong>multi-deployment</strong> setup:</p>



<pre class="wp-block-code"><code>location ~ ^/services/ogg_test_01/(?&lt;version&gt;&#091;^/]+)/(?&lt;resource&gt;extracts.*)$ {
location ~ ^/services/ogg_test_02/(?&lt;version&gt;&#091;^/]+)/(?&lt;resource&gt;extracts.*)$ {</code></pre>



<p class="wp-block-paragraph">With a single deployment, we could access the extracts endpoint through the deployment or with the default endpoint. With multiple deployments, this second option is not available anymore, and you have to specify the deployment name every time.</p>



<p class="wp-block-paragraph">This is why a best practice is to <strong>always use deployment-specific endpoints</strong> whenever it is possible, to avoid NGINX behavior changes in GoldenGate when adding or deleting deployments.</p>



<h2 class="wp-block-heading" id="h-can-i-still-use-deployment-specific-endpoints-if-i-don-t-have-a-reverse-proxy">Can I still use deployment-specific endpoints if I don&#8217;t have a reverse proxy ?</h2>



<p class="wp-block-paragraph">In the same way that it does not make sense to have a single endpoint to list extracts if you have multiple deployments with a reverse proxy, it <strong>does not make sense to include the deployment</strong> name in the URL if you do not have a reverse proxy. If you try to access this:</p>



<pre class="wp-block-code"><code>http(s)://vmogg:port/services/deployment_name/adminsrvr/v2/extracts</code></pre>



<p class="wp-block-paragraph">You will receive an error stating that &#8220;<em>The requested resource does not exist</em>&#8220;. <strong>Without a reverse proxy</strong>, the <strong>port</strong> is what <strong>determines both the deployment and the service</strong> to which you connect.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-nginx-reverse-proxy-behavior-changes/">GoldenGate NGINX Reverse Proxy Behavior Changes</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/goldengate-nginx-reverse-proxy-behavior-changes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate 26ai out-of-place patching with the web UI</title>
		<link>https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Sun, 31 May 2026 07:15:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[19]]></category>
		<category><![CDATA[23]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[26]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[out-of-place]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44392</guid>

					<description><![CDATA[<p>For some customers, the end of support for GoldenGate 19c in May this year and the migration to Microservices Architecture mean that they have to adapt their patching procedures (if they had any !). Let&#8217;s see how to patch a GoldenGate Microservices Architecture out of place efficiently. This guide is designed for GoldenGate 26ai because [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/">GoldenGate 26ai out-of-place patching with the web UI</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">For some customers, the <a href="https://www.dbi-services.com/blog/upgrade-goldengate-from-classic-to-microservices-architecture-before-its-too-late/" target="_blank" rel="noreferrer noopener">end of support for GoldenGate 19c</a> in May this year and the <strong>migration to Microservices Architecture</strong> mean that they have to adapt their patching procedures (if they had any !). Let&#8217;s see how to <strong>patch a GoldenGate Microservices Architecture out of place</strong> efficiently. This guide is designed for GoldenGate 26ai because this version introduces some small changes. However, you can follow this blog to patch other versions of GoldenGate.</p>



<p class="wp-block-paragraph">As for Oracle databases, the idea is to:</p>



<ul class="wp-block-list">
<li>Set up a <strong>new GoldenGate home</strong>.</li>



<li><strong>Switch the running processes</strong> to the new version of GoldenGate.</li>
</ul>



<p class="wp-block-paragraph">The nice thing is that since a few patches, Oracle now always delivers <strong>GoldenGate patches</strong> in <strong>two versions</strong>: the <strong>standard patch</strong>, applied on top of an existing installation, and a <strong>complete installation</strong>, which includes the patch. In this blog, we will use the second option.</p>



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



<p class="wp-block-paragraph">At the time of writing, version <code>23.26.2.0.1</code> (patch 39299258) was just released, but you should definitely check on the Oracle Support website to see if a new patch is available.</p>



<p class="wp-block-paragraph">As instructed in the installation guide for GoldenGate, just <strong>unzip the patched installation</strong> to a temporary directory and use the <code>runInstaller</code> with the following <code>oggcore.rsp</code> response file.</p>



<pre class="wp-block-code"><code>&gt; cat /home/oracle/oggcore.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v26_1_0
INSTALL_OPTION=ORA23ai
SOFTWARE_LOCATION=/u01/app/ogg/product/23.26.2.0.1
INVENTORY_LOCATION=/u01/app/oraInventory
UNIX_GROUP_NAME=oinstall

&gt; /u01/stage/fbo_ggs_Linux_x64_Oracle_services_shiphome/Disk1/runInstaller -silent -responseFile /home/oracle/oggcore.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 17094 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
&#091;...]
Successfully Setup Software.
The installation of Oracle GoldenGate Services was successful.</code></pre>



<p class="wp-block-paragraph">50% of the work is already done, but it&#8217;s definitely not the hardest part ! If you&#8217;re wondering how to take this out-of-place patching procedure and adapt it to GoldenGate 19c, just remember to set <code>INSTALL_OPTION=ORA19c</code> in the <code>oggcore.rsp</code> response file.</p>



<h2 class="wp-block-heading" id="h-changing-ogg-home-from-the-web-ui">Changing <code>OGG_HOME</code> from the web UI</h2>



<p class="wp-block-paragraph">Now that you have your new GoldenGate home, you are <strong>ready to switch</strong>. There are multiple ways of doing it, starting with updating your installation from the web UI. Here are the steps in the process:</p>



<ul class="wp-block-list">
<li>Updating the <code>OGG_HOME</code> of the Service Manager</li>



<li>Restarting the Service Manager</li>



<li>Optionally, restart the services attached to the Service Manager.</li>



<li>Updating the <code>OGG_HOME</code> of the deployments (one at a time)</li>



<li>Restarting the deployments</li>



<li>Restarting extracts, replicats and distribution paths</li>
</ul>



<p class="wp-block-paragraph">To start, just log in to the service manager and go to the <em><strong>Deployments &gt; Service Manager &gt; Details</strong></em> tab.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="549" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_details_tab-549x1024.png" alt="" class="wp-image-44785" style="width:300px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_details_tab-549x1024.png 549w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_details_tab-161x300.png 161w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_details_tab.png 620w" sizes="(max-width: 549px) 100vw, 549px" /></figure>
</div>


<p class="wp-block-paragraph">All you need to do is to edit the <em><strong>Deployment detail</strong></em>, by setting the new value for OGG_HOME. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="310" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_alter_deployment-1024x310.png" alt="" class="wp-image-44786" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_alter_deployment-1024x310.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_alter_deployment-300x91.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_alter_deployment-768x232.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_alter_deployment.png 1528w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">After updating the Service Manager, you can safely restart it from the web UI <strong><em>Home</em></strong> tab.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="250" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager-1024x250.png" alt="" class="wp-image-44787" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager-1024x250.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager-300x73.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager-768x188.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager-1536x376.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_service_manager.png 2020w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">If you check on your server, you should see the <code>ServiceManager</code> process using the latest <code>OGG_HOME</code> location:</p>



<pre class="wp-block-code"><code>oracle@vmogg:~/ &#091;ogg] ps -ef|grep ServiceManager
oracle      1709       1  0 14:47 ?        00:00:03 /u01/app/ogg/product/23.26.2.0.1/bin/ServiceManager --quiet</code></pre>



<p class="wp-block-paragraph">A new process named <code>AIService</code> was introduced in 26ai. If it is still running on the old <code>OGG_HOME</code> even after restarting the <code>ServiceManager</code> deployment, you should <strong>restart it from the web UI</strong>. Just click on the <code>ServiceManager</code> deployment, stop the AI Service and restart it.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="268" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-1024x268.png" alt="" class="wp-image-44879" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-1024x268.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-300x79.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-768x201.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-1536x402.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_webui_aiservice-2048x536.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">At this point, it is important to know that all <strong>your deployment processes</strong>, including extracts and replicats, <strong>are still running</strong> on the old GoldenGate home directory. Besides checking the server processes, you can verify the version from the web UI by clicking on the top-right profile icon and on <em><strong>About</strong></em>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="426" height="526" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about.png" alt="" class="wp-image-44783" style="width:200px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about.png 426w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about-243x300.png 243w" sizes="auto, (max-width: 426px) 100vw, 426px" /></figure>
</div>


<p class="wp-block-paragraph">In the service manager UI, you will have the new version:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="656" height="250" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_sm.png" alt="" class="wp-image-44781" style="width:400px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_sm.png 656w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_sm-300x114.png 300w" sizes="auto, (max-width: 656px) 100vw, 656px" /></figure>
</div>


<p class="wp-block-paragraph">And in the administration service UI, the old version is still there:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="712" height="266" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_admin.png" alt="" class="wp-image-44782" style="width:400px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_admin.png 712w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_about_admin-300x112.png 300w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>
</div>


<p class="wp-block-paragraph">You can now update your deployments, one at a time, by repeating the exact same procedure. From the Service Manager web UI, go to the <em><strong>Details</strong></em> tab of your deployments. Then, edit the <em><strong>Deployment detail</strong></em> and set <code>OGG_HOME</code> to the new value.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="432" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_deployment_detail-1024x432.png" alt="" class="wp-image-44784" style="width:700px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_deployment_detail-1024x432.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_deployment_detail-300x127.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_deployment_detail-768x324.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_deployment_detail.png 1378w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Once updated, restart the deployment from the same <em><strong>Home</strong></em> tab where you restarted the Service Manager earlier.</p>



<p class="wp-block-paragraph">Once all your deployments are running on the new home, you can restart the extracts, replicats and distribution paths. Connected to the <strong>Administration Service</strong> in the web UI, restart them one by one or using the <strong><em>Group Action</em></strong> button.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="156" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc-1024x156.png" alt="" class="wp-image-44788" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc-1024x156.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc-300x46.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc-768x117.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc-1536x233.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_patch_restart_proc.png 2014w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


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



<p class="wp-block-paragraph">If some <strong>services are still running</strong> on the old <code>OGG_HOME</code>, do not worry. The web UI or the REST API will return a response before restarting all services. More specifically, for the deployments, the restart will succeed as long as the Administration Service (<code>adminsrvr</code>) is restarted. The Receiver Service (<code>recvsrvr</code>) or the Distribution Service (<code>distsrvr</code>) might take more time to restart. Just <strong>wait a bit</strong> and it should be good. If, after a few minutes, the services are still running on the old home, <strong>restart them manually</strong> (still from the web UI).</p>



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



<p class="wp-block-paragraph">If you decide to change the name of your home at every release, remember to change the <code>OGG_HOME</code> in all scripts and environments. This might include:</p>



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



<li><code>systemd</code> service file, which might include the <code>OGG_HOME</code> variable.</li>
</ul>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/">GoldenGate 26ai out-of-place patching with the web UI</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/goldengate-26ai-out-of-place-patching-with-the-web-ui/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate : Regenerate NGINX Reverse Proxy After Deployment Changes</title>
		<link>https://www.dbi-services.com/blog/reconfigure-nginx-after-adding-a-goldengate-deployment/</link>
					<comments>https://www.dbi-services.com/blog/reconfigure-nginx-after-adding-a-goldengate-deployment/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 28 May 2026 15:50:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[21c]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[ogg-12031]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[reverse]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44851</guid>

					<description><![CDATA[<p>Configuring an NGINX reverse proxy for GoldenGate is well documented by Oracle, but what is not is the implication of adding or removing deployments. In fact, when modifying your GoldenGate deployments, you will have to reconfigure the NGINX reverse proxy. If you don&#8217;t, part of your installation will not be working anymore. This is what [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/reconfigure-nginx-after-adding-a-goldengate-deployment/">GoldenGate : Regenerate NGINX Reverse Proxy After Deployment Changes</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">Configuring an <strong>NGINX reverse proxy</strong> for <strong>GoldenGate</strong> is well <a href="https://docs.oracle.com/en/database/goldengate/core/26/coredoc/secure-configure-reverse-proxy-nginx-access-oggma.html#GUID-E492EF39-EA43-44D5-A096-BAE1ED8FC007" target="_blank" rel="noreferrer noopener">documented</a> by Oracle, but what is not is the implication of <strong>adding or removing deployments</strong>. In fact, when modifying your GoldenGate deployments, you will have to reconfigure the NGINX reverse proxy.</p>



<p class="wp-block-paragraph">If you don&#8217;t, part of your installation will not be working anymore. This is what will happen in the web UI:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="475" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_webui_nginx_multi_deploy-1024x475.png" alt="" class="wp-image-44852" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_webui_nginx_multi_deploy-1024x475.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_webui_nginx_multi_deploy-300x139.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_webui_nginx_multi_deploy-768x356.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_webui_nginx_multi_deploy.png 1228w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In the <code>adminclient</code>, you will receive an <code>OGG-12031</code> error when connecting to the deployment, with the same error : &#8220;<em>The requested resource does not exist</em>&#8220;.</p>



<pre class="wp-block-code"><code>OGG (not connected) &gt; connect https://vmogg deployment ogg_test_02 user ogg
Password for 'ogg' at 'https://vmogg':

2026-05-28T12:42:54Z  ERROR   OGG-12031  The requested resource does not exist.</code></pre>



<p class="wp-block-paragraph">And the same error will happen when calling the REST API of your new deployment:</p>



<pre class="wp-block-code"><code>RuntimeError: ERROR (code 404) - https://vmogg/services/ogg_test_02/adminsrvr/v2/extracts: The requested resource does not exist.</code></pre>



<p class="wp-block-paragraph">The <strong>NGINX configuration</strong> generated by GoldenGate is <strong>static</strong>. Indeed, the file located in the <code>/etc/nginx/conf.d</code> directory contains deployment-specific routes generated from the GoldenGate setup at the time of execution. You can verify this by searching for an existing deployment name in the configuration:</p>



<pre class="wp-block-code"><code>&gt; grep ogg_test_01 /etc/nginx/conf.d/ogg.conf | wc -l
187</code></pre>



<p class="wp-block-paragraph">Since the deployment name is an integral part of the API calls, and given that the configuration is not dynamic, after <strong>adding or removing a deployment</strong>, you will have to <strong>regenerate the configuration file</strong>.</p>



<h2 class="wp-block-heading" id="h-reconfiguring-nginx-reverse-proxy">Reconfiguring NGINX reverse proxy</h2>



<p class="wp-block-paragraph">You can regenerate the configuration with the <code>ReverseProxySettings</code> utility in the <code>$OGG_HOME/lib/utl/reverseproxy</code> directory. With the <code>oracle</code> user:</p>



<pre class="wp-block-code"><code>$OGG_HOME/lib/utl/reverseproxy/ReverseProxySettings --user ogg --port 443 --output /home/oracle/ogg.conf http://localhost:7809</code></pre>



<p class="wp-block-paragraph">Make sure to adapt the GoldenGate username and the port to the Service Manager (<code>7809</code> is the default). If GoldenGate is accessed through a VIP (in a RAC setup, for instance), add the <code>--host</code> parameter:</p>



<pre class="wp-block-code"><code>$OGG_HOME/lib/utl/reverseproxy/ReverseProxySettings --user ogg --port 443 --output /home/oracle/ogg.conf http://localhost:7809 --host ogg-vip</code></pre>



<p class="wp-block-paragraph">Once the new configuration is available, as <code>root</code>, edit the new file to <strong>include SSL parameters</strong>. If you don&#8217;t do this, <strong>NGINX will fail to restart</strong>, and your whole GoldenGate installation will not be accessible anymore.</p>



<pre class="wp-block-code"><code>&gt; grep ssl_certificate /etc/nginx/conf.d/ogg.conf
    ssl_certificate         /etc/nginx/ssl/ogg.pem;
    ssl_certificate_key     /etc/nginx/ssl/ogg.key;</code></pre>



<p class="wp-block-paragraph">For these parameters, just reuse the ones you already had in your current configuration. With the <code>root</code> user, replace the old configuration with the new one.</p>



<pre class="wp-block-code"><code>cd /etc/nginx/conf.d/
mv ogg.conf ogg.conf_old
mv /home/oracle/ogg.conf .
chown root:root ogg.conf</code></pre>



<p class="wp-block-paragraph">Before restarting NGINX, <strong>test the configuration</strong>:</p>



<pre class="wp-block-code"><code>&gt; nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful</code></pre>



<p class="wp-block-paragraph">Finally, <strong>restart NGINX</strong> to apply the new configuration.</p>



<pre class="wp-block-code"><code>systemctl restart nginx</code></pre>



<p class="wp-block-paragraph">After restarting NGINX, the <strong>new deployment becomes accessible</strong> from the web UI, the <code>adminclient</code> and the REST API.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/reconfigure-nginx-after-adding-a-goldengate-deployment/">GoldenGate : Regenerate NGINX Reverse Proxy After Deployment Changes</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/reconfigure-nginx-after-adding-a-goldengate-deployment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OGG-08502 Path not found error from OGG Receiver Service</title>
		<link>https://www.dbi-services.com/blog/ogg-08502-path-not-found-error-from-ogg-receiver-service/</link>
					<comments>https://www.dbi-services.com/blog/ogg-08502-path-not-found-error-from-ogg-receiver-service/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 21 May 2026 06:39:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[OEM]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[ogg-08502]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[path not found]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[receiver]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44707</guid>

					<description><![CDATA[<p>Update: this bug seems to be corrected with the latest GoldenGate patch (23.26.2.0.1). If you face this error, try to patch your GoldenGate deployments. Recently, after a successful migration to GoldenGate 26ai, a customer complained that he was seeing a lot of the following error in the ggserr.log file of a GoldenGate deployment (I replaced [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ogg-08502-path-not-found-error-from-ogg-receiver-service/">OGG-08502 Path not found error from OGG Receiver Service</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"><strong><em>Update:</em></strong> this bug seems to be <strong>corrected</strong> with the latest GoldenGate patch (<code>23.26.2.0.1</code>). If you face this error, try to patch your GoldenGate deployments.</p>



<p class="wp-block-paragraph">Recently, after a successful <strong>migration to GoldenGate 26ai</strong>, a customer complained that he was seeing a lot of the following <strong>error</strong> in the <code>ggserr.log</code> file of a GoldenGate deployment (I replaced the names for the purpose of this blog).</p>



<pre class="wp-block-code"><code>2026-05-18T14:32:35.948+0200  ERROR   OGG-08502. Oracle GoldenGate Receiver Service for Oracle:   Path path21 not found.</code></pre>



<p class="wp-block-paragraph">More precisely, in that case, <code>path21</code> is a distribution path sending trail files from deployment <code>ogg_test_02</code> to <code>ogg_test_01</code>. And the error shown above appeared in the log file of the <code>ogg_test_01</code> deployment.</p>



<p class="wp-block-paragraph">While this error did not seem to indicate any operational issue in the replication, after checking on multiple environments, I confirmed that it appears everywhere. So what is happening exactly ?</p>



<p class="wp-block-paragraph">If you get this error and do not know where it comes from, <strong>log in to the web UI</strong> of the affected deployment, and go to the <strong><em>Receiver Service Paths</em></strong> tab. You should see a <strong>list of the distribution paths that are connecting to your deployments</strong>. The example below shows the <code>path21</code> that is mentioned in the error.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="425" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-1024x425.png" alt="" class="wp-image-44708" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-1024x425.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-300x124.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-768x319.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-1536x637.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_ogg08502_bug_webui-2048x850.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-how-to-reproduce-the-error"><strong>How to reproduce the error ?</strong></h2>



<p class="wp-block-paragraph">If you click on this path&#8230; Nothing happens ! And by &#8220;nothing&#8221;, I mean &#8220;nothing abnormal&#8221;. In fact, the statistics are properly displayed (see below), and there is <strong>no error shown</strong> to the user. However, if you look at your <code>ggserr.log</code> file you will see that <strong>the error given above appears</strong>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="461" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-1024x461.png" alt="" class="wp-image-44709" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-1024x461.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-300x135.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-768x346.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-1536x692.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/Screenshot-2026-05-18-at-14.51.01-2048x923.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">At first glance, this might not seem like a huge issue, because if you don&#8217;t click on the receiver path, you will not get the error. However, in the log file of the customer, <strong>the error appeared regularly</strong>. Every minute, to be precise.</p>



<h2 class="wp-block-heading" id="h-why-do-i-get-this-error-even-when-i-m-not-accessing-the-web-ui"><strong>Why do I get this error even when I&#8217;m not accessing the web UI ?</strong></h2>



<p class="wp-block-paragraph">Luckily, when debugging this issue, I started by putting the target in a <strong>blackout in the Oracle Enterprise Manager</strong>. To my surprise, the <strong>error was gone</strong> during the blackout and reappeared right after.</p>



<p class="wp-block-paragraph">In this case, the <strong><a href="https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/" target="_blank" rel="noreferrer noopener">Enterprise Manager Plug-in for Oracle GoldenGate</a></strong> is monitoring the status of the deployment every minute and <strong>generates the error</strong> in the process.</p>



<p class="wp-block-paragraph">When looking at the targets in the OEM, there is no error. Again, <strong>no operational impact</strong>.</p>



<h2 class="wp-block-heading" id="h-does-it-depend-on-the-way-you-create-the-distribution-path"><strong>Does it depend on the way you create the distribution path ?</strong></h2>



<p class="wp-block-paragraph">GoldenGate offers multiple ways of managing deployments : REST API, <code>adminclient</code>, or the web UI. Unfortunately, some bugs (and some features&#8230;) mean that you should avoid managing some objects with some of these tools (read <a href="https://www.dbi-services.com/blog/overcome-goldengate-26ai-bug-on-custom-profiles/" target="_blank" rel="noreferrer noopener">why you shouldn&#8217;t create profiles through the <code>adminclient</code></a>, for instance).</p>



<p class="wp-block-paragraph">In this specific case, <strong>all distribution path creation methods lead to the same error</strong> in the log file. It doesn&#8217;t matter whether you create the distribution path with the <code>adminclient</code>, the REST API or the web UI. They will all lead to this error.</p>



<h2 class="wp-block-heading" id="h-advanced-what-s-happening-exactly"><strong>Advanced &#8211; What&#8217;s happening exactly ?</strong></h2>



<p class="wp-block-paragraph">Let&#8217;s dig a bit to see what is happening behind the scenes. By looking at the <code>restapi.log</code> file (read my blog on <a href="https://www.dbi-services.com/blog/querying-goldengate-rest-api-log-efficiently/" target="_blank" rel="noreferrer noopener">how to analyze REST API logs efficiently</a>), we can see the full error:</p>



<pre class="wp-block-code"><code>2026-05-18 09:08:58.402+0000 ERROR|RestAPI.recvsrvr | Request #9: {
     "context": {
         "httpContextKey": 140097141801744,
         "verbId": 2,
         "verb": "GET",
         "originalVerb": "GET",
         "uri": "/services/v2/targets/path21",
         "protocol": "http",
         "headers": {
             ...
         },
         "host": "vmogg",
         "securityEnabled": false,
         "authorization": {
             "authUserName": "ogg",
             "authUserRole": "Security",
             "authMode": "Cookie"
         },
         "requestId": 8,
         "uriTemplate": "/services/{version}/targets/{path}",
         "catalogUriTemplate": "/services/{version}/metadata-catalog/path"
     },
     "isScaRequest": true,
     "content": null,
     "parameters": {
         "uri": {
             "path": "path21",
             "version": "v2"
         },
         "query": {
             "WindowRef": "%2Fservices%2Fv2%2Fcontent%2F%23%2FrecvsrvrPaths%2Fpath21%2FpathNetworkStats"
         }
     }
 }
 Response: {
     "context": {
         ...
     },
     "isScaResponse": true,
     "content": {
         "$schema": "api:standardResponse",
         "links": &#091;
             {
                 "rel": "canonical",
                 "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets/path21",
                 "mediaType": "application/json"
             },
             {
                 "rel": "self",
                 "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets/path21",
                 "mediaType": "application/json"
             }
         ],
         "messages": &#091;
             {
                 "$schema": "ogg:message",
                 "title": "Path path21 not found",
                 "code": "OGG-08502",
                 "severity": "ERROR",
                 "issued": "2026-05-18T09:08:58Z",
                 "type": "https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes"
             }
         ]
     }
 }</code></pre>



<p class="wp-block-paragraph">The issue comes from the following endpoint : <code>/services/v2/targets/path21</code>. It is described in the documentation under <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-targets-path-get.html" target="_blank" rel="noreferrer noopener">Retrieve an existing Oracle GoldenGate Collector Path</a>. But looking at another endpoint described in <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-targets-get.html" target="_blank" rel="noreferrer noopener">Get a list of distribution paths</a>, we get the following response:</p>



<pre class="wp-block-code"><code>{
    "$schema": "api:standardResponse",
    "links": &#091;
        {
            "rel": "canonical",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets",
            "mediaType": "text/html"
        },
        {
            "rel": "self",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets",
            "mediaType": "text/html"
        },
        {
            "rel": "describedby",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/metadata-catalog/targets",
            "mediaType": "application/schema+json"
        }
    ],
    "messages": &#091;],
    "response": {
        "$schema": "ogg:collection",
        "items": &#091;
            {
                "links": &#091;
                    {
                        "rel": "parent",
                        "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets",
                        "mediaType": "application/json"
                    },
                    {
                        "rel": "canonical",
                        "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets/path21_ogg26dist2_7811",
                        "mediaType": "application/json"
                    }
                ],
                "$schema": "ogg:collectionItem",
                "name": "path21",
                "status": "running",
                "targetInitiated": false
            }
        ]
    }
}</code></pre>



<p class="wp-block-paragraph">Here, we see that the endpoint associated with the <code>path21</code> object is not <code>recvsrvr/v2/targets/path21</code> but <code>recvsrvr/v2/targets/path21_ogg26dist2_7811</code>. And looking at this second endpoint, we do not get an error.</p>



<pre class="wp-block-code"><code>{
    "$schema": "api:standardResponse",
    "links": &#091;
        {
            "rel": "canonical",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets/path21_ogg26dist2_7811",
            "mediaType": "text/html"
        },
        {
            "rel": "self",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/targets/path21_ogg26dist2_7811",
            "mediaType": "text/html"
        },
        {
            "rel": "describedby",
            "href": "https://vmogg/services/ogg_test_01/recvsrvr/v2/metadata-catalog/path",
            "mediaType": "application/schema+json"
        }
    ],
    "messages": &#091;],
    "response": {
        "name": "path21",
        "status": "running",
        "$schema": "ogg:distPath",
        "source": {
            "uri": "trail://localhost:7811/services/v2/sources?trail=pdb2/bb"
        },
        "target": {
            "$schema": "ogg:distPathEndpoint",
            "uri": "ws://vmogg/services/v2/targets?trail=pdb2/bb"
        },
        "options": {
            "network": {
                "appOptions": {
                    "appFlushBytes": 27985,
                    "appFlushSecs": 1
                },
                "socketOptions": {
                    "tcpOptions": {
                        "ipDscp": "DEFAULT",
                        "ipTos": "DEFAULT",
                        "tcpNoDelay": false,
                        "tcpQuickAck": true,
                        "tcpCork": false,
                        "tcpSndBuf": 16384,
                        "tcpRcvBuf": 131072
                    }
                }
            }
        }
    }
}</code></pre>



<p class="wp-block-paragraph">The problem is that it was never decided for <code>path21</code> to be referred to as <code>path21_ogg26dist2_7811</code> internally. And it looks like GoldenGate does not know about it either&#8230; So until the bug is corrected, you will have to filter this <code>OGG-08502 Path not found</code> error out of the <code>ggserr.log</code> file if you use it for monitoring.</p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/ogg-08502-path-not-found-error-from-ogg-receiver-service/">OGG-08502 Path not found error from OGG Receiver Service</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/ogg-08502-path-not-found-error-from-ogg-receiver-service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Install and configure OEM plug-in for GoldenGate</title>
		<link>https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/</link>
					<comments>https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 18 May 2026 06:30:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[13c]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[24ai]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[enterprise manager]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[OEM]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[promote]]></category>
		<category><![CDATA[target]]></category>
		<category><![CDATA[update]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44473</guid>

					<description><![CDATA[<p>If you are licensed for the GoldenGate Management Pack, using the Enterprise Manager plug-in for GoldenGate improves monitoring and management of your deployments. And after migrating to the Microservices Architecture, you should definitely update your plug-in and rediscover all targets. Let&#8217;s see how to do all that here. In this blog, I will use the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/">Install and configure OEM plug-in for GoldenGate</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you are licensed for the GoldenGate Management Pack, using the Enterprise Manager plug-in for GoldenGate improves monitoring and management of your deployments. And after migrating to the Microservices Architecture, you should definitely update your plug-in and rediscover all targets. Let&#8217;s see how to do all that here.</p>



<p class="wp-block-paragraph">In this blog, I will use the latest version of the Enterprise Manager (24ai) and monitor GoldenGate 26ai deployments. The overall workflow is the same for other versions of the Enterprise Manager and GoldenGate, provided OGG is in the Microservices Architecture.</p>



<p class="wp-block-paragraph">Here are the main steps to monitor GoldenGate targets from the Enterprise Manager:</p>



<ul class="wp-block-list">
<li><strong>Update the catalog</strong> in the Enterprise Manager</li>



<li><strong>Deploy</strong> the plug-in on the <strong>management server</strong></li>



<li><strong>Deploy</strong> the plug-in on the <strong>agent</strong></li>



<li>Configure the <strong>discovery module</strong></li>



<li><strong>Promote the new targets</strong></li>
</ul>



<div class="wp-block-yoast-seo-table-of-contents yoast-table-of-contents"><h2>Table of contents</h2><ul><li><a href="#h-checking-if-the-plugin-is-already-installed" data-level="2">Checking if the plugin is already installed</a></li><li><a href="#h-update-the-enterprise-manager-catalog" data-level="2">Update the Enterprise Manager catalog</a></li><li><a href="#h-deploy-the-goldengate-plug-in-on-the-management-server" data-level="2">Deploy the GoldenGate plug-in on the Management Server</a></li><li><a href="#h-deploy-the-plug-in-on-the-agent" data-level="2">Deploy the plug-in on the agent</a></li><li><a href="#h-configure-goldengate-monitoring-in-the-enterprise-manager" data-level="2">Configure GoldenGate monitoring in the Enterprise Manager</a></li></ul></div>



<h2 class="wp-block-heading" id="h-checking-if-the-plugin-is-already-installed">Checking if the plugin is already installed</h2>



<p class="wp-block-paragraph">Before attempting to install the plug-in, make sure it is not already installed in your environment. To check this, go to <strong><em>Setup &gt; Extensibility &gt; Plug-ins</em></strong>, and expand the <em><strong>Middleware</strong></em> section. If you do not see any line named <em><strong>Oracle GoldenGate</strong></em>, it means the plug-in is not installed yet.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="592" height="491" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_noogg.png" alt="" class="wp-image-44477" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_noogg.png 592w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_noogg-300x249.png 300w" sizes="auto, (max-width: 592px) 100vw, 592px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-update-the-enterprise-manager-catalog">Update the Enterprise Manager catalog</h2>



<p class="wp-block-paragraph">Since most OEM environments do not have access to the Oracle Support directly, we&#8217;ll download the plug-in in offline mode. To do so, go to the <em><strong>Setup &gt; Provisioning and Patching &gt; Offline Patching</strong></em> section.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="324" height="1024" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_tab_access-324x1024.png" alt="" class="wp-image-44476" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_tab_access-324x1024.png 324w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_tab_access-95x300.png 95w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_tab_access.png 365w" sizes="auto, (max-width: 324px) 100vw, 324px" /></figure>
</div>


<p class="wp-block-paragraph">Once in the <strong><em>Offline Patching</em></strong> section, make sure <em><strong>Offline</strong></em> is selected for the connection and <strong><a href="https://updates.oracle.com/download/em_catalog.zip" target="_blank" rel="noreferrer noopener">download the catalog</a></strong> file as instructed from an environment with access to the Oracle support website. Transfer it to where you have access to the OEM UI, and <strong>upload it</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="423" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode-1024x423.png" alt="" class="wp-image-44478" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode-1024x423.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode-300x124.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode-768x317.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode.png 1240w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once the catalog is uploaded, you should see the following information message.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="404" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode_success-1024x404.png" alt="" class="wp-image-44479" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode_success-1024x404.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode_success-300x118.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode_success-768x303.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_offline_mode_success.png 1242w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Then, go to <em><strong>Setup &gt; Extensibility &gt; Self Update</strong></em> and click on <strong><em>Check Updates</em></strong>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="338" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-1024x338.png" alt="" class="wp-image-44483" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-1024x338.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-300x99.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-768x254.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-1536x507.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin-2048x676.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">You should see the following pop-up appear, with a link from where you will be able to download the OEM Self Update catalog file. For reference, the one I had when writing this blog was the following : <a href="https://updates.oracle.com/Orion/Download/download_patch/p9348486_112000_Generic.zip" target="_blank" rel="noreferrer noopener">https://updates.oracle.com/Orion/Download/download_patch/p9348486_112000_Generic.zip</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="332" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_oem_check_updates-1024x332.png" alt="" class="wp-image-44482" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_oem_check_updates-1024x332.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_oem_check_updates-300x97.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_oem_check_updates-768x249.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_oem_check_updates.png 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">As instructed, transfer this patch to the OMS host and <strong>import</strong> it with <code>emcli</code> and the <code>import_update_catalog</code> action. You can also import it from another managed host. It should take around twenty seconds to import everything.</p>



<pre class="wp-block-code"><code>oracle@oem24:~/ &#091;oem24] emcli import_update_catalog -file=/tmp/p9348486_112000_Generic.zip -omslocal
Processing catalog for Diagnostic Tools
Processing update: Diagnostic Tools - AHFFI 25.1.0.1.0 for Linux
Processing update: Diagnostic Tools - AHF 25.5.0.0.0 for HP

&#091;...]

Processing update: Plug-in - GoldenGate Plug-in now supports monitoring of Oracle GoldenGate Microservices, in addition to the Oracle GoldenGate Classic
Processing update: Plug-in - GoldenGate Plug-in now supports monitoring of Oracle GoldenGate Microservices, in addition to the Oracle GoldenGate Classic
Processing update: Plug-in - GoldenGate Plug-in now supports monitoring of Oracle GoldenGate Microservices, in addition to the Oracle GoldenGate Classic
Processing update: Plug-in - GoldenGate Plug-in now supports monitoring of GoldenGate Microservices Architecture, in addition to the GoldenGate Classic Architecture

&#091;...]

Successfully uploaded the Self Update catalog to Enterprise Manager. Use the Self Update Console to view and manage updates.
Time taken for import catalog is 17.289 seconds.</code></pre>



<h4 class="wp-block-heading" id="h-download-goldengate-plug-in">Download GoldenGate plug-in</h4>



<p class="wp-block-paragraph">When this is done, go back to the <em><strong>Self Update</strong></em> page, click on the <strong><em>Plug-In</em></strong> section. You will see the different versions of GoldenGate that are available. When I&#8217;m writing this blog, the latest version of the plug-in is <code>13.5.2.0.0</code> (the latest patch released in January 2026, <code>13.5.2.0.6</code>, will be a topic for another blog). Click on the latest version and then on <em><strong>Download</strong></em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="339" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version-1024x339.png" alt="" class="wp-image-44484" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version-1024x339.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version-300x99.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version-768x254.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version-1536x508.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_plugin_ogg_version.png 1638w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The following pop-up gives you the link from which you should download the plug-in update file. In my case, it was <a href="https://updates.oracle.com/Orion/Services/download/p34651099_112000_Generic.zip?aru=24962501&amp;patch_file=p34651099_112000_Generic.zip" target="_blank" rel="noreferrer noopener">https://updates.oracle.com/Orion/Services/download/p34651099_112000_Generic.zip?aru=24962501&amp;patch_file=p34651099_112000_Generic.zip</a>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="352" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download-1024x352.png" alt="" class="wp-image-44485" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download-1024x352.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download-300x103.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download-768x264.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download-1536x528.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_self_update_offline_download.png 1680w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once the file is downloaded, import it in the same way as before with the catalog, but this time with the <code>emcli import_update</code> action.</p>



<pre class="wp-block-code"><code>oracle@oem24:~/ &#091;oem24] emcli import_update -omslocal -file=/tmp/p34651099_112000_Generic.zip
Processing update: Plug-in - GoldenGate Plug-in now supports monitoring of Oracle GoldenGate Microservices, in addition to the Oracle GoldenGate Classic
Successfully uploaded the update to Enterprise Manager. Use the Self Update Console to manage this update.</code></pre>



<p class="wp-block-paragraph">Once this is done, go back to the <em><strong>Setup &gt; Extensibility &gt; Plug-in</strong></em> tab and expand the <strong><em>Middleware</em></strong> section. You should now see <em><strong>Oracle GoldenGate</strong></em>, and <code>13.5.2.0.0</code> as the downloaded version.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="393" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_downloaded-1024x393.png" alt="" class="wp-image-44486" style="width:600px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_downloaded-1024x393.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_downloaded-300x115.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_downloaded-768x294.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_downloaded.png 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-deploy-the-goldengate-plug-in-on-the-management-server">Deploy the GoldenGate plug-in on the Management Server</h2>



<p class="wp-block-paragraph"><strong>Warning</strong> : Deploying the plug-in on the management server will <strong>temporarily restart</strong> OMS components and briefly <strong>interrupt monitoring</strong> operations. To deploy the plug-in, you have two options:</p>



<ul class="wp-block-list">
<li>Deploying the plug-in from the web UI.</li>



<li>Deploying the plug-in from the CLI.</li>
</ul>



<h4 class="wp-block-heading" id="h-deploying-the-plug-in-from-the-web-ui">Deploying the plug-in from the web UI</h4>



<p class="wp-block-paragraph">From the web UI, click on the <strong><em>Oracle GoldenGate</em></strong> plug-in, then on <strong><em>Deploy On</em></strong>, and deploy the plug-in on the <em><strong>Management Servers</strong></em>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="928" height="540" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms.png" alt="" class="wp-image-44487" style="width:600px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms.png 928w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms-300x175.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms-768x447.png 768w" sizes="auto, (max-width: 928px) 100vw, 928px" /></figure>
</div>


<p class="wp-block-paragraph">Make sure the correct version of the plug-in is chosen (<code>13.5.2.0.0</code>), and click on <strong><em>Next</em></strong> to run the prerequisite checks.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="176" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-1024x176.png" alt="" class="wp-image-44488" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-1024x176.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-300x52.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-768x132.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-1536x265.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_2-2048x353.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once the checks are successfully completed, click on <em><strong>Next</strong></em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="184" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-1024x184.png" alt="" class="wp-image-44490" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-1024x184.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-300x54.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-768x138.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-1536x276.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_prereq_2-2048x368.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">You should now <strong><em>select the repository credentials</em></strong> for the OEM. You should either use new credentials (if it&#8217;s a new environment) or use existing named credentials. Click on <em><strong>Next</strong></em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="335" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-1024x335.png" alt="" class="wp-image-44492" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-1024x335.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-300x98.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-768x251.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-1536x503.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_repo_sys_true-2048x670.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once everything is done, click on <strong><em>Deploy</em></strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="299" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-1024x299.png" alt="" class="wp-image-44662" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-1024x299.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-300x88.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-768x225.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-1536x449.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_review-1-2048x599.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">As instructed, you can check the status of the deployment with the <code>emctl status oms -details</code> command.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="158" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-1024x158.png" alt="" class="wp-image-44494" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-1024x158.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-300x46.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-768x119.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-1536x237.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_confirmation-2048x316.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<pre class="wp-block-code"><code>oracle@oem24:~/ &#091;oem24] emctl status oms
Oracle Enterprise Manager 24ai Release 1
Copyright (c) 1996, 2024 Oracle Corporation.  All rights reserved.
WebTier is Up
Oracle Management Server is Down

This is due to the following plug-ins being deployed on the management server or undeployed from it:
----------------------------------------
Plugin name:    : Oracle GoldenGate
Version:        : 13.5.2.0.0
ID:             : oracle.fmw.gg
----------------------------------------</code></pre>



<h4 class="wp-block-heading" id="h-deploying-the-plug-in-from-the-cli">Deploying the plug-in from the CLI</h4>



<p class="wp-block-paragraph">Alternatively, you can deploy the plug-in with the following command, using the <code>oracle.fmw.gg</code> ID for the plug-in and the latest <code>13.5.2.0.0</code> version.</p>



<pre class="wp-block-code"><code>emcli deploy_plugin_on_server -plugin="oracle.fmw.gg:13.5.2.0.0"</code></pre>



<p class="wp-block-paragraph">Once the plug-in is <strong>deployed on the Management Server</strong>, you can check again in the web UI : the latest version should be in the <code>On Management Server</code> section.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="413" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_postdeploy-1024x413.png" alt="" class="wp-image-44495" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_postdeploy-1024x413.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_postdeploy-300x121.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_postdeploy-768x310.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ms_postdeploy.png 1338w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-deploy-the-plug-in-on-the-agent">Deploy the plug-in on the agent</h2>



<p class="wp-block-paragraph">For each GoldenGate host where an OEM agent is running, deploy the plug-in. To do so, from the web UI, click on the <strong><em>Oracle GoldenGate</em></strong> plug-in, then on <em><strong>Deploy On</strong></em>, and select <em><strong>Management Agent</strong></em>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="691" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag-1024x691.png" alt="" class="wp-image-44618" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag-1024x691.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag-300x202.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag-768x518.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag.png 1150w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">There is currently a bug with the <em><strong>Supported Target Versions</strong></em>. No matter your patch level, you will not see the latest versions of GoldenGate. Do not worry about this yet. Just make sure <code>13.5.2.0.0</code> is selected.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="890" height="804" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_versions.png" alt="" class="wp-image-44619" style="width:600px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_versions.png 890w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_versions-300x271.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_versions-768x694.png 768w" sizes="auto, (max-width: 890px) 100vw, 890px" /></figure>
</div>


<p class="wp-block-paragraph">Then, select the agent on which you want to deploy the plug-in.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="333" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1-1024x333.png" alt="" class="wp-image-44621" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1-1024x333.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1-300x98.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1-768x250.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1-1536x499.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_select-1.png 1630w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Let the prerequisite checks run&#8230;</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="667" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq-1024x667.png" alt="" class="wp-image-44622" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq-1024x667.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq-300x195.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq-768x500.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq-1536x1001.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_prereq.png 1630w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">And once everything is ready, click on <em><strong>Deploy</strong></em>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="669" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review-1024x669.png" alt="" class="wp-image-44623" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review-1024x669.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review-300x196.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review-768x502.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review-1536x1003.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_review.png 1626w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">You can check that everything is running properly with the <code>emcli get_plugin_deployment_status</code> command.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="200" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy-1024x200.png" alt="" class="wp-image-44624" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy-1024x200.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy-300x58.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy-768x150.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy-1536x299.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_deploy_ag_deploy.png 1632w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-configure-goldengate-monitoring-in-the-enterprise-manager">Configure GoldenGate monitoring in the Enterprise Manager</h2>



<p class="wp-block-paragraph">Once the plug-in is correctly deployed on the OMS host and on the GoldenGate host agent, you can configure the module. I will only cover the configuration for the Microservices Architecture. Go to the <strong><em>Setup &gt; Add Target &gt; Configure Auto Discovery</em></strong> tab.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="682" height="890" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_configure_auto_discovery_tab.png" alt="" class="wp-image-44630" style="width:400px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_configure_auto_discovery_tab.png 682w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_configure_auto_discovery_tab-230x300.png 230w" sizes="auto, (max-width: 682px) 100vw, 682px" /></figure>
</div>


<p class="wp-block-paragraph">Choose the correct agent host, and click on <em><strong>Discovery Modules</strong></em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="402" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1-1024x402.png" alt="" class="wp-image-44631" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1-1024x402.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1-300x118.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1-768x301.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1-1536x603.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_setup_discovery-1.png 1610w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Enable the <em><strong>Oracle GoldenGate Microservices</strong></em> module, click on it, and then on <em><strong>Edit Parameters</strong></em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="430" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-1024x430.png" alt="" class="wp-image-44632" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-1024x430.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-300x126.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-768x322.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-1536x645.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_discovery_modules-1-2048x859.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">If you deployed GoldenGate with a reverse proxy, <strong>set up the plug-in as such</strong>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="904" height="221" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_blog_setup_discovery_module_oem-1.png" alt="" class="wp-image-44633" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_blog_setup_discovery_module_oem-1.png 904w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_blog_setup_discovery_module_oem-1-300x73.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/ogg_blog_setup_discovery_module_oem-1-768x188.png 768w" sizes="auto, (max-width: 904px) 100vw, 904px" /></figure>
</div>


<p class="wp-block-paragraph">If you deployed GoldenGate with a port for each service, enter the <strong>service manager port</strong> (<code>7809</code>, by default).</p>



<p class="wp-block-paragraph"><strong>Warning</strong> : if your installation is <strong>secured with certificates</strong>, make sure to <strong>follow the instructions</strong> I gave in a blog to <a href="https://www.dbi-services.com/blog/em-90000-ssl-error-with-goldengate-targets-in-oem/" target="_blank" rel="noreferrer noopener">avoid EM-90000 errors when discovering new targets</a>.</p>



<p class="wp-block-paragraph">Once this is done, just go back to the <em><strong>Configure Auto Discovery</strong></em> section, click on the correct host, and then click on <em><strong>Discover Now</strong></em>. Then, go back to the <em><strong>Configure Auto Discovery</strong></em> section. You should now see a greater number of targets in the <em><strong>Discovered targets</strong></em> section.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="177" height="137" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_discovered_targets.png" alt="" class="wp-image-44635" /></figure>
</div>


<p class="wp-block-paragraph">If the number of targets did not increase, despite a successful discovery, check the blog linked above.</p>



<p class="wp-block-paragraph">Click on the number of targets to jump to the <em><strong>Auto Discovery Results</strong></em> section. Select the newly discovered Service Manager target, and click on <em><strong>Promote</strong></em>. Once the target is promoted, you should see the new GoldenGate targets being monitored by the Enterprise Manager !</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="813" height="159" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_targets_final.png" alt="" class="wp-image-44634" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_targets_final.png 813w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_targets_final-300x59.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/oem_ogg_plugin_targets_final-768x150.png 768w" sizes="auto, (max-width: 813px) 100vw, 813px" /></figure>
</div><p>L’article <a href="https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/">Install and configure OEM plug-in for GoldenGate</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/install-and-configure-oem-plug-in-for-goldengate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Increase GoldenGate 26ai Log Retention</title>
		<link>https://www.dbi-services.com/blog/increase-goldengate-log-retention/</link>
					<comments>https://www.dbi-services.com/blog/increase-goldengate-log-retention/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Tue, 12 May 2026 06:20:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[26ai]]></category>
		<category><![CDATA[increase]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[retention]]></category>
		<category><![CDATA[size]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44355</guid>

					<description><![CDATA[<p>GoldenGate logs are a powerful source of information when debugging or analyzing your deployments. However, some of these logs have a rather low retention period in active deployments. They might then not even be useful for debugging if you send them to your dbi consultants or the Oracle support for analysis. So how can you [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/increase-goldengate-log-retention/">Increase GoldenGate 26ai Log Retention</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"><strong>GoldenGate logs</strong> are a powerful <strong>source of information</strong> when debugging or analyzing your deployments. However, some of these logs have a rather <strong>low retention</strong> period in active deployments. They might then not even be useful for debugging if you send them to your dbi consultants or the Oracle support for analysis. So <strong>how can you increase GoldenGate log retention</strong> ?</p>



<p class="wp-block-paragraph">In a previous blog, I presented all the <a href="https://www.dbi-services.com/blog/goldengate-26ai-logs-explained/" target="_blank" rel="noreferrer noopener">log files available in GoldenGate</a>. Each of them has its <strong>own format and characteristics</strong>, but they have one common aspect: they can be customized.</p>



<p class="wp-block-paragraph">Standard <strong>GoldenGate logging configuration files</strong> are located in the <code>$OGG_HOME/lib/utl/logging</code> directory.</p>



<pre class="wp-block-code"><code>&gt; ll $OGG_HOME/lib/utl/logging
-rw-r-----. 1 oracle oinstall  1066 Nov 17  2018 app-adminsrvr-debug.xml
-rw-r-----. 1 oracle oinstall  1076 Jan 10  2019 app-adminsrvr-events.xml
-rw-r-----. 1 oracle oinstall  1066 Nov 17  2018 app-distsrvr-debug.xml
-rw-r-----. 1 oracle oinstall  1040 Apr 17  2017 app-extract-events.xml
-rw-r-----. 1 oracle oinstall  1066 Nov 17  2018 app-pmsrvr-debug.xml
-rw-r-----. 1 oracle oinstall  1397 Apr  1  2018 app-pmsrvr-default.xml
-rw-r-----. 1 oracle oinstall  1066 Nov 17  2018 app-recvsrvr-debug.xml
-rw-r-----. 1 oracle oinstall  1048 Jan 22  2020 app-replicat-debug509.xml
-rw-r-----. 1 oracle oinstall  1040 Apr 17  2017 app-replicat-events.xml
-rw-r-----. 1 oracle oinstall  1066 Nov 17  2018 app-ServiceManager-debug.xml
-rw-r-----. 1 oracle oinstall  2459 Jan 17  2024 app-ServiceManager-services.xml
-rw-r-----. 1 oracle oinstall  1282 Dec 19 18:44 ogg-AIService.xml
-rw-r-----. 1 oracle oinstall  4946 May 14  2020 ogg-audit.xml
-rw-r-----. 1 oracle oinstall  1582 Jun 28  2023 ogg-ConfigService.xml
-rw-r-----. 1 oracle oinstall  4487 Jan 10  2019 ogg-ggserr.xml
-rw-r-----. 1 oracle oinstall 18162 Jun 26  2020 ogg-loggers.json
-rw-r-----. 1 oracle oinstall  1095 Sep 25  2019 ogg-loggers.xml
-rw-r-----. 1 oracle oinstall  2180 Sep 11  2024 sca-default.xml
-rw-r-----. 1 oracle oinstall  1211 Jan 10  2019 sca-restapi.xml
-rw-r-----. 1 oracle oinstall  1210 Jun  6  2022 sca-stdout.xml</code></pre>



<p class="wp-block-paragraph">The process to modify logging properties of any GoldenGate log file is to <strong>copy one of these files in your deployment and update it</strong>. It means that you can have <strong>different logging properties between your deployments</strong>.</p>



<p class="wp-block-paragraph"><strong>Oracle GoldenGate Microservices</strong> uses a hierarchical logger framework with Log4j-style appenders, layouts, logger inheritance, and category namespaces. I will not dwell on all the configuration files in this blog, but let&#8217;s try to describe the most useful ones.</p>



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



<pre class="wp-block-code"><code>&lt;?xml version="1.0"?&gt;
&lt;configuration&gt;

  &lt;!--
   /- ============================================================= -\
   !-   s c a - r e s t a p i . x m l                               -|
   !-                                                               -|
   !-   Logging control file for recording all REST API calls       -|
   !-   to an OGG deployment.                                       -|
   \- ============================================================= -/
  ! --&gt;

  &lt;appender  name="sca-restapi.log"  class="RollingFileAppender"&gt;
    &lt;level  value="info"/&gt;
    &lt;param   name="File"             value="restapi.log"/&gt;
    &lt;param   name="MaxFileSize"      value="10MB"/&gt;
    &lt;param   name="MaxBackupIndex"   value="9"/&gt;
    &lt;param   name="BufferedIO"       value="false"/&gt;
    &lt;param   name="Append"           value="true"/&gt;
    &lt;layout class="PatternLayout"&gt;
      &lt;param name="Pattern"          value="%d{%Y-%m-%d %H:%M:%S%z} %-5p|%-36.36c| %m%n"/&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;

  &lt;!--
   !-   M i c r o s e r v i c e s   A r c h i t e c t u r e
  ! --&gt;
  &lt;logger          name="RestAPI"&gt;
    &lt;appender-ref  name="sca-restapi.log"/&gt;
    &lt;level        value="info"/&gt;
  &lt;/logger&gt;

&lt;/configuration&gt;</code></pre>



<p class="wp-block-paragraph">The <code>sca-restapi.xml</code> file is the logging configuration file for the <code>restapi.log</code> file.</p>



<p class="wp-block-paragraph">REST API logs are the <strong>most verbose</strong> across all GoldenGate log files. In <strong>production environments</strong> where the REST API is often called, you could easily go over the <strong>10 log files in a day</strong> or even less. If you have enough space, I would strongly <strong>recommend increasing the retention</strong> and/or the <strong>maximum size</strong> of a single log file. This way, you ensure that you keep enough logs for debugging and analysis.</p>



<p class="wp-block-paragraph">To modify the retention, change <code>MaxFileSize</code> to set the maximum log file size and <code>MaxBackupIndex</code> to choose the number of files you want to keep (on top of the active log file).</p>



<p class="wp-block-paragraph">Let&#8217;s copy the file in the deployment home (it could be any deployment, including the Service Manager home).</p>



<pre class="wp-block-code"><code>cd $OGG_DEPLOYMENT_HOME/etc/conf/logging
cp -p $OGG_HOME/lib/utl/logging/sca-restapi.xml .
vim sca-restapi.xml</code></pre>



<p class="wp-block-paragraph">For instance, to have <strong>5 files of 50 MB</strong> each, edit the following lines:</p>



<pre class="wp-block-code"><code>    &lt;param&nbsp;&nbsp; name="MaxFileSize"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="50MB"/&gt;
&nbsp;&nbsp;&nbsp; &lt;param&nbsp;&nbsp; name="MaxBackupIndex"&nbsp;&nbsp; value="4"/&gt;</code></pre>



<p class="wp-block-paragraph">Once this is done, just <strong>restart the administration service</strong>.</p>



<h2 class="wp-block-heading" id="h-what-about-the-other-log-files">What about the other log files ?</h2>



<p class="wp-block-paragraph">If you want to increase the retention or the log file size of any other log file in GoldenGate, just use the following mapping and repeat the same process. If you want to edit the Service Manager logging properties, you should also restart it.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>If you want to modify the log retention for&#8230;</th><th>Copy and modify the following file from <code>$OGG_HOME/lib/utl/logging</code></th></tr></thead><tbody><tr><td>Most standard microservice logs, except <code>restapi.log</code> and <code>ER-events.log</code></td><td><code>sca-default.xml</code></td></tr><tr><td><code>ggserr.log</code></td><td><code>ogg-ggserr.xml</code></td></tr><tr><td><code>ER-events.log</code></td><td><code>app-extract-events.xml</code></td></tr><tr><td><code>restapi.log</code></td><td><code>sca-restapi.xml</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Warning:</strong> If you want to use the same configuration across all your deployments, you could modify the standard files in <code>$OGG_HOME/lib/utl/logging</code> and create links from the deployments to this file. However, make sure you do not lose these changes when patching out-of-place !</p>



<h2 class="wp-block-heading" id="h-can-i-increase-the-retention-to-more-than-10-files">Can I increase the retention to more than 10 files ?</h2>



<p class="wp-block-paragraph">Yes, there is no problem having more than 10 log files. Just increase the <code>MaxBackupIndex</code> (9, by default) to the number of log files you want, minus 1. For 20 log files, set <code>MaxBackupIndex</code> to <code>19</code>.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/increase-goldengate-log-retention/">Increase GoldenGate 26ai Log Retention</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/increase-goldengate-log-retention/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deployment removal failed in GoldenGate Configuration Assistant (INS-85038)</title>
		<link>https://www.dbi-services.com/blog/deployment-removal-failed-in-goldengate-configuration-assistant-ins-85038/</link>
					<comments>https://www.dbi-services.com/blog/deployment-removal-failed-in-goldengate-configuration-assistant-ins-85038/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Thu, 07 May 2026 06:55:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[ins-85038]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[oggca]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[restapi]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44155</guid>

					<description><![CDATA[<p>Recently, I wrote about deleting a GoldenGate deployment with the REST API, and when investigating this issue, I remembered a limitation of the configuration assistant, which I wanted to talk about. For more information about deployment removal with the configuration assistant, you can read a blog I wrote on the topic (for 23ai, but nothing [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/deployment-removal-failed-in-goldengate-configuration-assistant-ins-85038/">Deployment removal failed in GoldenGate Configuration Assistant (INS-85038)</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">Recently, I wrote about <a href="https://www.dbi-services.com/blog/delete-a-goldengate-deployment-when-the-password-is-lost/" target="_blank" rel="noreferrer noopener">deleting a GoldenGate deployment with the REST API</a>, and when investigating this issue, I remembered a <strong>limitation of the configuration assistant</strong>, which I wanted to talk about. For more information about <strong>deployment removal with the configuration assistant</strong>, you can read a <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/" target="_blank" rel="noreferrer noopener">blog</a> I wrote on the topic (for 23ai, but nothing changed in that regard in 26ai).</p>



<p class="wp-block-paragraph">Let&#8217;s now talk about the <code>INS-85038</code> error, which is rather generic. You will definitely need more details to investigate, and this blog does not cover all possibilities. Still, I will try to give you solutions, including one that should work in most cases.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1010" height="262" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_deployment_removal_ins_85038.png" alt="" class="wp-image-44158" style="width:500px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_deployment_removal_ins_85038.png 1010w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_deployment_removal_ins_85038-300x78.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_deployment_removal_ins_85038-768x199.png 768w" sizes="auto, (max-width: 1010px) 100vw, 1010px" /></figure>
</div>


<p class="wp-block-paragraph">As a reminder, there are three steps when deleting a GoldenGate deployment with <code>oggca.sh</code> :</p>



<ul class="wp-block-list">
<li>Verify the deployment credentials</li>



<li>Stop the deployment services</li>



<li>Unregister the deployment in the Service Manager</li>
</ul>



<p class="wp-block-paragraph">In my case, the problem I noticed is that the configuration assistant waits for the deployment to be stopped. However, it fails after some time with the following error details:</p>



<pre class="wp-block-code"><code>Log of this session available at: /u01/app/oraInventory/logs/OGGCAConfigActions2026-04-22_12-51-46PM
Setup completed with overall status as Succeeded
Setup completed with overall status as Failed
Verification failed. Expected value: (NOT) 'running', actual value: 'running'
Verification (0) failed for property 'response/status'.
Verification failed for REST call to '/services/v2/deployments/ogg_test_blog'
Results for "Stop the deployment":
..."Retrieving the 'ogg_test_blog' deployment details.": SUCCEEDED
..."Stop the 'ogg_test_blog' deployment.": SUCCEEDED
..."Verify the 'ogg_test_blog' deployment is stopped": FAILED
(1) Errors ocurred when trying to stop deployment. Make sure Service Manager is running. Check Service Manager log files for more details.</code></pre>



<p class="wp-block-paragraph">However, when debugging this issue, I observed the following strange behavior. While the configuration assistant complains about the deployment being started, my deployment was stopped when checking its status a few seconds after.</p>



<p class="wp-block-paragraph">I decided to <a href="https://www.dbi-services.com/blog/querying-goldengate-rest-api-log-efficiently/" target="_blank" rel="noreferrer noopener">analyze the <code>restapi.log</code> file</a> of my deployment. What I discovered was that the configuration assistant was <strong>checking the status </strong>of the deployment<strong> every ten seconds for two minutes</strong>. After this period, it fails with the abovementioned error.</p>



<h2 class="wp-block-heading" id="h-what-to-do-after-an-ins-85038-error">What to do after an INS-85038 error ?</h2>



<p class="wp-block-paragraph">If you still want to delete this deployment, you have two options:</p>



<ul class="wp-block-list">
<li><strong>Deleting the deployment with the REST API</strong>, with the method described in <a href="https://www.dbi-services.com/blog/delete-a-goldengate-deployment-when-the-password-is-lost/" target="_blank" rel="noreferrer noopener">this blog</a>, using the <a href="https://docs.oracle.com/en/database/goldengate/core/26/oggra/op-services-version-deployments-deployment-delete.html" target="_blank" rel="noreferrer noopener">dedicated endpoint</a>.</li>



<li><strong>Restarting the deployment and re-running the configuration assistant</strong>. But this time, <strong>if you get the same error</strong> as before, remember to wait. Once the deployment is completely stopped, click on <strong><em>Skip</em></strong> in the configuration assistant. The assistant will follow with the next step, unregistering the deployment from the Service Manager.</li>
</ul>



<p class="wp-block-paragraph">To summarize, if you get an <code>INS-85038</code> error in the configuration assistant, try to remove the deployment with the REST API. But if the reason for this error is just a deployment that is not stopping soon enough, just use the <strong><em>Skip</em></strong> button to continue removing the deployment when it is finally stopped.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/deployment-removal-failed-in-goldengate-configuration-assistant-ins-85038/">Deployment removal failed in GoldenGate Configuration Assistant (INS-85038)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/deployment-removal-failed-in-goldengate-configuration-assistant-ins-85038/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>EM-90000 SSL Error With GoldenGate Targets in OEM</title>
		<link>https://www.dbi-services.com/blog/em-90000-ssl-error-with-goldengate-targets-in-oem/</link>
					<comments>https://www.dbi-services.com/blog/em-90000-ssl-error-with-goldengate-targets-in-oem/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 04 May 2026 06:12:00 +0000</pubDate>
				<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[discover]]></category>
		<category><![CDATA[em-90000]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[OEM]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[SSLHandshakeException]]></category>
		<category><![CDATA[target]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44131</guid>

					<description><![CDATA[<p>In this blog, I will explain what needs to be done when registering GoldenGate targets behind NGINX reverse proxy in the Enterprise Manager. More specifically, we will see how to avoid the EM-90000 error related to an SSLHandshakeException. If you are upgrading to GoldenGate 26ai and migrating from Classic to Microservices Architecture, you must re-discover [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/em-90000-ssl-error-with-goldengate-targets-in-oem/">EM-90000 SSL Error With GoldenGate Targets in OEM</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">In this blog, I will explain what needs to be done when <strong>registering GoldenGate targets behind NGINX reverse proxy in the Enterprise Manager</strong>. More specifically, we will see how to avoid the <code>EM-90000</code> error related to an <code>SSLHandshakeException</code>.</p>



<p class="wp-block-paragraph">If you are upgrading to GoldenGate 26ai and migrating from <a href="https://www.dbi-services.com/blog/upgrade-goldengate-from-classic-to-microservices-architecture-before-its-too-late/" target="_blank" rel="noreferrer noopener">Classic to Microservices Architecture</a>, you must re-<strong>discover GoldenGate targets in the Enterprise Manager</strong>. The discovery module settings vary from one setup to another, but for a GoldenGate deployment exposed via an NGINX reverse proxy, you should <strong>set up the discovery module</strong> with the following:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="904" height="221" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_setup_discovery_module_oem.png" alt="" class="wp-image-44132" style="width:800px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_setup_discovery_module_oem.png 904w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_setup_discovery_module_oem-300x73.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/ogg_blog_setup_discovery_module_oem-768x188.png 768w" sizes="auto, (max-width: 904px) 100vw, 904px" /></figure>
</div>


<p class="wp-block-paragraph">While this could be enough in some GoldenGate setups, it will <strong>fail if the certificate chain is not trusted by the OEM agent</strong>. In fact, if you run a discovery of your host with the settings mentioned above, no target will be discovered. This is especially tricky, since the Enterprise Manager will tell you &#8220;<em><strong>Discover Now &#8211; Completed Successfully</strong></em>&#8220;.</p>



<p class="wp-block-paragraph">Open the <code>ogg_so_logs.log.0</code> file in the <code>agent_inst/sysman/emd</code> directory of your target agent. You will see that the discovery has failed with the following error : <code>INFO: Exception occured when tried with SSL deployment. SSLHandshakeException</code>.</p>



<pre class="wp-block-code"><code>oracle@vmogg:~ &#091;emagent] vim ogg_so_logs.log.0
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery createDiscovery
INFO: Discovery : Discovering Oracle Goldengate Instances . Discovery parameters values are , Port=443, UserName=ogg, HostName=vmogg, OGG Mode=Microservices, EMStateDir=/u01/app/oracle/agent_24ai/agent_inst
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery createDiscovery
INFO: Discovery :Target name prefix =oggtest:
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery createDiscovery
INFO: agentTrustLocation:/u01/app/oracle/agent_24ai/agent_inst/sysman/config/montrust/AgentTrust.jks
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery getJSONDataFromUrl
INFO: Discovery : Invoking URL request :https://vmogg:443/services/v2/deployments
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery getJSONDataFromUrlForSSL
INFO: Trying to connect as a ssl connection https://vmogg:443/services/v2/deployments
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery getJSONDataFromUrlForSSL
INFO: SSLHandshakeException while getting response for URL:https://vmogg:443/services/v2/deployments . javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery getJSONDataFromUrl
INFO: Exception occured when tried with SSL deployment. SSLHandshakeException: Failed to connect to ssl Microservices . Retrying via non ssl microservices. Trying with http.
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery getJSONDataFromUrl
SEVERE: For the Url = http://vmogg:443/services/v2/deployments , HTTP/response error code = 307
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateMicroServicesDiscovery generateTargetsXML
SEVERE: Exception getting response from URL:https://vmogg:443/services/v2/deployments - com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery$GGDiscoveryException: Discovery failed : HTTP error code : 307 from URL:http://vmogg:443/services/v2/deployments
Apr 19, 2026 8:01:32 AM com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery main
SEVERE: Exception during Targets discovery: EM-90000 - Target Discovery failed. Internal Error. Please contact System Administrator. - com.oracle.sysman.goldengate.discovery.GoldenGateDiscovery$GGDiscoveryException: EM-90000 - Target Discovery failed. Internal Error. Please contact System Administrator.</code></pre>



<p class="wp-block-paragraph">The problem here is that <strong>the OEM agent does not trust the certificate chain</strong> being used in your GoldenGate installation. For the discovery (and the monitoring) to work, you need to <strong>register the certificates in the agent&#8217;s truststore</strong>.</p>



<h2 class="wp-block-heading" id="h-displaying-the-content-of-the-truststore">Displaying the content of the truststore</h2>



<p class="wp-block-paragraph">First, let&#8217;s have a look at the content of the agent&#8217;s truststore. To do so, use the <code>keytool</code> utility shipped with the agent. Here is an example of a default <code>AgentTrust.jks</code> content. When prompted for the keystore password, use the configured truststore password (<code>welcome</code>, by default).</p>



<pre class="wp-block-code"><code>oracle@vmogg:~ &#091;emagent] /u01/app/oracle/agent_24ai/agent_24.1.0.0.0/oracle_common/jdk/bin/keytool -list -keystore /u01/app/oracle/agent_24ai/agent_inst/sysman/config/montrust/AgentTrust.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 9 entries

verisignclass1pca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): 13:B8:4A:BA:EC:A3:DE:8C:71:9A:06:7D:E8:CF:18:5F:65:DC:19:E0:3E:BD:92:C2:0B:D3:8C:75:09:7B:E1:13
verisignclass3ca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): E7:68:56:34:EF:AC:F6:9A:CE:93:9A:6B:25:5B:7B:4F:AB:EF:42:93:5B:50:A2:65:AC:B5:CB:60:27:E4:4E:70
gtecybertrustglobalca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): A5:31:25:18:8D:21:10:AA:96:4B:02:C7:B7:C6:DA:32:03:17:08:94:E5:FB:71:FF:FB:66:67:D5:E6:81:0A:36
entrustsslca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): 62:F2:40:27:8C:56:4C:4D:D8:BF:7D:9D:4F:6F:36:6E:A8:94:D2:2F:5F:34:D9:89:A9:83:AC:EC:2F:FF:ED:50
entrust2048ca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): D1:C3:39:EA:27:84:EB:87:0F:93:4F:C5:63:4E:4A:A9:AD:55:05:01:64:01:F2:64:65:D3:7A:57:46:63:35:9F
verisignserverca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): 29:30:BD:09:A0:71:26:BD:C1:72:88:D4:F2:AD:84:64:5E:C9:48:60:79:07:A9:7B:5E:D0:B0:B0:58:79:EF:69
gtecybertrustca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): 52:7B:05:05:27:DF:52:9C:0F:7A:D0:0C:EF:1E:7B:A4:21:78:81:82:61:5C:32:6C:8B:6D:1A:20:61:A0:BD:7C
entrustgsslca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): 2F:2F:87:02:A6:ED:EC:B6:46:92:94:BC:A0:40:F6:3B:88:49:42:1F:CE:E1:C3:7D:1C:FB:EE:89:DC:CD:43:83
verisignclass2ca, Oct 20, 2009, trustedCertEntry,
Certificate fingerprint (SHA-256): BD:46:9F:F4:5F:AA:E7:C5:4C:CB:D6:9D:3F:3B:00:22:55:D9:B0:6B:10:B1:D0:FA:38:8B:F9:6B:91:8B:2C:E9

Warning:
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1000-bit RSA key which is considered a security risk and is disabled.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.
uses a 1024-bit RSA key which is considered a security risk. This key size will be disabled in a future update.</code></pre>



<h2 class="wp-block-heading" id="h-importing-the-certificate-in-the-truststore">Importing the certificate in the truststore</h2>



<p class="wp-block-paragraph">Let&#8217;s add the certificate in the agent&#8217;s truststore with the following command.</p>



<pre class="wp-block-code"><code>/u01/app/oracle/agent_24ai/agent_24.1.0.0.0/oracle_common/jdk/bin/keytool -importcert -alias ogg_capath -file /path/to/ogg_certs/RootCA_cert.pem -keystore /u01/app/oracle/agent_24ai/agent_inst/sysman/config/montrust/AgentTrust.jks</code></pre>



<p class="wp-block-paragraph">If you are not sure which file you should add, keep in mind that it should be the same file you are using in the <code>OGG_CLIENT_TLS_CAPATH</code> environment variable when loading the GoldenGate environment and connecting to your deployments with the <code>adminclient</code>.</p>



<pre class="wp-block-code"><code>oracle@vmogg:~ &#091;emagent] export OGG_CLIENT_TLS_CAPATH=/path/to/ogg_certs/RootCA_cert.pem
oracle@vmogg:~ &#091;emagent] /u01/app/oracle/agent_24ai/agent_24.1.0.0.0/oracle_common/jdk/bin/keytool -importcert -alias ogg_capath -file $OGG_CLIENT_TLS_CAPATH -keystore /u01/app/oracle/agent_24ai/agent_inst/sysman/config/montrust/AgentTrust.jks
Enter keystore password:
Owner: CN=OGG RootCA, O=OGG ROOT CA, C=AU
Issuer: CN=OGG RootCA, O=OGG ROOT CA, C=AU
Serial number: 1a11d06e7d73700aa85e35ffc0ce4a27dcfdaf7d
Valid from: Fri Mar 21 15:22:22 GMT 2026 until: Mon Mar 18 15:22:22 GMT 2036
Certificate fingerprints:
SHA1: 3C:99:5B:3A:D9:A4:64:6D:23:F0:0A:48:16:FA:AF:85:BD:26:E3:C7
SHA256: 8D:6F:1D:67:ED:D9:7B:C0:C8:0E:D1:0E:50:2F:15:25:45:5D:F2:1D:A2:AB:22:C7:2D:AE:05:19:F1:DE:28:31
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3

Extensions:

#1: ObjectId: 2.5.29.35 Criticality=false

AuthorityKeyIdentifier &#091;
KeyIdentifier &#091;
0000: E3 BC BD 71 43 FD 85 B0 48 E1 44 A1 81 04 FA A9 …qC…H.D…..
0010: 1D 1C 45 16 ..E.
]
]

#2: ObjectId: 2.5.29.19 Criticality=true

BasicConstraints:&#091;
CA:true
PathLen:2147483647
]

#3: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier &#091;
KeyIdentifier &#091;
0000: E3 BC BD 71 43 FD 85 B0 48 E1 44 A1 81 04 FA A9 …qC…H.D…..
0010: 1D 1C 45 16 ..E.
]
]

Trust this certificate? &#091;no]: yes
Certificate was added to keystore</code></pre>



<p class="wp-block-paragraph">If you check the content of the keystore again, you will see the new entry under the alias you just added. We will use the <code>-alias ogg_capath</code> option to only display the new alias.</p>



<pre class="wp-block-code"><code>oracle@vmogg:~ &#091;emagent] /u01/app/oracle/agent_24ai/agent_24.1.0.0.0/oracle_common/jdk/bin/keytool -list -keystore /u01/app/oracle/agent_24ai/agent_inst/sysman/config/montrust/AgentTrust.jks -alias ogg_capath
Enter keystore password:
ogg_capath, Apr 19, 2026, trustedCertEntry,
Certificate fingerprint (SHA-256): 8D:6F:1D:67:ED:D9:7B:C0:C8:0E:D1:0E:50:2F:15:25:45:5D:F2:1D:A2:AB:22:C7:2D:AE:05:19:F1:DE:28:31</code></pre>



<p class="wp-block-paragraph">Without modifying anything in the Enterprise Manager, you can <strong>re-run the discovery</strong>. This time, the GoldenGate targets will be discovered ! To promote the new targets, just click on the <strong>number of targets discovered</strong>. You can also go in the <em><strong>Setup &gt; Add Target &gt; Auto Discovery Results</strong></em> section to view all discovered targets. Once this is done, the <strong>new targets will be monitored</strong>.</p>



<p class="wp-block-paragraph">To summarize, in this NGINX context, OEM GoldenGate discovery fails with <code>EM-90000</code> due to missing CA certificates in the agent truststore. Importing the proper CA chain into <code>AgentTrust.jks</code> resolves the SSL handshake failure.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/em-90000-ssl-error-with-goldengate-targets-in-oem/">EM-90000 SSL Error With GoldenGate Targets in OEM</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/em-90000-ssl-error-with-goldengate-targets-in-oem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-06-17 06:54:15 by W3 Total Cache
-->