Oracle GoldenGate is a managed service that can collect, replicate, and manage transactional data between databases. GoldenGate can use CockroachDB as a sink by leveraging CockroachDB’s PostgreSQL compatibility. This page describes how to:
This section describes how to configure Oracle GoldenGate for PostgreSQL to work with CockroachDB. Oracle GoldenGate for PostgreSQL is the process that pulls data from trail files over to CockroachDB. This is a separate installation from Oracle GoldenGate for Oracle, which will be used to pull source data and route it to proper trail files. For more information, refer to the Oracle GoldenGate for PostgreSQL documentation. The following example uses a CockroachDB Standard cluster.
Edit the ODBC.ini file to set up the ODBC data sources and configuration:
# No changes should be needed for CRDBLOCAL[ODBC Data Sources]PG_src=DataDirect 7.1 PostgreSQL Wire ProtocolPG_tgt=DataDirect 7.1 PostgreSQL Wire ProtocolCRDB=DataDirect 7.1 PostgreSQL Wire Protocol[ODBC]IANAAppCodePage=4# The following path is your Oracle GoldenGate for PostgreSQL installation directoryInstallDir=/u01/ggs-pg
Ensure that all the PostgreSQL libraries are installed and referenced in LD_LIBRARY_PATH.The path should at least include /usr/pgsql-13/lib and /u01/ggs-pg/lib:
# The path is a concatenation of your PostgreSQL libraries and GoldenGate installation directoryexport LD_LIBRARY_PATH=/usr/pgsql-13/lib:/u01/ggs-pg/lib
Set up the ODBC.ini file for the Oracle GoldenGate host:
# This is needed so that OGG knows where to look for connection details for the databaseexport ODBCINI=/etc/odbc.ini
To make this change permanent, you must also add the command to your shell’s configuration file, such as ~/.zshrc.
In the ODBC.ini file, set up the CockroachDB Standard parameters:
Replace the login details with your own. Be sure to prefix the database name with .
Make sure your CockroachDB Standard cluster’s root CA certificate is in the TrustStore path.
[CRDBSTANDARD]# The following driver will always point to your Oracle GoldenGate for PostgreSQL installationDriver=/u01/ggs-pg/lib/GGpsql25.soDescription=DataDirect 7.1 PostgreSQL Wire ProtocolDatabase={hostname}.{database}HostName={host}PortNumber=26257LogonID={your sql user}Password={your sql user's pass}EncryptionMethod=1ValidateServerCertificate=1TrustStore=/root/.postgresql/root.crt
Log in to the database:
cd /u01/ggs-pg./ggsci# To log into the local databaseDBLOGIN SOURCEDB CRDBLOCAL# To log into the CockroachDB Standard database and then enter your passwordDBLOGIN SOURCEDB CRDBSTANDARD
In the GGSCI terminal, run the following and start the Extract service.
add extract epos, tranlog, begin nowadd rmttrail ./dirdat/ab, extract epos megabytes 10# This is crucial in order to address the logmining not found errorregister EXTRACT epos, DATABASE# Starts servicestart epos
Check the status of the Extract by creating a test table OGGADM1.testtable in Oracle and adding a row:
In GGSCI, in another terminal, check that Extract is working correctly:
stats EXTRACT epos
You should see an output similar to the following:
Extracting from OGGADM1.TESTTABLE to OGGADM1.TESTTABLE:*** Total statistics since 2023-06-09 19:06:44 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 1.00*** Daily statistics since 2023-06-09 19:06:44 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 1.00*** Hourly statistics since 2023-06-09 19:06:44 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 1.00*** Latest statistics since 2023-06-09 19:06:44 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 1.00End of statistics.
Program Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGREPLICAT RUNNING RORPSQL 00:00:00 00:00:09
Test that Extract and Replicat are working properly by adding values to OGGADM1.testtable:
INSERT INTO OGGADM1.testtable (col1, col2) VALUES (12, 'Example data');COMMIT;
and check that the data was delivered to public.testtable:
SELECT * FROM public.testtable;
col1 | col2-------+--------------- 12 | Example data
Open the GGSCI terminal for Oracle:
cd $OGG_HOME./ggsci
Check that Extract is working correctly:
stats EXTRACT EPOS
You should see an output similar to the following:
Extracting from OGGADM1.TESTTABLE to OGGADM1.TESTTABLE:*** Total statistics since 2023-06-09 19:06:44 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Daily statistics since 2023-06-09 19:06:44 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Hourly statistics since 2023-06-09 19:06:44 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Latest statistics since 2023-06-09 19:06:44 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00End of statistics.
Open the GGSCI terminal for CockroachDB:
cd $OGG_PG_HOME./ggsci
Check that Replicat is working correctly:
stats REPLICAT RORPSQL
You should see an output similar to the following:
Replicating from OGGADM1.TESTTABLE to public.testtable:*** Total statistics since 2023-06-09 19:10:20 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Daily statistics since 2023-06-09 19:10:20 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Hourly statistics since 2023-06-09 19:10:20 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00*** Latest statistics since 2023-06-09 19:10:20 *** Total inserts 4.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 4.00End of statistics.
INSERT INTO OGGADM1.testtable2 (col1, col2)SELECT level + 99, 'Example data'FROM dualCONNECT BY level <= 50000 - 99;
Run the status command on the Extract GGSCI terminal:
stats EXTRACT EPOS
You will see an output similar to the following:
Extracting from OGGADM1.TESTTABLE2 to OGGADM1.TESTTABLE2:*** Total statistics since 2023-06-09 21:02:39 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Daily statistics since 2023-06-09 21:02:39 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Hourly statistics since 2023-06-09 21:02:39 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Latest statistics since 2023-06-09 21:02:39 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00End of statistics.
Run the status command on the Replicat GGSCI terminal:The number of inserts takes a few minutes to update. After the process finishes inserting and committing to the database, it will report back the final inserts. During the process, it will show the previous state:
Replicating from OGGADM1.TESTTABLE2 to public.testtable:*** Total statistics since 2023-06-09 21:04:05 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Daily statistics since 2023-06-09 21:04:05 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Hourly statistics since 2023-06-09 21:04:05 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00*** Latest statistics since 2023-06-09 21:04:05 *** Total inserts 49903.00 Total updates 0.00 Total deletes 0.00 Total upserts 0.00 Total discards 0.00 Total operations 49903.00End of statistics.
To verify that the insert is happening, you can run: SELECT COUNT(*) FROM public.testtable;. The query will hang while it’s still inserting.
To track the status of an ongoing replication, view the report:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CockroachDB","colors":{"primary":"#9059FF","light":"#9059FF","dark":"#9059FF"},"logo":{"light":"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_Black.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=54ccae625c9986bf1df8ddc7b2c571f0","dark":"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_White.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=0dd9b66973a1c7d3dd72aa67b6094efe","href":"https://www.cockroachlabs.com/"},"favicon":{"light":"https://mintcdn.com/cockroachlabs/2yihO7vMXnL0G_07/images/favicon.svg?fit=max\u0026auto=format\u0026n=2yihO7vMXnL0G_07\u0026q=85\u0026s=01f9aa59c9f275e1f35cd424a27d2551","dark":"https://mintcdn.com/cockroachlabs/2yihO7vMXnL0G_07/images/favicon.svg?fit=max\u0026auto=format\u0026n=2yihO7vMXnL0G_07\u0026q=85\u0026s=01f9aa59c9f275e1f35cd424a27d2551"},"api":{"examples":{"defaults":"required","languages":["curl"]}},"appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Get started free","href":"https://cockroachlabs.cloud/signup?referralId=cc_nav_global\u0026_ga=2.242886210.1147139380.1759903632-41552699.1759903632"}},"footer":{"socials":{"youtube":"https://www.youtube.com/@cockroachdb","x":"https://x.com/CockroachDB","linkedin":"https://www.linkedin.com/company/cockroach-labs/mycompany/verification","instagram":"https://www.instagram.com/cockroachdb"},"links":[{"header":"Product","items":[{"label":"CockroachDB","href":"https://www.cockroachlabs.com/product"},{"label":"CockroachDB Cloud","href":"https://www.cockroachlabs.com/product/cockroachcloud"},{"label":"Compare","href":"https://www.cockroachlabs.com/compare"},{"label":"Pricing","href":"https://www.cockroachlabs.com/pricing"},{"label":"Get CockroachDB","href":"https://www.cockroachlabs.com/get-started-cockroachdb"},{"label":"Sign In","href":"https://cockroachlabs.cloud/"}]},{"header":"Resources","items":[{"label":"Guides","href":"https://resources.cockroachlabs.com/guides"},{"label":"Webinars","href":"https://www.cockroachlabs.com/community/webinars"},{"label":"Videos","href":"https://www.cockroachlabs.com/resources/video"},{"label":"Architecture Overview","href":"https://www.cockroachlabs.com/docs/stable/architecture/overview"},{"label":"FAQ","href":"https://www.cockroachlabs.com/docs/stable/frequently-asked-questions"},{"label":"Security","href":"https://www.cockroachlabs.com/security"}]},{"header":"Learn \u0026 Support","items":[{"label":"Docs","href":"https://www.cockroachlabs.com/docs"},{"label":"University","href":"https://learn.cockroachlabs.com/"},{"label":"Developers","href":"https://www.cockroachlabs.com/developers"},{"label":"Forum","href":"https://forum.cockroachlabs.com/"},{"label":"Slack","href":"https://cockroa.ch/slack"},{"label":"Support Portal","href":"https://support.cockroachlabs.com/hc/en-us"},{"label":"Contact Us","href":"https://www.cockroachlabs.com/contact"}]},{"header":"Company","items":[{"label":"About","href":"https://www.cockroachlabs.com/about"},{"label":"Blog","href":"https://www.cockroachlabs.com/blog"},{"label":"Careers","href":"https://www.cockroachlabs.com/careers"},{"label":"Customers","href":"https://www.cockroachlabs.com/customers"},{"label":"News","href":"https://www.cockroachlabs.com/press"},{"label":"Privacy","href":"https://www.cockroachlabs.com/privacy"},{"label":"Terms of Use","href":"https://www.cockroachlabs.com/website-terms-of-use"}]}]},"fonts":{"heading":{"family":"Poppins"},"body":{"family":"Open Sans"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}},"latex":true},"integrations":{"gtm":{"tagId":"GTM-NR8LC4"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page you're looking for doesn't exist. [Return to docs home](/index.html)."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"global":{"anchors":[{"anchor":"University","icon":"graduation-cap","href":"https://learn.cockroachlabs.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cockroachlabs","hasAudioNarration":false,"actualSubdomain":"cockroachlabs","customDomains":["docs.cockroachlabs.com"],"gitSource":{"type":"github","owner":"cockroachlabs","repo":"docs","deployBranch":"main","contentDirectory":"cockroachlabs-preview-main","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb980a640acea4df93b94e","collectionId":"a2db9ff2-457f-4e73-852a-be2c9c9f7e59","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb980a640acea4df93b94e"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeba85dd3b39eff39f59e45","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"CockroachDB","count":6944},{"language":"default","tag":"Docs","count":3214},{"language":"default","tag":"SQL","count":2562},{"language":"default","tag":"Statements","count":1710},{"language":"default","tag":"Self-Hosted Deployments","count":1455},{"language":"default","tag":"Reference","count":774},{"language":"default","tag":"Cloud Deployments","count":616},{"language":"default","tag":"Endpoints","count":528},{"language":"default","tag":"Cloud API Reference","count":518},{"language":"default","tag":"Get Started","count":441}],"searchSettings":{"isFiltersEnabled":false}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":":root{--inline-code-bg-light: rgb(var(--gray-200) / 0.92);--inline-code-bg-dark: rgb(255 255 255 / 0.08)}.prose :not(pre)>code{background-color:var(--inline-code-bg-light)!important}.dark .prose :not(pre)>code{background-color:var(--inline-code-bg-dark)!important}@media (min-width: 1536px){#navbar>.max-w-8xl,[class*=\"peer-[.is-not-custom]:peer-[.is-not-center]:max-w-8xl\"]{width:100%!important;max-width:none!important}}#navigation-items{display:flex;flex-direction:column}#navigation-items>ul:not(.sidebar-group){order:1;margin-top:1.5rem}.crdb-metrics-table table{table-layout:fixed!important;width:100%!important;min-width:0!important;max-width:100%!important;border-collapse:collapse}.crdb-metrics-table table td,.crdb-metrics-table table th{min-width:0!important;overflow-wrap:anywhere;word-break:break-word}.crdb-fixed-table table{table-layout:fixed!important;width:100%!important;min-width:0!important;max-width:100%!important;border-collapse:collapse}.crdb-fixed-table table td,.crdb-fixed-table table th{min-width:0!important;overflow-wrap:anywhere;word-break:break-word}.bg-cover{background-size:cover;background-repeat:no-repeat;background-position:center center}.bg-cover__bg-3-1{background-image:url(\"https://cockroach-labs-docs.imgix.net/bg-3-1.png?auto=format,compress\u0026w=1200\u0026q=40\")}.home-header{border-radius:0.5rem;margin-bottom:2rem!important;padding:2rem}.card{border:1px solid #e5e7eb;border-radius:0.75rem;background-color:white}.dark .card{background-color:#0d1117;border-color:rgba(255, 255, 255, 0.1)}.card-link{text-decoration:none!important;overflow:hidden}.card-link:hover{outline:1px solid rgba(105, 51, 255, 0.55);outline-offset:-1px}.card-link,.card-link:hover{transform:none!important;box-shadow:none!important}.card-link a,.card-link a:hover,.card-link h3,.card-link h3:hover,.card-link p,.card-link p:hover{border:0!important;text-decoration:none!important;transform:none!important}.card-link a{display:block;width:100%}.card-link h3{font-size:1rem!important;font-weight:600!important}.card-body{padding:1.5rem}.landing-column-title{margin-bottom:1rem}.overline{text-transform:uppercase;letter-spacing:0.05em}.btn-redirect{display:inline-flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;border:2px solid #e5e7eb;border-radius:0.5rem;text-decoration:none;transition:border-color 0.2s}.btn-redirect:hover{border-color:#6933ff}.btn-block{display:flex;width:100%;justify-content:center}.dark .btn-redirect{border-color:rgba(255, 255, 255, 0.1)}.article-section-title{font-size:1.25rem!important}.article-lists h3{font-size:0.875rem!important;font-weight:600!important;text-transform:uppercase;letter-spacing:0.05em;color:#6b7280!important}.dark .article-lists h3{color:#9ca3af!important}.article-lists ul{font-size:0.875rem}.shadow{box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.bg-dark-wing{background-color:#152849;border-radius:0.5rem}.text-ice-temple{color:#1bf8ec!important;display:inline-flex;align-items:center;gap:0.375rem}.text-ice-temple img{display:inline-block;margin:0}.bg-dark-wing h2{font-size:clamp(1.25rem, 1rem + 1.5vw, 1.75rem)!important}@media (max-width: 576px){.card-body.bg-dark-wing{padding:1.25rem!important}}.text-decoration-none{text-decoration:none!important}.text-muted{color:#6b7280!important}.card-link .card-desc{font-size:0.9375rem!important;font-weight:400!important;line-height:1.5!important;text-align:left!important;color:#4b5563!important;width:100%;margin-top:0.5rem}.dark .card-link .card-desc{color:#9ca3af!important}.report-tag{display:inline-block;padding:0.25rem 0.75rem;border-radius:0.25rem;background-color:rgba(84, 42, 189, 0.08);color:#542abd}.dark .report-tag{background-color:rgba(84, 42, 189, 0.3);color:#b39dff}.resilience-report-img{background-image:url(\"/images/state-resilience.png\");background-size:cover;background-position:center;min-height:150px;border-radius:0.5rem}.row{display:flex!important;flex-wrap:wrap;margin-left:-0.75rem;margin-right:-0.75rem}.display-flex{display:flex!important}.col-lg-4{flex:0 0 auto;width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-4{width:33.333333%!important}}.col-lg-3,.col-sm-6,.col-xs-12{flex:0 0 auto;width:100%!important;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-3{width:25%!important}}@media (min-width: 576px){.col-sm-6{width:50%!important}}.col-12{width:100%!important}.col-lg-12{width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-12{width:100%!important}}.col-md-4,.col-md-8{flex:0 0 auto;width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 768px){.col-md-4{width:33.333333%!important}.col-md-8{width:66.666667%!important}}.h-100{height:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.mb-3{margin-bottom:1rem!important}.mb-5{margin-bottom:3rem!important}.pb-5{padding-bottom:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.mt-auto{margin-top:auto!important}.mt-0{margin-top:0!important}.mt-2{margin-top:0.5rem!important}.mt-3{margin-top:1rem!important}.mt-5:not(.code-block){margin-top:3rem!important}.code-block.mb-8{margin-bottom:calc(var(--spacing) * 5)}.pt-5{padding-top:3rem!important}.m-0{margin:0!important}.ml-2{margin-left:0.5rem!important}.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:0.5rem!important}.mb-4{margin-bottom:1.5rem!important}.p-2{padding:0.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.ml-1{margin-left:0.25rem!important}.mr-auto{margin-right:auto!important}.justify-content-center{justify-content:center!important}.align-items-center{align-items:center!important}@media (min-width: 1200px){.p-xl-5{padding:3rem!important}}.mx-0{margin-left:0!important;margin-right:0!important}.text-center{text-align:center}.text-white{color:white!important}.text-black{color:black!important}.dark .text-black{color:white!important}.container{width:100%;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}.card-header-overlap-text{position:relative}@media (min-width: 768px){.p-md-5{padding:3rem!important}}@media (min-width: 992px){.d-lg-flex{display:flex!important}.mb-lg-0{margin-bottom:0!important}}.prose table{border-collapse:collapse!important}.prose table th,.prose table td{border:1px solid rgb(var(--gray-200))!important}.dark .prose table th,.dark .prose table td{border-color:rgb(var(--gray-700) / 0.5)!important}.prose table th{padding:0.571429em;font-weight:600;vertical-align:bottom;color:var(--tw-prose-headings);text-align:left}.prose table th.center-align{text-align:center}.prose table td{padding:0.571429em;vertical-align:baseline}[data-component-part=\"accordion-description\"]{font-size:0.875rem!important}.accordion.mb-3{margin-bottom:0.25rem!important}@media (max-width: 991.98px){[id^=\"kapa-widget-container\"] button{width:36px!important;height:36px!important;min-width:36px!important;padding:0!important;font-size:0!important}[id^=\"kapa-widget-container\"] button svg{width:18px!important;height:18px!important}[id^=\"kapa-widget-container\"] button span{display:none!important}}table.crdb-fixed-table{table-layout:fixed!important;min-width:0!important;width:100%}table.crdb-fixed-table td,table.crdb-fixed-table th{min-width:0!important;overflow-wrap:break-word;word-break:normal}.sql-grammar svg .line{fill:none;stroke:#262626}.sql-grammar svg .bold-line{stroke:#0A0A0A;shape-rendering:crispEdges;stroke-width:2}.sql-grammar svg .thin-line{stroke:#0F0F0F;shape-rendering:crispEdges}.sql-grammar svg .filled{fill:#262626;stroke:none}.sql-grammar svg text.terminal{font-family:Verdana, Sans-serif;font-size:12px;fill:#0A0A0A;font-weight:bold}.sql-grammar svg text.nonterminal{font-family:Verdana, Sans-serif;font-size:12px;fill:#0055FF}.sql-grammar svg text.regexp{font-family:Verdana, Sans-serif;font-size:12px;fill:#0F0F0F}.sql-grammar svg rect,.sql-grammar svg circle,.sql-grammar svg polygon{fill:#262626;stroke:#262626}.sql-grammar svg rect.terminal{fill:#ffffff;stroke:#262626}.sql-grammar svg rect.nonterminal{fill:#FFFFFF;stroke:#262626}.sql-grammar svg rect.text{fill:none;stroke:none}.sql-grammar svg polygon.regexp{fill:#FFFFFF;stroke:#262626}.sql-grammar svg{background-color:#ffffff}.sql-grammar a[name]::before{content:'';display:block;height:80px;margin:-80px 0 0}.sql-grammar a[name]:focus{outline:0}pre[language=\"sql\"][data-crdb-prompt-stripped] code::before{content:\"> \";color:#94e2d5;user-select:none}.mark-yes{color:#008a5e;font-weight:600}.dark .mark-yes{color:#3ddc97}"}],"page":{"pagePath":"docs/stable/goldengate","slug":"/docs/stable/goldengate","pageMetadata":{"title":"Migrate and Replicate Data with Oracle GoldenGate","sidebarTitle":"Oracle GoldenGate","old_description":"Use GoldenGate to migrate data to a CockroachDB cluster.","description":null,"href":"/docs/stable/goldengate"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const InternalLink=({version,path=``,children,...props})=>{const _components={a:`a`,..._provideComponents()};let detectedVersion=version||`stable`;if(typeof window!==`undefined`\u0026\u0026!version){const match=window.location.pathname.match(/\\/docs\\/([^/]+)/);if(match){detectedVersion=match[1]}}const normalizedPath=path.startsWith(`/`)?path.slice(1):path;return _jsx(_components.a,{href:`/docs/${detectedVersion}/${normalizedPath}`,...props,children})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.oracle.com/integration/goldengate/`,children:`Oracle GoldenGate`}),` is a managed service that can collect, replicate, and manage transactional data between databases. GoldenGate can use CockroachDB as a sink by leveraging CockroachDB’s PostgreSQL compatibility. This page describes how to:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#configure-oracle-goldengate-for-postgresql`,children:`Configure Oracle GoldenGate for PostgreSQL`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#set-up-extract-to-capture-data-from-a-source-database`,children:`Set up Extract to capture data from a source database`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#set-up-replicat-to-deliver-data-to-cockroachdb`,children:`Set up Replicat to deliver data to CockroachDB`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#perform-bulk-replication`,children:`Perform bulk replication`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`As of this writing, GoldenGate supports the following database `,_jsx(_components.a,{href:`https://docs.oracle.com/en/middleware/goldengate/core/21.3/coredoc/configure-databases.html`,children:`sources`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`MySQL`}),`\n`,_jsx(_components.li,{children:`Oracle`}),`\n`,_jsx(_components.li,{children:`PostgreSQL`}),`\n`,_jsx(_components.li,{children:`SQL Server`}),`\n`,_jsx(_components.li,{children:`Db2 z/OS`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This page describes GoldenGate at a high level and assumes some familiarity with this tool. For detailed information, refer to the `,_jsx(_components.a,{href:`https://docs.oracle.com/en/middleware/goldengate/core/21.3/index.html`,children:`Oracle GoldenGate documentation`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For limitations on what PostgreSQL features are supported, refer to Oracle’s `,_jsx(_components.a,{href:`https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/understanding-whats-supported-postgresql.html`,children:`Details of Supported PostgreSQL Data Types`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-begin`,children:`Before you begin`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Oracle GoldenGate runs as a process separate from CockroachDB and the source database. Ensure your host meets the `,_jsx(_components.a,{href:`https://docs.oracle.com/en/middleware/goldengate/core/21.3/installing/overview.html`,children:`minimum requirements`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Ensure that your Oracle client or client libraries are compatible with the host Oracle version.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Ensure that you have installed both required Oracle GoldenGate components:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://www.oracle.com/middleware/technologies/goldengate-downloads.html`,children:`Oracle GoldenGate for Oracle`}),` is required to pull source data and route it to proper `,_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`trail files`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://www.oracle.com/middleware/technologies/goldengate-downloads.html`,children:`Oracle GoldenGate for PostgreSQL`}),` is required to pull data from the trail files to CockroachDB.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`For CockroachDB clusters running v22.1 and earlier, enable the following `,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{path:`cluster-settings`,children:`cluster settings`})}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`SET`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` CLUSTER SETTING sql.defaults.datestyle.enabled `}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` true;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`SET`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` CLUSTER SETTING sql.defaults.intervalstyle.enabled `}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` true;`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For CockroachDB v22.2 and later, these settings are enabled by default.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Ensure `,_jsx(_components.a,{href:`https://www.postgresql.org/download/linux/redhat/`,children:`libpg`}),` is available on the Oracle GoldenGate host.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Ensure you have a secure, `,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{version:`cockroachcloud`,path:`network-authorization`,children:`publicly available`})}),` CockroachDB cluster running the latest `,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{version:`releases`,path:`v26.4`,children:`production release`})}),`, and have created a `,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{path:`security-reference/authorization#sql-users`,children:`SQL user`})}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`configure-oracle-goldengate-for-postgresql`,children:`Configure Oracle GoldenGate for PostgreSQL`}),`\n`,_jsxs(_components.p,{children:[`This section describes how to configure Oracle GoldenGate for PostgreSQL to work with CockroachDB. Oracle GoldenGate for PostgreSQL is the process that pulls data from `,_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`trail files`}),` over to CockroachDB. This is a separate installation from Oracle GoldenGate for Oracle, which will be used to pull source data and route it to proper `,_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`trail files`}),`. For more information, refer to the `,_jsx(_components.a,{href:`https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/preparing-database-oracle-goldengate-postgresql.html`,children:`Oracle GoldenGate for PostgreSQL documentation`}),`. The following example uses a `,_jsx(_components.a,{href:`https://cockroachlabs.com/docs/cockroachcloud/create-your-cluster`,children:`CockroachDB Standard cluster`}),`.`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Edit the `,_jsx(_components.code,{children:`ODBC.ini`}),` file to set up the ODBC data sources and configuration:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`11`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# No changes should be needed for CRDBLOCAL`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[ODBC Data Sources]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`PG_src=DataDirect 7.1 PostgreSQL Wire Protocol`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`PG_tgt=DataDirect 7.1 PostgreSQL Wire Protocol`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`CRDB=DataDirect 7.1 PostgreSQL Wire Protocol`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[ODBC]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`IANAAppCodePage=4`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# The following path is your Oracle GoldenGate for PostgreSQL installation directory`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`InstallDir=/u01/ggs-pg`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Ensure that all the PostgreSQL libraries are installed and referenced in `,_jsx(_components.code,{children:`LD_LIBRARY_PATH`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The path should at least include `,_jsx(_components.code,{children:`/usr/pgsql-13/lib`}),` and `,_jsx(_components.code,{children:`/u01/ggs-pg/lib`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# The path is a concatenation of your PostgreSQL libraries and GoldenGate installation directory`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` LD_LIBRARY_PATH`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`/usr/pgsql-13/lib:/u01/ggs-pg/lib`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Set up the `,_jsx(_components.code,{children:`ODBC.ini`}),` file for the Oracle GoldenGate host:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# This is needed so that OGG knows where to look for connection details for the database`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` ODBCINI`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`/etc/odbc.ini`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`To make this change permanent, you must also add the command to your shell’s configuration file, such as `,_jsx(_components.code,{children:`~/.zshrc`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In the `,_jsx(_components.code,{children:`ODBC.ini`}),` file, set up the CockroachDB Standard parameters:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Replace the login details with your own. Be sure to prefix the database name with `,_jsx(`code`,{children:`{hostname}`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Make sure your CockroachDB Standard cluster’s `,_jsx(_components.a,{href:`https://cockroachlabs.com/docs/cockroachcloud/connect-to-your-cluster#connect-to-your-cluster`,children:`root CA certificate`}),` is in the `,_jsx(_components.code,{children:`TrustStore`}),` path.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`13`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[CRDBSTANDARD]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# The following driver will always point to your Oracle GoldenGate for PostgreSQL installation`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Driver=/u01/ggs-pg/lib/GGpsql25.so`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Description=DataDirect 7.1 PostgreSQL Wire Protocol`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Database={hostname}.{database}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`HostName={host}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`PortNumber=26257`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`LogonID={your sql user}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Password={your sql user's pass}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`EncryptionMethod=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ValidateServerCertificate=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`TrustStore=/root/.postgresql/root.crt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Log in to the database:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F38BA8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` /u01/ggs-pg`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./ggsci`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# To log into the local database`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`DBLOGIN`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` SOURCEDB`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` CRDBLOCAL`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# To log into the CockroachDB Standard database and then enter your password`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`DBLOGIN`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` SOURCEDB`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` CRDBSTANDARD`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-extract-to-capture-data-from-a-source-database`,children:`Set up Extract to capture data from a source database`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`Extract`}),` is Oracle GoldenGate’s data capture mechanism that is configured to run against the source database.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Complete the steps in this section on a machine and in a directory where Oracle GoldenGate for Oracle is installed.`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In the GGSCI terminal, create and open the `,_jsx(_components.code,{children:`epos`}),` parameter file for the Oracle source:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F38BA8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` /u01/ggs`}),_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:` # Otherwise known as $OGG_HOME`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./ggsci`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`edit`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` param`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`view`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` param`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Edit the parameters that configure Extract to send data to the trail file at `,_jsx(_components.code,{children:`./dirdat/ab`}),` on the remote host:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`EXTRACT epos`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`USERIDALIAS gg_source`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`RMTHOST {host-name}, MGRPORT {port}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`RMTTRAIL ./dirdat/ab`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`TABLE OGGADM1.testtable;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`In the GGSCI terminal, run the following and start the Extract service.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`add`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` extract`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` tranlog,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` begin`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` now`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`add`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` rmttrail`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` ./dirdat/ab,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` extract`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` megabytes`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:` 10`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# This is crucial in order to address the logmining not found error`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`register`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EXTRACT`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` DATABASE`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# Starts service`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`start`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Check the status of the Extract by creating a test table `,_jsx(_components.code,{children:`OGGADM1.testtable`}),` in Oracle and adding a row:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:` OGGADM1`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`.testtable (col1 `}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`number`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`, col2 `}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`varchar2`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`(`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:`20`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`));`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`ALTER`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` OGGADM1.testtable `}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`ADD`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` PRIMARY KEY`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` (col1);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` OGGADM1.testtable (col1, col2) `}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`VALUES`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` (`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:`11`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`, `}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:`'Example data'`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`COMMIT`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`;`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`In GGSCI, in another terminal, check that Extract is working correctly:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`stats`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EXTRACT`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` epos`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`You should see an output similar to the following:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`31`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`31`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Extracting from OGGADM1.TESTTABLE to OGGADM1.TESTTABLE:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Total statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Daily statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Hourly statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Latest statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 1.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`End of statistics.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-replicat-to-deliver-data-to-cockroachdb`,children:`Set up Replicat to deliver data to CockroachDB`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`Replicat`}),` is an Oracle process that reads `,_jsx(_components.a,{href:`https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.html`,children:`trail files`}),` and delivers data to a target database.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Run the steps in this section on a machine and in a directory where Oracle GoldenGate for PostgreSQL is installed.`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Log in to the database from GGSCI:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` LD_LIBRARY_PATH`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`/usr/pgsql-13/lib:/u01/ggs-pg/lib`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` ODBCINI`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`/etc/odbc.ini`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F38BA8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` /u01/ggs-pg`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./ggsci`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9399B2`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# Log into the DB`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`DBLOGIN`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` SOURCEDB`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` CRDBLOCAL`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Check the status in the GGSCI terminal:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`info`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` all`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`You should see the following output:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Program Status Group Lag at Chkpt Time Since Chkpt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`MANAGER RUNNING`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Open the parameter file:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`edit`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` param`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` RORPSQL`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`view`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` param`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` RORPSQL`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Edit the parameters to configure the `,_jsx(_components.code,{children:`MAP`}),` statement, which maps the source (`,_jsx(_components.code,{children:`OGGADM1.testtable`}),`) to the target (`,_jsx(_components.code,{children:`public.testtable`}),`):`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`REPLICAT RORPSQL`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SETENV ( PGCLIENTENCODING = \"UTF8\" )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SETENV (ODBCINI=\"/etc/odbc.ini\" )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SETENV (NLS_LANG=\"AMERICAN_AMERICA.AL32UTF8\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`TARGETDB CRDBLOCAL`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`DISCARDFILE ./dirrpt/diskg.dsc, purge`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`MAP OGGADM1.testtable, TARGET public.testtable, COLMAP (COL1=col1,COL2=col2);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`In the GGSCI terminal, run the following and start the Replicat service:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`add`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` replicat`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` RORPSQL,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` NODBCHECKPOINT,`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` exttrail`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` ./dirdat/ab`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`start`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` RORPSQL`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Program Status Group Lag at Chkpt Time Since Chkpt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`MANAGER RUNNING`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`REPLICAT RUNNING RORPSQL 00:00:00 00:00:09`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Test that Extract and Replicat are working properly by adding values to `,_jsx(_components.code,{children:`OGGADM1.testtable`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` OGGADM1.testtable (col1, col2) `}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`VALUES`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` (`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:`12`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`, `}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:`'Example data'`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`COMMIT`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`;`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{path:`connect-to-the-database`,children:`Connect to the target CockroachDB Standard cluster`})}),` and check that the data was delivered to `,_jsx(_components.code,{children:`public.testtable`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:` *`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` FROM`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` public.testtable;`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` col1 | col2`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`-------+---------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 12 | Example data`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Open the GGSCI terminal for Oracle:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F38BA8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` $OGG_HOME`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./ggsci`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Check that Extract is working correctly:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`stats`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EXTRACT`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EPOS`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`You should see an output similar to the following:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`31`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`31`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Extracting from OGGADM1.TESTTABLE to OGGADM1.TESTTABLE:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Total statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Daily statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Hourly statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Latest statistics since 2023-06-09 19:06:44 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`End of statistics.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Open the GGSCI terminal for CockroachDB:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F38BA8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` $OGG_PG_HOME`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./ggsci`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Check that Replicat is working correctly:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`stats`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` REPLICAT`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` RORPSQL`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`You should see an output similar to the following:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`31`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`31`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Replicating from OGGADM1.TESTTABLE to public.testtable:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Total statistics since 2023-06-09 19:10:20 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Daily statistics since 2023-06-09 19:10:20 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Hourly statistics since 2023-06-09 19:10:20 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Latest statistics since 2023-06-09 19:10:20 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 4.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`End of statistics.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`perform-bulk-replication`,children:`Perform bulk replication`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Keep the `,_jsx(_components.a,{href:`#set-up-extract-to-capture-data-from-a-source-database`,children:`Extract process`}),` running on Oracle and the `,_jsx(_components.a,{href:`#set-up-replicat-to-deliver-data-to-cockroachdb`,children:`Replicat process`}),` running for CockroachDB.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`In the source database, bulk insert some data:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` OGGADM1.testtable2 (col1, col2)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` level`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:` +`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:` 99`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`, `}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:`'Example data'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`FROM`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:` dual`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:`CONNECT`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` BY`}),_jsx(_components.span,{style:{color:`#CBA6F7`,\"--shiki-dark\":`#CBA6F7`},children:` level`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:` \u003c=`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:` 50000`}),_jsx(_components.span,{style:{color:`#94E2D5`,\"--shiki-dark\":`#94E2D5`},children:` -`}),_jsx(_components.span,{style:{color:`#FAB387`,\"--shiki-dark\":`#FAB387`},children:` 99`}),_jsx(_components.span,{style:{color:`#CDD6F4`,\"--shiki-dark\":`#CDD6F4`},children:`;`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Run the status command on the Extract GGSCI terminal:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89B4FA`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`stats`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EXTRACT`}),_jsx(_components.span,{style:{color:`#A6E3A1`,\"--shiki-dark\":`#A6E3A1`},children:` EPOS`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`You will see an output similar to the following:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`31`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`31`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Extracting from OGGADM1.TESTTABLE2 to OGGADM1.TESTTABLE2:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Total statistics since 2023-06-09 21:02:39 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Daily statistics since 2023-06-09 21:02:39 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Hourly statistics since 2023-06-09 21:02:39 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Latest statistics since 2023-06-09 21:02:39 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`End of statistics.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Run the status command on the Replicat GGSCI terminal:`}),`\n`,_jsx(_components.p,{children:`The number of inserts takes a few minutes to update. After the process finishes inserting and committing to the database, it will report back the final inserts. During the process, it will show the previous state:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`31`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`31`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Replicating from OGGADM1.TESTTABLE2 to public.testtable:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Total statistics since 2023-06-09 21:04:05 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Daily statistics since 2023-06-09 21:04:05 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Hourly statistics since 2023-06-09 21:04:05 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`*** Latest statistics since 2023-06-09 21:04:05 ***`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total inserts 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total updates 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total deletes 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total upserts 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total discards 0.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Total operations 49903.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`End of statistics.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`To verify that the insert is happening, you can run: `,_jsx(_components.code,{children:`SELECT COUNT(*) FROM public.testtable;`}),`. The query will hang while it’s still inserting.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`To track the status of an ongoing replication, view the report:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-mocha catppuccin-mocha`,style:{backgroundColor:`#1e1e2e`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#cdd6f4`,\"--shiki-dark\":`#cdd6f4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`./ggsci`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`VIEW REPORT RORPSQL`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{version:`molt`,path:`migration-overview`,children:`Migration Overview`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{version:`cockroachcloud`,path:`migrations-page`,children:`Schema Conversion Tool`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{path:`change-data-capture-overview`,children:`Change Data Capture Overview`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_MdxComponentBoundary,{name:`InternalLink`,children:_jsx(InternalLink,{path:`third-party-database-tools`,children:`Third-Party Tools Supported by Cockroach Labs`})}),`\n`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{InternalLink,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}},"config":{},"pageMetadata":{"title":"Migrate and Replicate Data with Oracle GoldenGate","sidebarTitle":"Oracle GoldenGate","old_description":"Use GoldenGate to migrate data to a CockroachDB cluster.","description":null,"href":"/docs/stable/goldengate"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[148,586,")=>null;function _cr"],[13809,13846,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Before you begin","slug":"before-you-begin","depth":2,"children":[]},{"title":"Configure Oracle GoldenGate for PostgreSQL","slug":"configure-oracle-goldengate-for-postgresql","depth":2,"children":[]},{"title":"Set up Extract to capture data from a source database","slug":"set-up-extract-to-capture-data-from-a-source-database","depth":2,"children":[]},{"title":"Set up Replicat to deliver data to CockroachDB","slug":"set-up-replicat-to-deliver-data-to-cockroachdb","depth":2,"children":[]},{"title":"Perform bulk replication","slug":"perform-bulk-replication","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cockroachlabs/4695317e415d4eba/kapa.js","/_mintlify/custom/cockroachlabs/40fb45a3cfe42c92/copy-code-prompt.js"],"subdomain":"cockroachlabs","siteName":"CockroachDB","title":"Migrate and Replicate Data with Oracle GoldenGate - CockroachDB","navMaps":{"firstHrefInVersion":{"v26.4":{"href":"/docs/stable/goldengate","matchLevel":0},"v26.3":{"href":"/docs/v26.3/goldengate","matchLevel":1,"canonicalOverride":true},"v26.2":{"href":"/docs/v26.2/goldengate","matchLevel":1,"canonicalOverride":true},"v26.1":{"href":"/docs/v26.1/goldengate","matchLevel":1,"canonicalOverride":true},"v25.4":{"href":"/docs/v25.4/goldengate","matchLevel":1,"canonicalOverride":true},"v25.3":{"href":"/docs/v25.3/goldengate","matchLevel":1,"canonicalOverride":true},"v25.2":{"href":"/docs/v25.2/goldengate","matchLevel":1,"canonicalOverride":true},"v25.1":{"href":"/docs/v25.1/goldengate","matchLevel":1,"canonicalOverride":true},"v24.3":{"href":"/docs/v24.3/goldengate","matchLevel":1,"canonicalOverride":true},"v24.1":{"href":"/docs/v24.1/goldengate","matchLevel":1,"canonicalOverride":true},"v23.2":{"href":"/docs/v23.2/goldengate","matchLevel":1,"canonicalOverride":true},"v23.1":{"href":"/docs/v23.1/goldengate","matchLevel":1,"canonicalOverride":true}},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T21:18:02.661Z","originalFileLocation":"docs/stable/goldengate.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"CockroachDB\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Migrate and Replicate Data with Oracle GoldenGate - CockroachDB\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CockroachDB\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cockroachlabs.com/docs/stable/goldengate\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cockroachlabs.mintlify.app/_mintlify/api/og/v2?division=Third-Party+Migration+Tools\u0026amp;title=Migrate+and+Replicate+Data+with+Oracle+GoldenGate\u0026amp;theme=7628870a42004e67b5b3df3d\u0026amp;signature=40b5b93ea9db2e35a768ba8fe3a0c01508418cf63320536bb81a4bf6fbed9fba\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Migrate and Replicate Data with Oracle GoldenGate - CockroachDB\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cockroachlabs.mintlify.app/_mintlify/api/og/v2?division=Third-Party+Migration+Tools\u0026amp;title=Migrate+and+Replicate+Data+with+Oracle+GoldenGate\u0026amp;theme=7628870a42004e67b5b3df3d\u0026amp;signature=40b5b93ea9db2e35a768ba8fe3a0c01508418cf63320536bb81a4bf6fbed9fba\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CockroachDB\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#9059FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cockroachlabs.com/docs/stable/goldengate\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/stable/goldengate.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cockroachlabs.com/#organization\",\"name\":\"CockroachDB\",\"url\":\"https://docs.cockroachlabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_Black.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=54ccae625c9986bf1df8ddc7b2c571f0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cockroachlabs.com#website\",\"name\":\"CockroachDB\",\"url\":\"https://docs.cockroachlabs.com\",\"publisher\":{\"@id\":\"https://docs.cockroachlabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cockroachlabs.com/docs/stable/goldengate#webpage\",\"url\":\"https://docs.cockroachlabs.com/docs/stable/goldengate\",\"name\":\"Migrate and Replicate Data with Oracle GoldenGate\",\"dateModified\":\"2026-11-03T21:18:02.661Z\",\"isPartOf\":{\"@id\":\"https://docs.cockroachlabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cockroachlabs.com/docs/stable/goldengate#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cockroachlabs.com/docs/stable/goldengate#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Third-Party Migration Tools\",\"item\":\"https://docs.cockroachlabs.com/docs/stable/aws-dms\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrate and Replicate Data with Oracle GoldenGate\",\"item\":\"https://docs.cockroachlabs.com/docs/stable/goldengate\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cockroachlabs.com/docs/stable/goldengate#article\",\"headline\":\"Migrate and Replicate Data with Oracle GoldenGate\",\"name\":\"Migrate and Replicate Data with Oracle GoldenGate\",\"url\":\"https://docs.cockroachlabs.com/docs/stable/goldengate\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cockroachlabs.com/docs/stable/goldengate#webpage\"},\"dateModified\":\"2026-11-03T21:18:02.661Z\",\"publisher\":{\"@id\":\"https://docs.cockroachlabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cockroachlabs.com#website\"}}]}\u003c/script>","siteName":"CockroachDB","nav":{"global":{"anchors":[{"anchor":"University","icon":"graduation-cap","href":"https://learn.cockroachlabs.com/"}]},"products":[{"product":"Cockroach Continuum Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cockroachlabs/images/continuum/cockroachlabs-symbol.svg","description":"The agentic database cloud","pages":[{"title":"Cockroach Continuum Cloud","href":"/docs/continuum"}]},{"product":"CockroachDB","icon":"database","description":"Distributed SQL database","versions":[{"version":"v26.4","default":true,"tag":"Stable","tabs":[{"tab":"Docs","icon":"book-open","pages":[{"title":"Docs","href":"/docs/stable"}]},{"tab":"Migrate","icon":"arrow-right-arrow-left","pages":[{"title":"Migration Overview","sidebarTitle":"Overview","href":"/docs/molt/migration-overview"},{"group":"Migration Considerations","pages":[{"title":"Migration Considerations","sidebarTitle":"Overview","href":"/docs/molt/migration-considerations"},{"title":"Migration Granularity","href":"/docs/molt/migration-considerations-granularity"},{"title":"Continuous Replication","href":"/docs/molt/migration-considerations-replication"},{"title":"Data Transformation Strategy","href":"/docs/molt/migration-considerations-transformation"},{"title":"Validation Strategy","href":"/docs/molt/migration-considerations-validation"},{"title":"Rollback Plan","href":"/docs/molt/migration-considerations-rollback"}]},{"title":"Migration Best Practices","href":"/docs/molt/migration-strategy"},{"group":"MOLT Tools","pages":[{"group":"Fetch","pages":[{"title":"MOLT Fetch","sidebarTitle":"Guide","href":"/docs/molt/molt-fetch"},{"title":"MOLT Fetch Installation","sidebarTitle":"Installation","href":"/docs/molt/molt-fetch-installation"},{"title":"MOLT Fetch Commands and Flags","sidebarTitle":"Commands and Flags","href":"/docs/molt/molt-fetch-commands-and-flags"},{"title":"MOLT Fetch Metrics","sidebarTitle":"Metrics","href":"/docs/molt/molt-fetch-monitoring"},{"title":"MOLT Fetch Best Practices","sidebarTitle":"Best Practices","href":"/docs/molt/molt-fetch-best-practices"},{"title":"MOLT Fetch Troubleshooting","sidebarTitle":"Troubleshooting","href":"/docs/molt/molt-fetch-troubleshooting"}]},{"group":"Replicator","pages":[{"title":"MOLT Replicator","sidebarTitle":"Guide","href":"/docs/molt/molt-replicator"},{"title":"MOLT Replicator Installation","sidebarTitle":"Installation","href":"/docs/molt/molt-replicator-installation"},{"title":"MOLT Replicator Commands and Flags","sidebarTitle":"Commands and Flags","href":"/docs/molt/replicator-flags"},{"group":"Userscripts","pages":[{"title":"Userscript Overview","sidebarTitle":"Overview","href":"/docs/molt/userscript-overview"},{"title":"Userscript Quickstart","sidebarTitle":"Quickstart","href":"/docs/molt/userscript-quickstart"},{"title":"Userscript API","sidebarTitle":"API","href":"/docs/molt/userscript-api"},{"title":"Userscript Cookbook","sidebarTitle":"Cookbook","href":"/docs/molt/userscript-cookbook"},{"title":"Userscript Metrics","sidebarTitle":"Metrics","href":"/docs/molt/userscript-metrics"}]},{"title":"MOLT Replicator Metrics","sidebarTitle":"Metrics","href":"/docs/molt/replicator-metrics"},{"title":"MOLT Replicator Best Practices","sidebarTitle":"Best Practices","href":"/docs/molt/molt-replicator-best-practices"},{"title":"MOLT Replicator Troubleshooting","sidebarTitle":"Troubleshooting","href":"/docs/molt/molt-replicator-troubleshooting"}]},{"title":"MOLT Verify","sidebarTitle":"Verify","href":"/docs/molt/molt-verify"}]},{"group":"Common Migration Approaches","pages":[{"group":"Classic Bulk Load Migration","pages":[{"title":"Classic Bulk Load Migration","sidebarTitle":"Overview","href":"/docs/molt/migration-approach-classic-bulk-load"},{"title":"Classic Bulk Load Migration from PostgreSQL","sidebarTitle":"From PostgreSQL","href":"/docs/molt/classic-bulk-load-postgres"},{"title":"Classic Bulk Load Migration from MySQL","sidebarTitle":"From MySQL","href":"/docs/molt/classic-bulk-load-mysql"},{"title":"Classic Bulk Load Migration from Oracle","sidebarTitle":"From Oracle","href":"/docs/molt/classic-bulk-load-oracle"}]},{"group":"Phased Bulk Load Migration","pages":[{"title":"Phased Bulk Load Migration","sidebarTitle":"Overview","href":"/docs/molt/migration-approach-phased-bulk-load"},{"title":"Phased Bulk Load Migration from PostgreSQL","sidebarTitle":"From PostgreSQL","href":"/docs/molt/phased-bulk-load-postgres"},{"title":"Phased Bulk Load Migration from MySQL","sidebarTitle":"From MySQL","href":"/docs/molt/phased-bulk-load-mysql"},{"title":"Phased Bulk Load Migration from Oracle","sidebarTitle":"From Oracle","href":"/docs/molt/phased-bulk-load-oracle"}]},{"group":"Delta Migration","pages":[{"title":"Delta Migration","sidebarTitle":"Overview","href":"/docs/molt/migration-approach-delta"},{"title":"Delta Migration from PostgreSQL","sidebarTitle":"From PostgreSQL","href":"/docs/molt/delta-migration-postgres"},{"title":"Delta Migration from MySQL","sidebarTitle":"From MySQL","href":"/docs/molt/delta-migration-mysql"},{"title":"Delta Migration from Oracle","sidebarTitle":"From Oracle","href":"/docs/molt/delta-migration-oracle"}]},{"group":"Phased Delta Migration with Failback Replication","pages":[{"title":"Phased Delta Migration with Failback Replication","sidebarTitle":"Overview","href":"/docs/molt/migration-approach-phased-delta-failback"},{"title":"Phased Delta Migration with Failback Replication from PostgreSQL","sidebarTitle":"From PostgreSQL","href":"/docs/molt/phased-delta-failback-postgres"},{"title":"Phased Delta Migration with Failback Replication from MySQL","sidebarTitle":"From MySQL","href":"/docs/molt/phased-delta-failback-mysql"},{"title":"Phased Delta Migration with Failback Replication from Oracle","sidebarTitle":"From Oracle","href":"/docs/molt/phased-delta-failback-oracle"}]}]},{"group":"Third-Party Migration Tools","pages":[{"title":"Migrate with AWS Database Migration Service (DMS)","sidebarTitle":"AWS DMS","href":"/docs/stable/aws-dms"},{"title":"Migrate and Replicate Data with Qlik Replicate","sidebarTitle":"Qlik Replicate","href":"/docs/stable/qlik"},{"title":"Migrate and Replicate Data with Striim","sidebarTitle":"Striim","description":null,"href":"/docs/stable/striim"},{"title":"Migrate and Replicate Data with Oracle GoldenGate","sidebarTitle":"Oracle GoldenGate","href":"/docs/stable/goldengate"},{"title":"Migrate Data with Debezium","sidebarTitle":"Debezium","description":null,"href":"/docs/stable/debezium"}]},{"group":"Migrate Data Types","pages":[{"title":"Migrate from CSV","href":"/docs/stable/migrate-from-csv"},{"title":"Migrate from Avro","href":"/docs/stable/migrate-from-avro"},{"title":"Migrate from Shapefiles","href":"/docs/stable/migrate-from-shapefiles"},{"title":"Migrate from OpenStreetMap","href":"/docs/stable/migrate-from-openstreetmap"},{"title":"Migrate from GeoJSON","href":"/docs/stable/migrate-from-geojson"},{"title":"Migrate from GeoPackage","href":"/docs/stable/migrate-from-geopackage"},{"title":"Import Performance Best Practices","href":"/docs/stable/import-performance-best-practices"}]}]},{"tab":"SQL","icon":"code","pages":[{"title":"SQL","href":"/docs/stable/sql-statements"}]},{"tab":"Reference","icon":"book","pages":[{"title":"Reference","href":"/docs/stable/architecture/glossary"}]},{"tab":"Cluster API","icon":"rocket","pages":[{"title":"Cluster API","href":"/docs/api/cluster"}]},{"tab":"Troubleshoot","icon":"bug","pages":[{"title":"Troubleshoot","href":"/docs/stable/troubleshooting-overview"}]}]},{"version":"v26.3","pages":[{"title":"v26.3","href":"/docs/v26.3/goldengate"}]},{"version":"v26.2","pages":[{"title":"v26.2","href":"/docs/v26.2/goldengate"}]},{"version":"v26.1","pages":[{"title":"v26.1","href":"/docs/v26.1/goldengate"}]},{"version":"v25.4","tag":"LTS","pages":[{"title":"v25.4","href":"/docs/v25.4/goldengate"}]},{"version":"v25.3","tag":"Unsupported","pages":[{"title":"v25.3","href":"/docs/v25.3/goldengate"}]},{"version":"v25.2","tag":"LTS","pages":[{"title":"v25.2","href":"/docs/v25.2/goldengate"}]},{"version":"v25.1","tag":"Unsupported","pages":[{"title":"v25.1","href":"/docs/v25.1/goldengate"}]},{"version":"v24.3","tag":"LTS","pages":[{"title":"v24.3","href":"/docs/v24.3/goldengate"}]},{"version":"v24.1","tag":"LTS","pages":[{"title":"v24.1","href":"/docs/v24.1/goldengate"}]},{"version":"v23.2","tag":"LTS","pages":[{"title":"v23.2","href":"/docs/v23.2/goldengate"}]},{"version":"v23.1","tag":"Unsupported","pages":[{"title":"v23.1","href":"/docs/v23.1/goldengate"}]}]},{"product":"Cloud Deployments","icon":"cloud","description":"Fully managed CockroachDB","pages":[{"title":"Cloud Deployments","href":"/docs/cockroachcloud"}]},{"product":"Releases","icon":"list","description":"Version history, support policy \u0026 advisories","pages":[{"title":"Releases","href":"/docs/releases"}]}]},"basePath":"","title":"Migrate and Replicate Data with Oracle GoldenGate - CockroachDB","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}