EDB DMS agent parameter reference Innovation Release

DMS agent general configuration

These parameters define the information the EDB DMS agent requires to:

  • Access the Hybrid Manager (HM) instance and project that you're using for the migration
  • Connect to the source database and collect data or connect to the destination database and migrate data
Note

A DMS Agent instance can only run in either reader or writer mode.

DBCONFIG_ID

The name you assign to identify a source/destination. This name will later appear either as a source in the Migrate section in the Sources tab of the HM console or as a destination in the Destinations tab.

For the ID:

  • The maximum character length is 255 characters.
  • You can use lowercase and uppercase characters, numbers, underscores(_) and hyphens(-). Other special characters aren't supported.
  • The ID must be unique in a project. Don't use the same ID for two or more sources/destinations in the same project.

RUN_MODE

Determines how the EDB DMS agent runs. Set it to reader if you're using the DMS agent to connect HM with a migration source. Set it to writer if you're connecting HM with an external, self-managed migration destination.

Run the DMS agent in writer mode only if the destination for your migration is a self-managed Postgres database.

RW_SERVICE_HOST

Specifies the URL of the DMS that the EDB DMS agent uses to perform migrations. This value is deployment-scoped — the same URL applies across all projects within a given HM deployment. Obtain this value from the HM console Sources or Destinations migration pages.

To obtain your RW_SERVICE_HOST:

  1. In the HM console, select the project you want to use for migrations.

  2. In the left navigation select Migrate and then select Sources or Destinations.

    Both Sources and Destinations pages display the RW_SERVICE_HOST in a banner at the top of the page.

  3. Use the copy icon to get the value and use it for the configuration of your EDB DMS agent.

CREDENTIAL_DIRECTORY_PATH

The directory path of the credentials folder you downloaded from the HM console.

DMS agent database configuration

These parameters (DBCONFIG_DATABASES section) define a list of source/destination database information the EDB DMS agent requires to connect to the correct database for the migration.

You can configure the EDB DMS agent to migrate multiple databases. The DBCONFIG_DATABASES_0__TYPE section delimits the information for the first database. You can use DBCONFIG_DATABASES_1__TYPE to provide data for a second database. Add more sections to the EDB DMS agent (DBCONFIG_DATABASES_2__TYPE, DBCONFIG_DATABASES_3__TYPE) by increasing the index manually.

DBCONFIG_DATABASES_0__TYPE

The source/destination database type.

The EDB DMS agent supports ORACLE and POSTGRES as source database types (in reader mode), but only POSTGRES as a destination type (in writer mode).

DBCONFIG_DATABASES_0__HOSTNAME

The hostname of the source/destination database.

Note

For RDS databases, ensure the DBCONFIG_DATABASES_0__HOSTNAME value points to the RDS endpoint you can find under Connectivity & security in the AWS console. A redacted example is foo_database.cb7asw1xxxxx.eu-west-0.rds.amazonaws.com.

DBCONFIG_DATABASES_0__PORT

The port of the source/destination database.

DBCONFIG_DATABASES_0__CATALOG

The database name in the source/destination database server.

For Oracle sources:

  • CDB/PDB: use CDB_NAME/PDB_NAME (for example, ORCLCDB/ORCLPDB1). The agent splits on / to identify the CDB and PDB separately. Using only the PDB name causes it to be treated as the CDB, leaving the PDB unset.
  • Non-CDB: use the SID or service name (for example, ORCL)

DBCONFIG_DATABASES_0__USERNAME

The database username of the source/destination database. Use your dedicated migration user, it can be the same user you created for the EDB Postgres AI agent.

Note

For Oracle sources, use your dedicated migration user — not SYS or other privileged system accounts. See Preparing your Oracle source for instructions on creating the required migration user.

DBCONFIG_DATABASES_0__PASSWORD

The password for the database username of the source/destination database. You can set an environment variable for the password without specifying it in the script, but the variable must follow this format: export DBCONFIG_DATABASES_0__PASSWORD=password

DBCONFIG_DATABASES_0__RESOURCEID

User-defined identifier that associates this database with its registered counterpart in HM.

If you previously registered this database with the EDB Postgres AI agent, this value must match the resource_id set for this database in beacon_agent.yaml. This is how HM correlates the DMS agent source with the registered database — a mismatch will cause them to appear as separate, unrelated entries.

DBCONFIG_DATABASES_0__INCLUDELIST

Comma-separated list of schema.table tokens that controls which tables are available for migration. Use * as a wildcard for schema or table name (for example, SCHEMA1.* or *.TABLE1).

If absent or empty, all tables are included. If EXCLUDELIST is also set, exclusions take priority.

DBCONFIG_DATABASES_0__EXCLUDELIST

Comma-separated list of schema.table tokens for tables to always exclude from migration. Use * as a wildcard. Takes priority over INCLUDELIST — a table matching any exclude pattern is always excluded regardless of include rules.

DBCONFIG_DATABASES_0__SSLMODE

Controls the SSL/TLS behavior for the database connection. Accepted values:

  • STRICT — verify-full; requires a valid, trusted certificate
  • DEFAULT — require encryption but don't verify the certificate
  • WEAK — prefer encryption but allow plaintext fallback

DBCONFIG_DATABASES_0__SOCKETTIMEOUT

Socket timeout in seconds for the database connection. Used for dead connection detection. Default: 600 for writer mode, 60 for reader mode.

DBCONFIG_DATABASES_0__TCPKEEPALIVE

Enables TCP keepalive probes on the database connection. Default: true.

DBCONFIG_DATABASES_0__TCPKEEPALIVESIDLE

Seconds of inactivity before the first TCP keepalive probe is sent. Used during long-running writer operations such as PK application and post-snapshot deduplication. Default: 60.

DBCONFIG_DATABASES_0__TCPKEEPALIVESINTERVAL

Seconds between TCP keepalive retry probes. Default: 10.

DBCONFIG_DATABASES_0__TCPKEEPALIVESCOUNT

Maximum number of failed TCP keepalive probes before the connection is considered dead. Default: 6.

DBCONFIG_DATABASES_0__JDBCOPTIONS

Arbitrary JDBC driver properties to pass to the database connection, in key=value;key=value format. These are applied after defaults but before explicit settings like SSLMODE and SOCKETTIMEOUT.

Oracle examples:

  • Disable network encryption negotiation: oracle.net.encryption_client=REJECTED
  • Set session program name: v$session.program=DMSAgent

Postgres Large object migration parameters

LO_SNAPSHOT_ENABLED

Feature gate for the large object snapshot. When false (the default), no large object related operations run: the source is not scanned, no partitions are computed, and nothing is uploaded or published. Set to true to opt into the large object snapshot.

LO_SNAPSHOT_PARALLELISM

Number of parallel workers used for the large object snapshot.

For example the LO_SNAPSHOT_PARALLELISM = 20

If the agent mode is reader, there will be 20 workers COPY OUT the large object from source database and upload to object storage in parallel.

If the agent mode is writer, there will be 20 workers download the large object and COPY IN to the target database.

Recommandation:

Our performance benchmark test environment setting:

Deploy Source postgres database(8vCPU, 32G Mem) and Reader mode agent(16vCPU, 16G Mem) in one i4i.8xlarge EC2

Deploy Target epas database(16vCPU, 32G Mem) and Writer mode agent(4vCPU, 16G Mem) in another one i4i.8xlarge EC2

Tables setting:

Large objects counts: 6400

Large objects size: 32MB

Large objects expected partion size: 1024MB

Forign key paraent table size: 100000rows

Forign key child table size: 10000000rows

Integer Non-unique index size: 10000000rows

Large object agent setting:

Reader mode agent parallelism: 24

Writer mode agent parallelism: 32

How to calculate large object snapshot duration:

Search log in reader mode agent:

T1: 2026-08-27 06:25:44,632 INFO  [com.enterprisedb.transporter.cdcreader.largeobject.LargeObjectManager] (pool-11-thread-1) [LO snapshot] Start large object snapshot
T2: 2026-08-27 06:26:14,491 INFO  [com.enterprisedb.transporter.cdcreader.largeobject.LargeObjectManager] (pool-11-thread-1) [LO snapshot] Published large object manifest completion for topic org_beaconator4Appli_prj_xGQSUwMKDJZCxvhx.67590cea-a1df-11f1-a5fa-f66ef5321c73.large-object-manifest (partitionCount=16)

calculte the large object COPY OUT and upload time = T2 - T1

Search log in writer mode agent:

T3: 2026-08-27 06:25:44,725 INFO  [com.enterprisedb.transporter.cdcwriter.connector.Connector] (pool-9-thread-1) [LO snapshot] Launching large object manifest consumer for edb
T4: 2026-08-27 06:26:59,315 INFO  [com.enterprisedb.transporter.cdcwriter.connector.Connector] (lo-manifest-consumer-edb) [LO snapshot] Large object snapshot finished for edb

calculte the end to end time = T4 - T1

Result:

E2E durationSpeed (MB/s)Reader Peak CPUReader Peak MemWriter Peak CPUWriter Peak MemSource Peak CPUSource Peak MemTarget Peak CPUTarget Peak Mem
8min30s401.5747.90%35.10%49%12.80%38%75.10%39.50%25%

LO_SNAPSHOT_PARTITION_TARGET_MB

All the large object will be splited to different partition. This option is the your expected partion size in MB.

LO_SNAPSHOT_PARTITION_TARGET_LO_COUNT

All the large object will be splited to different partition. This option is the your expected large object count for each partion. Agent will compute the partition number using both LO_SNAPSHOT_PARTITION_TARGET_MB and LO_SNAPSHOT_PARTITION_TARGET_LO_COUNT then chose the larger one.

LO_SNAPSHOT_COMPRESSION_RATIO

Compression ratio used to estimate logical (decompressed) volume. Intentionally unset by default: when empty, the logical volume is estimated by sampling large objects at startup. When pinned, the value is used directly with no sampling.

LO_SNAPSHOT_SAMPLE_LO_COUNT

Number of large objects to decompress when estimating the compression ratio. A fixed count (not a percentage) bounds the sampling cost regardless of total LO volume (default: 200) Larger LO_SNAPSHOT_SAMPLE_LO_COUNT will increase the estimating time.

LO_SNAPSHOT_SAMPLE_TIMEOUT_SECONDS

Statement timeout (seconds) for the sampling query for estimating the compression ratio (default: 30) Increase this when agnet timeout during estimating the compression ratio

LO_SNAPSHOT_HIGH_VOLUME_WARN_LOGICAL_GB

Estimated logical (decompressed) large object volume, in GiB, at or above which the snapshot logs a high-volume WARN at startup. Set to 0 to disable the warning (default: 5120)

Optional parameters

METRICS_TASK_ENABLED

Enables performance metrics reporting from the DMS agent to HM. Set the environment variable to true to populate the Metrics tab for this agent's migrations: export METRICS_TASK_ENABLED=true. Recommended for all production migrations. See Metrics tab for more information.

FIPS_MODE

If you need to comply with FIPS standards, enable FIPS mode for the DMS Agent by setting the environment variable to true: export FIPS_MODE=true.

TRANSFORMATION_ENABLE_NULLCHAR_REPLACEMENT

Oracle-specific. Enables replacement of null characters (0x00) in text-based column types: VARCHAR2, LONG, CLOB, and NCLOB. Default: false.

Use together with TRANSFORMATION_NULLCHAR_REPLACEMENT to specify the replacement string.

TRANSFORMATION_NULLCHAR_REPLACEMENT

Oracle-specific. The string used to replace null characters (0x00) when TRANSFORMATION_ENABLE_NULLCHAR_REPLACEMENT is enabled. Defaults to an empty string.

TRANSFORMATION_ENABLE_SPECIAL_COLUMN_NAME_ENCODING

Oracle-specific. Enables encoding of special characters ($ and -) in column names. Default: false.

DBZ_*

Debezium property passthrough. You can override any Debezium connector property by prefixing it with DBZ_. For example, to set max.batch.size, use export DBZ_MAX_BATCH_SIZE=204800.

For a full list of supported properties, see the Debezium documentation:

QUARKUS_LOG_LEVEL

Sets the default log level for the entire Quarkus application, including all underlying frameworks and third-party libraries.

Avoid setting this to DEBUG or TRACE unless you need to diagnose issues within the entire application ecosystem. Using this method produces logs that are excessively verbose and difficult to analyze. Use QUARKUS_LOG_CATEGORY__COM_ENTERPRISEDB__LEVEL instead for focused debugging.

QUARKUS_LOG_CATEGORYCOM_ENTERPRISEDBLEVEL

Sets the log level specifically for classes within the com.enterprisedb package.

This is the recommended parameter for debugging. Set this parameter to DEBUG or TRACE to obtain detailed logging for the DMS agent's core logic (the components relevant to schema extraction, migration assessment, etc.). This isolates the useful output and excludes messages from third-party libraries.