How do you profile, test and monitor data quality in Oracle with TestGen?

DataOps TestGen connects to Oracle Database 12c and later through a read-only user, runs profiling, data tests, and monitors as SQL inside Oracle, and publishes scorecards on a data quality dashboard. It profiles 55 column characteristics, flags 32 hygiene issues, and generates 34 test types from the profile. It's Apache 2.0 and free for one connection.

Key points

  • DataOps TestGen has connected to Oracle since version 5.9.4, released March 27, 2026, and the TestGen product page lists Oracle Database 12c and later as of October 2026.
  • TestGen's Oracle user needs SELECT on the tables you want tested; ALL_TAB_COLUMNS and ALL_TABLES need no extra grant beyond CREATE SESSION, per DataKitchen's Access Requirements page.
  • TestGen's Oracle connection form asks for a service name, not a SID, as of October 2026.
  • Oracle pads CHAR values to their declared length, so when you migrate Oracle to another database, TestGen's length and text-hash comparison tests fail on a correct copy and get deactivated on the target.
  • Oracle Enterprise Data Quality profiles, cleanses, and matches data in its own repository; TestGen tests the data in place inside Oracle and does no matching or cleansing.

This page is the Oracle setup. If you’re moving off Oracle, the migration answer covers the procedure and the cloud migration answer covers the tests.

Oracle tables tend to be old, wide, and full of decisions nobody wrote down. Nobody hand-writes checks for every column of a decades-old order table, which is the case for generated tests.

Connect: a read-only user and a service name

TestGen authenticates to Oracle with a username and password. Access Requirements lists three things the user needs:

PermissionWhy TestGen needs it
SELECT on the tables in the target schemaProfile data, run tests, and collect monitor metrics
SELECT on ALL_TAB_COLUMNSDiscover tables, columns, and data types
SELECT on ALL_TABLESRead table metadata and approximate row counts

The two catalog views come free with CREATE SESSION and only show objects the user can already select, so the table grants are the real work:

CREATE USER testgen IDENTIFIED BY "choose-a-password";
GRANT CREATE SESSION TO testgen;
GRANT SELECT ON sales.orders TO testgen;
GRANT SELECT ON sales.order_lines TO testgen;

In the connection form, enter Host, Port, and the Service Name. There’s no SID field. Keep the user read-only: a custom SQL test runs whatever you write.

Profile: what Oracle’s types do to a profile

Profiling captures 55 characteristics per column and flags 32 kinds of hygiene issues. Data Profiling explains what each one means. Three Oracle habits show up fast.

A NUMBER column often stores codes, flags, or dates as digits. TestGen compares the declared type with what the values look like and suggests a better one. A CHAR column pads every value with spaces to its declared length, which matters the day you compare it with a copy on another database. And wide tables take longer to profile.

So schedule profiling off-hours, every two weeks to a month, as Scheduling recommends. Since 5.134.0 you can pause a long run during business hours and resume it later. Synonyms aren’t covered in the docs; point the table group at the schema that owns the tables.

Test: generated first, written second

TestGen generates 34 test types from the profile and gives you 19 business-rule and custom SQL types to configure yourself. Every test runs as SQL inside Oracle. Schedule runs in TestGen, or call POST /api/v1/test-suites/{test_suite_id}/test-runs from your own scheduler, as shown in Run Profiling and Tests. Personal access tokens are Enterprise. In open source, the call authenticates with an OAuth 2.1 client: a one-hour access token traded from a 30-day refresh token, which you renew by authorizing again in a browser.

Observe: monitors and the pipeline around them

Monitors watch freshness, volume, and schema on every table in the group, and you can add Metric monitors with your own SQL. Volume and Metric monitors learn thresholds from history. Alerts go to email, Slack, Microsoft Teams, or a webhook through Notifications. To see test results next to the jobs that loaded Oracle, connect TestGen to DataOps Observability.

Dashboard

Each table group gets a scorecard with a total score and a separate score for critical data elements (CDEs). Each hygiene issue has an Issue Report: a PDF with a summary, sample rows, and the SQL to reproduce it. Send that to the application team.

Walkthrough: the general steps

DataKitchen has no Oracle quickstart. These are the general steps from Manage Connections:

  1. Select Connections, click Add Connection, and pick Oracle.
  2. Enter Host, Port, Service Name, and the read-only user. Click Test Connection.
  3. Create a table group with the schema and table masks, then click Verify Access.
  4. Leave Run profiling, Generate and schedule tests, and Configure monitors on, set a schedule, then click Finish Setup.
TestGen Data Catalog showing one column's profile: declared and suggested data types, missing and duplicate value counts, case distribution, frequent values, and frequent patterns

That’s the Data Catalog on TestGen’s demo data, not an Oracle schema: one column’s profile, with the suggested data type next to the declared one.

TestGen vs Oracle Enterprise Data Quality

DataOps TestGenOracle Enterprise Data Quality
Where the work happensSQL inside OracleEDQ’s own repository, which Oracle’s docs say holds data along with gathered statistics
Tests34 types generated from the profileValidation rules you build in the Director client
Matching and cleansingNoneProfiling, auditing, cleansing, and matching, plus an Address Verification Server add-on
LicenseApache 2.0Commercial, pricing on request

Sources checked October 21, 2026. Pick EDQ when the job is matching customers, standardizing addresses, or building a golden record; TestGen doesn’t do those. Pick TestGen when the job is finding out what’s wrong in the tables you already have and catching it again tomorrow. DataKitchen’s EDQ comparison estimates EDQ at $150,000 to $400,000 a year for 10 users and 1,000 tables (DataKitchen’s estimate).

Pricing

The core profiling, testing, and monitoring engine is free and open source. Enterprise adds team access, security, Commercial Pharma tests, source-data controls for AI, and support. Open source covers one user, one database connection, one project, and unlimited tables. Enterprise is $100 per user per month plus $100 per database connection per month. Install open source TestGen, or see every database it supports.

Documentation: Access Requirements, Manage Connections, Data Profiling, Monitor Tables, Run Profiling and Tests, Verify a Data Migration, Oracle 5.9.4 release notes

Frequently asked questions

Short answers to the follow-up questions people ask next.

Does any data leave my environment?

No. TestGen runs its profiling, tests, and monitors as read-only SQL inside your Oracle database. It stores results and metadata in its own application database: statistics, test outcomes, hygiene findings, and, for display, each column's most frequent values and minimum and maximum text values. It never runs INSERT, UPDATE, DELETE, CREATE, ALTER, or DROP against Oracle.

Which Oracle versions does TestGen support?

Oracle Database 12c and later, per the TestGen product page in October 2026. Oracle support arrived in TestGen 5.9.4, released March 27, 2026, in both the open-source and Enterprise editions. You get the same profiling, 34 generated test types, and monitors that TestGen runs on Snowflake, SQL Server, or PostgreSQL.

Can TestGen test Oracle before we migrate to Snowflake or Databricks?

Yes. Since TestGen 5.134.0, released October 14, 2026, the Table Comparison generation set builds tests from the Oracle source profile, and you run them on the Snowflake or Databricks copy. Expect one known false alarm: Oracle pads CHAR values with spaces, so length and text-hash tests fail on a correct copy. Deactivate those tests on the target.

What grants does TestGen need in Oracle?

SELECT on the tables you want profiled and tested, plus CREATE SESSION. DataKitchen's Access Requirements page says ALL_TAB_COLUMNS and ALL_TABLES, which TestGen reads to discover columns and row counts, return metadata for any object the user can already select, so they need no extra grant. Authentication is username and password.

Do I enter a SID or a service name for Oracle in TestGen?

A service name. As of October 2026, TestGen's Oracle connection form has Host, Port, and Service Name fields, with no SID option. If your DBA hands you a SID, ask for the service name the listener registers for that database, then click Test Connection before you save.

Try it on your own data

DataOps TestGen is free and open source. Profile a table and generate its tests this afternoon.