These are the known issues, limitations, and notes for:
Data migration limitations
Case sensitivity in object names
Tip
Resolved in HM versions 2025.11 and later.
EDB DMS doesn’t currently support migrating schemas, tables, and columns that have case-sensitive names.
Upgraded destinations clusters
You can't use clusters provisioned in Hybrid Manager (HM) versions 1.2 and earlier as migration destinations after you upgrade the HM instance to version 1.3 or later. You must create a new cluster in the upgraded environment to use it as a valid migration destination.
Considerations and limitations for multiple migrations to a single destination
The DMS supports running multiple data migrations from one source to one destination database, but certain restrictions apply.
Table usage: You can actively use each destination table only in a single migration at any given time.
Unique resourceID (applies to migrations to external destinations): When running multiple migrations to an external destination, you must assign a unique resourceID to each instance of the EDB DMS agent in writer mode with the
DBCONFIG_DATABASES_0__RESOURCEID=${Resource_ID}parameter. Setting this parameter prevents concurrent migrations from attempting to use the same table simultaneously, which can cause data loss or duplication.Note
This resourceID requirement doesn't apply to migrations targeting HM-managed Postgres instances.
Performance planning (applies to migrations to external destinations): While performance generally remains strong with the recommended specifications, if you run five or more migrations to the same external destination database, to prevent resource contention, consider allocating additional CPU, memory, and volume IOPS/throughput to the destination. This is especially important if the destination is an external database.
Resource management: Each migration job requires a dedicated, non-concurrent use of the necessary DMS agent components.
DMS agent in reader mode (source): Don't use a single running instance of the EDB DMS agent in reader mode for more than one concurrent migration from the same source database. The HM console removes a source database from the available list once it's active in a migration. However, you can use a single DMS agent in reader mode for subsequent migrations or for concurrent migrations from different source databases.
DMS agent in writer mode (external destination): Each migration requires its own instance of the DMS agent in writer mode, even if the migration shares the same destination as another migration.
Postgres-specific schema object types aren't migrated by DMS at schema migration time
Tip
Resolved in HM versions 2026.5 and later.
Description: Postgres schema migration support is limited to simple databases with tables only. DMS is currently unable to migrate some object types and has issues with the order in which objects are migrated.
Workaround: Migrate the schema manually and use DMS in data-only migration mode.
Oracle limitations
Unsupported Oracle data types
A limited number of Oracle data types and features aren't supported by EDB DMS.
See the Debezium documentation for detailed comments on supported data types.
Unsupported Oracle data types include:
- BFILE
- LONG
- LONG RAW
- RAW
- UROWID
- User-defined types (REF, Varrays, Nested Tables)
- ANYDATA
- XMLTYPE
- Spatial
EDB DMS supports replicating Oracle tables that contain BLOB, CLOB, or NCLOB columns only if these also have the primary key constraint. If the tables don't have the primary key constraint, the streaming replication supports only INSERT operations.
BINARY_FLOAT and BINARY_DOUBLE types in Oracle that might contain Nan, +INF, and -INF values aren't supported by EDB DMS.
EDB DMS doesn't support values containing a null character (0x00) for text field types like VARCHAR and CLOB in Oracle.
Oracle 21c databases
The DMS agent supports migrating Oracle 21c databases. However, Migration Portal doesn't. This means that to migrate 21c databases, you must manually perform the schema migration.
Oracle XE compatibility restrictions
Oracle XE (Express Edition) does not support enabling supplemental logging at the database level. Because this is a core requirement for Change Data Capture (CDC), EDB DMS is not fully compatible with Oracle XE as a source database.
Expected errors — When using Oracle XE, the DMS Agent (reader) will typically fail and log exceptions similar to - Debezium consumer $NAME stopped with exception: an exception occurred in the change event producer. This connector will be stopped.
Limited functionality — Only snapshot-only migrations are expected to function. Even during successful snapshots, Debezium error messages may still appear in the logs.
Usage policy — Snapshot-only migrations on Oracle XE are suitable only for testing or evaluation purposes. This configuration is not supported for production use cases.
Unqualified object references in migrated PL/SQL bodies
Description: When DMS translates Oracle triggers, procedures, functions, and packages to EDB Postgres Advanced Server (EPAS), the translated PL/SQL bodies retain unqualified object references from the Oracle source.
Oracle and EPAS resolve unqualified names differently:
- Oracle: Unqualified references inside a PL/SQL body resolve to the definer's schema (the schema that owns the object), regardless of who invokes it.
- EPAS: Unqualified references resolve at execution time using the caller's
search_path. If the calling session'ssearch_pathdoesn't include the migrated schema, references fail at runtime.
The schema migration itself succeeds because the DMS agent sets search_path explicitly when executing each DDL statement. The failure surfaces after migration, when applications or users invoke migrated PL/SQL objects from sessions with a different search_path.
This limitation applies only to Oracle to EPAS migrations with a migration scope of Schema only or Schema and data. It doesn't affect Data only migrations, where schema objects are created by the customer before migration runs and DMS doesn't generate or translate any PL/SQL bodies.
Example:
This Oracle trigger references test_orders_seq without a schema prefix:
CREATE TRIGGER "DEBEZIUM"."TEST_ORDERS_TRG" BEFORE INSERT ON test_orders_legacy FOR EACH ROW BEGIN IF :NEW.order_id IS NULL THEN SELECT test_orders_seq.NEXTVAL INTO :NEW.order_id FROM dual; END IF; END;
The DDL produced by DMS on EPAS preserves the unqualified reference:
CREATE OR REPLACE TRIGGER TEST_ORDERS_TRG BEFORE INSERT ON test_orders_legacy FOR EACH ROW BEGIN IF :NEW.order_id IS NULL THEN SELECT test_orders_seq.NEXTVAL INTO :NEW.order_id FROM dual; END IF; END;
After migration, behavior varies by caller:
- Session with
search_path = debezium: trigger executes successfully. - Session with default
search_path = "$user", public: fails withsequence "test_orders_seq" does not exist.
Workarounds:
Choose one of the following approaches based on your environment:
Schema-qualify the DDL (recommended): Before cutover, review all translated trigger, procedure, function, and package bodies and prefix unqualified object references with the source schema name. Apply the modified DDL to the destination. This approach removes the runtime dependency on
search_path.The following fix schema-qualifies the sequence reference inside the trigger body. The table reference in the trigger header is also qualified to make the object ownership explicit:
CREATE OR REPLACE TRIGGER TEST_ORDERS_TRG BEFORE INSERT ON debezium.test_orders_legacy FOR EACH ROW BEGIN IF :NEW.order_id IS NULL THEN SELECT debezium.test_orders_seq.NEXTVAL INTO :NEW.order_id FROM dual; END IF; END;
Set a default
search_pathfor the role or database: Set a persistent default so new sessions automatically include the migrated schema insearch_path:ALTER ROLE app_user SET search_path = debezium, public; -- or, database-wide: ALTER DATABASE mydb SET search_path = debezium, public;
Set
search_pathat connection time: Configure all application connections to include the migrated schema insearch_path, either in the connection string (options=-c search_path=debezium,public) or as the first statement after connecting:SET search_path = debezium, public;
Ad-hoc sessions that connect without an explicit search_path (DBA sessions, monitoring tools, or BI clients) remain at risk of failures regardless of which workaround you choose.
Postgres limitations
Unsupported domain type definitions in columns
Tip
Partially resolved in HM versions 2026.4 and later.
The EDB DMS doesn't support migrating tables with columns that have user-defined domains as data types for the following data type domains:
- DATE (Support added in Innovation Release HM 2026.4)
- TIME (Support added in Innovation Release HM 2026.4)
- TIMESTAMP (Support added in Innovation Release HM 2026.4)
- INTERVAL (Support added in Innovation Release HM 2026.4)
- UUID (Support added in Innovation Release HM 2026.4)
- ENUM
- JSON (Support added in Innovation Release HM 2026.4)
- XML (Support added in Innovation Release HM 2026.4)
- POINT (Support added in Innovation Release HM 2026.4)
- LTREE
- TSVECTOR
TSVECTOR type migration workaround
Although we don't support migrating TSVECTOR type columns, you can apply this workaround to enable their migration. For example, this messages table in source database contains a TSVECTOR column: