This
is Part 1 of a four-part blog series that demonstrates how to replicate
data from an on-premises Oracle Database to a database running on Oracle Cloud
Infrastructure (OCI) using Oracle GoldenGate.
In
this blog, we focus on configuring Oracle GoldenGate in the on-premises
source environment, including database prerequisites, user setup, and
preparing the source database for change data capture.
Oracle
Cloud Infrastructure (OCI) provides Bastion as a secure and convenient way to
access private resources without exposing them directly to the internet.
Recently, while trying to connect to a Windows Server 2012 instance via RDP
through a Bastion host, I encountered connection issues. Despite setting up SSH
port forwarding, the RDP session would not establish. This experience
highlighted an important consideration: while Bastion is ideal for many
scenarios, there are situations where it may not work, and OCI’s Console
Connection (VNC) can be a reliable alternative.
In
this blog, I’ll walk you through the root cause of the Bastion failure, explain
why it occurs, and guide you on how to use Console connections to access
Windows instances.
I
recently encountered the frustrating "ORA-30012: undo tablespace
'UNDOTBS1' does not exist or is of wrong type" while attempting
to convert my Data Guard Physical Standby into a writable Snapshot Standby for
an important testing cycle. In my setup, the Primary database was a RAC running
on Exadata Database Service on Dedicated Infrastructure, while the
Standby was a single-instance deployment on DBCS. This mixed
environment introduced subtle configuration differences, and one of those
differences caused the ORA-30012 failure during the snapshot conversion. In
this post, I’ll walk through how I investigated the issue, identified the
undo-related mismatch on the standby, and applied the correct fix to enable the
Snapshot Standby conversion successfully.
Recently, I encountered an issue on a DBCS Data Guard standby database where the alert log reported the error ORA-29771. After seeing this error, I checked the Data Guard status and noticed that the standby had developed a significant apply lag, even though redo apply was still running.
In this blog, I’ll explain the symptoms I observed, how I investigated the cause of the ORA-29771 error, and the steps I took to restore normal standby performance.
Running Oracle databases on Oracle Database Cloud Service (DBCS) usually provides a stable and well-automated environment, but unexpected platform-level issues can still occur—especially when critical OS-level components are modified or removed. Recently, I encountered a serious problem where a DBCS compute node failed to start the database, and the stack repeatedly threw an ORA-07445 error during the startup process.
At first glance, the issue looked like a typical software or patch conflict, but after deeper investigation, it turned out to be something far more fundamental: the swap mount point and related configuration had been cleared or removed on the compute instance. Without an active swap device, several Oracle background processes failed during initialization, resulting in the ORA-07445 crash.
In this blog, I’ll walk you through the symptoms, diagnostic steps, and the exact solution that restored the instance.
A bigfile tablespace is a tablespace
with a single, but large datafile. Traditional small file tablespaces, in
contrast, typically contain multiple datafiles, but the files cannot be as
large. Making SYSUAX, SYSTEM, and USER tablespaces bigfile by default will
benefit large databases by reducing the number of datafiles, thereby
simplifying datafile, tablespace, and overall global database management for
users.
For
decades, databases have excelled at storing and retrieving structured data, but
they struggled when it came to understanding similarity, context, or meaning.
Traditional SQL queries rely on exact matches and predefined relationships,
which makes searching unstructured or semantically rich data difficult. Oracle
23ai changes this model by introducing native AI Vector Search directly inside
the database. With vector embeddings stored and indexed alongside traditional
data, Oracle enables similarity-based searches that go beyond keywords and
exact values. This allows applications to find results based on meaning,
relevance, and proximity in vector space, making it possible to search text,
documents, images, and other complex data types in a far more intuitive and
powerful way, all using SQL.
AI Vector Search
Instead of searching for exact words, Vector Search allows you to
search for concepts. By using the new VECTOR data type, you store
"embeddings"—mathematical representations of data. This allows you to
perform a "similarity search." For example, if you search for
"staffing issues," the database can find documents about "low
headcount" or "recruitment delays" because it understands they
are conceptually related.
Example:
Assume you have a table called docs that stores documents along
with their vector embeddings.
To see the power of Vector Search, I need a larger dataset. With
only one row, the "closest" result is always the same one! Here is a script to quickly populate my docs table with 100 rows
of synthetic data. I’ve used a CONNECT BY loop and DBMS_RANDOM to generate
unique titles and random vector coordinates so that the similarity search
actually has something to compare.
INSERT INTO docs (id, title, embedding)
SELECT
level + 1,
'Tech Manual Part ' || (level + 1),
-- Generating a random 3-dimensional vector string like '[0.12, -0.45, 0.88]'
'[' ||
ROUND(DBMS_RANDOM.VALUE(-1, 1), 2) || ',' ||
ROUND(DBMS_RANDOM.VALUE(-1, 1), 2) || ',' ||
ROUND(DBMS_RANDOM.VALUE(-1, 1), 2) || ']'
FROM dual
CONNECT BY level <= 100;
COMMIT;
Let’s take a look at the table structure with this query:
set line 200;
col ID for 9999;
col TITLE for a20;
col EMBEDDING for a50;
set pagesize 5000;
select * from docs;
Instead of writing a complex text search, you can ask the database
to find documents that are conceptually similar to a given idea.
What is the following query doing
The vector [0.1, 0.5, -0.2] represents the
concept you are searching for (for example, something related to staffing
or workforce challenges).
VECTOR_DISTANCE calculates how close each
document’s embedding is to that concept using cosine similarity.
Documents with the smallest distance are
the most closely related in meaning.
The query returns the top 3 documents
that best match the idea, not based on keywords, but on similarity.
-- Searching for documents similar to a specific concept
SELECT title
FROM docs
ORDER BY VECTOR_DISTANCE(embedding, '[0.1, 0.5, -0.2]', COSINE)
FETCH FIRST 3 ROWS ONLY;
In practice, this means a search for “staffing issues” could return
documents talking about low headcount, hiring delays, or resource shortages,
even if the exact phrase never appears. The database understands the
relationship between these ideas.
Conclusion
AI
Vector Search in Oracle 23ai represents a major shift in how databases handle
modern data workloads. By embedding vector storage, indexing, and similarity
search directly into the database engine, Oracle eliminates the need for
external vector stores or separate AI infrastructure. This keeps data secure,
reduces architectural complexity, and improves performance by allowing vector
queries to run where the data already lives. As a result, Oracle 23ai enables
developers and data teams to build smarter, AI-driven applications using
familiar SQL tools while unlocking semantic search capabilities that were
previously difficult or costly to implement. Vector search is no longer an
add-on; it is now a core database capability.