Validate Database

The validate command checks that a database is ready to be the Source or the Target of a replication: that it can be reached and that the objects that prepare creates are there. It does not change anything. The result is Valid or Invalid, and the message tells what is missing. The rules that all the database commands share and the messages are on DATABASE CONFIGURATION COMMANDS.

A valid database is not necessarily a database where the processes can work: the command does not test the privileges that the Capture Process and the Apply Process need on the replicated tables (see Database Privileges). The Capture Process and the Apply Process check the objects again each time they start.

What is checked

DatabaseWhat validate checks
SQL Server SourceThat CDC is enabled for the database, that the schema repi, the database trigger, the tables, the change tables and the procedure of the Capture Process exist and, on a server with SQL Server Agent, that the Agent is running.
Oracle SourceThat the login can read the dictionary views that the Capture Process needs (the answer says No privileges were granted for the ones it cannot), that the database is in archive log mode with the minimal supplemental logging, that the user REPI and its tables exist and, with directlogmode=1, that the Oracle directories exist. With dbname the name of the container is checked too.
Target Database (SQL Server, Oracle, PostgreSQL, MySQL, Redshift)That the checkpoint tables and the procedures that the Apply Process uses exist.
Snowflake TargetThat the table REPI.APPLY_CKPT exists.
AWS S3 TargetThat AWS can be reached with the credentials: the buckets of the account are listed.

A valid result can carry warnings: a line for every object that only some functions need (the heartbeat, the data comparison) and that does not exist. prepare creates the missing objects. For an Oracle Source a warning also names the views and tables that the Capture Process reads although the login cannot (V$INSTANCE, GV$THREAD, GV$LOG_HISTORY and the XDB tables of binary XML columns) and the statements that grant them. The checks are listed in Database Privileges.

Command line (repcli)

repcli validate database={source|target} dbtype={oracle|mssql|postgresql|mysql|snowflake|redshift|s3} \
[connection parameters of the database] \
[other parameters of the database]
ParameterDescription
databaseThe role of the database: source or target. Required.
dbtypeThe type of the database: mssql or oracle for a Source Database, oracle, mssql, postgresql, mysql, snowflake, redshift or s3 for a Target Database. Required.
server, port, user, password, dbname and the other connection parametersHow to reach the database. They depend on the database: SQL Server as Source, Oracle as Source, Oracle as Target, SQL Server as Target, PostgreSQL as Target, MySQL as Target, Snowflake as Target, Redshift as Target and AWS S3 as Target. generatesql is accepted and ignored.

A SQL Server Source Database that is not prepared:

repcli validate database=source dbtype=mssql server=db-src.example.com port=1433 dbname=testDB user=repuser password=Passw0rd123
[Invalid]: Database is not prepared for capture: [CDC is not enabled: 1]

A prepared one. The lines that start with RESET LSN are explained in SQL Server as Source:

repcli validate database=source dbtype=mssql server=db-src.example.com port=1433 dbname=testDB user=repuser password=Passw0rd123
[Valid]: Database TESTDB is valid
 RESET LSN: 0x00000040000007AC0007 FILE:{E69BB026-FAAC-42F8-A3C1-F6EF8AD9E8B6}5 DATE:2026-10-19T18:33:04Z

A SQL Server Target Database that is not prepared, and a prepared one:

repcli validate database=target dbtype=mssql server=db-tgt.example.com port=1433 dbname=testDB user=repuser password=Passw0rd123
[Invalid]: Database is not prepared for apply: [repi schema does not exist: 1]
repcli validate database=target dbtype=mssql server=db-tgt.example.com port=1433 dbname=testDB user=repuser password=Passw0rd123
[Valid]: Database TESTDB is valid

A database that cannot be reached is not valid either. The message is the error of the driver or of the database:

repcli validate database=target dbtype=mssql server=db-none.example.com port=1433 dbname=testDB user=repuser password=Passw0rd123
[Invalid]: lookup db-none.example.com on 10.0.0.5:53: no such host

REST API

  • Endpoint: https://repstance_url/configure/database
  • Method: POST
  • Header: Content-Type: application/json and X-Token: token

The body of the request:

{
  "command": "validate",
  "parameters": [
    ["database", "source"],
    ["dbtype", "mssql"],
    ["server", "db-src.example.com"],
    ["port", "1433"],
    ["user", "repuser"],
    ["password", "Passw0rd123"],
    ["dbname", "testDB"]
  ]
}

The body of the answer. The element parameters is only in the answer for a SQL Server Source Database. It holds the choices that the database was prepared with: housekeeping and cdcenable, which is ALL when the database was prepared with “Full DDL Capture” in the Web UI and MIN otherwise. The Web UI uses them to fill the form:

{
  "Status": "Valid",
  "Message": "Database TESTDB is valid\n RESET LSN: 0x00000040000007AC0007 FILE:{E69BB026-FAAC-42F8-A3C1-F6EF8AD9E8B6}5 DATE:2026-10-19T18:33:04Z",
  "parameters": [
    ["housekeeping", "0"],
    ["cdcenable", "ALL"]
  ]
}

A database that is not prepared is answered with the status Invalid, and the HTTP code is 200:

{
  "Status": "Invalid",
  "Message": "Database is not prepared for capture: [CDC is not enabled: 1]"
}
HTTP codeMeaning
200The request is valid and the command has been carried out. The body has the status Completed or Failed (prepare and remove) or Valid or Invalid (validate), and the message. A command that cannot do its work, for example because the database cannot be reached, is also answered with 200 and the status Failed or Invalid: always read the status.
401The token is invalid.
422The request cannot be carried out: the JSON, the command or a parameter is wrong. The body has the status Failed and the message, for example Missed port parameter.

Web UI

Click “Test connection” in the dialog “Database Settings” of a Capture Process or an Apply Process. The Web UI can validate only the database that is entered in the dialog. The result is shown under the buttons, green for Valid and red for Invalid:

Web UI, Database Settings: filled source form with the Test connection button highlighted
 

When the database is not prepared the buttons “Prepare for Replication” and “Show Prepare SQL” appear (see Prepare Source Database and Prepare Target Database):

Web UI, Database Settings: not prepared, Prepare for Replication and Show Prepare SQL highlighted