Case q13 · dispute
Some posts say DBMS_JOB was removed in 19c. True?
Expected: No: deprecated, still functional (Oracle doc) vs community 'removed' claims — present both and the resolution (jobs are converted to scheduler jobs under the hood; package still works).
With the Knowledge Base available, the agent read prose instead of the dispute documents. A rule was added: query disputes before reading Knowledge Base prose. Both Sanity conditions were re-run; the baselines are the frozen runs. The re-run is shown at the bottom; the frozen totals are not updated.
No tools
larger model · 1 turn · 16 s · 16.4k in / 1.7k out✓ verdict ✗ grounded ✗ cited
Grader: Correct verdict; unverified MOS note and JOB_QUEUE_PROCESSES claim
Answer
No, DBMS_JOB was not removed in 19c. It has been deprecated since 12.2 and is still in 19c, 21c and 23ai. What changed in 19c is how it works underneath.
What changed in 19c
- It runs on the Scheduler now. Each
DBMS_JOB.SUBMITcall creates a DBMS_SCHEDULER job behind the scene. When you upgrade to 19c, existing DBMS_JOB jobs are converted to Scheduler jobs automatically. - The old API still works.
DBMS_JOB.SUBMIT,RUN,BROKEN,REMOVEand similar calls still run, andDBA_JOBS/USER_JOBSstill return data. - Jobs still wait for COMMIT. Oracle kept the old behavior where a submitted job doesn't exist until you commit.
DBMS_SCHEDULER.CREATE_JOBnormally commits on its own, so this is a real difference. - You need the
CREATE JOBprivilege. Users that submit jobs through DBMS_JOB must have it, or submissions fail with ORA-27486. This is the most common problem after an upgrade. JOB_QUEUE_PROCESSESmust be greater than 0, because DBMS_JOB now depends on the Scheduler's job slaves.
Why people think it was removed
- Oracle marks it "deprecated" and tells you to use DBMS_SCHEDULER. People often read "deprecated" as "desupported."
- The upgrade guides for 19c and later describe the job conversion, which can look like removal at a glance.
What this means for an Azure migration
- Oracle stays Oracle (Oracle Database@Azure, or Oracle on Azure VMs): DBMS_JOB keeps working. Still, plan to rewrite the jobs with DBMS_SCHEDULER, since Oracle may desupport DBMS_JOB in a future release.
- Moving to a different database (Azure SQL / SQL MI or Azure Database for PostgreSQL): Neither DBMS_JOB nor DBMS_SCHEDULER exists there. Rebuild the jobs with SQL Server Agent (SQL MI), Elastic Jobs (Azure SQL DB), or
pg_cron(PostgreSQL Flexible Server). If you use SSMA or ora2pg, check their reports: they flag these calls but don't convert them into working schedules.
Sources (all from memory, not checked this session, so verify the exact wording):
- Oracle 19c Upgrade Guide, sections on behavior changes and deprecated features ("DBMS_JOB jobs converted to DBMS_SCHEDULER jobs"): https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/
- Oracle 19c PL/SQL Packages and Types Reference, DBMS_JOB chapter: https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_JOB.html
- My Oracle Support note 2380601.1 (DBMS_JOB behavior change in 19c). Treat the note number as approximate and search MOS by title if it doesn't match.
Keyword search
larger model · 1 turn · 10 s · 19.0k in / 1.1k out✓ verdict ✓ grounded ✓ cited
Grader: Correct; Ask TOM origin plus CREATE JOB resolution, well sourced
8 keyword-search passages
dispute_dbms-job-deprecated-vs-removedscore 14.984source_oracle-upgrd-19-changesscore 11.535source_oracle-plsql-ref-19-dbms-jobscore 10.268feature_dbms-jobscore 7.579mapping_dbms-job--sql-agent-miscore 7.548feature_oracle-multimediascore 7.309source_mikedietrich-dbms-job-19cscore 7.079source_oracle-base-dbms-job-19cscore 6.776
Answer
Verdict: False. DBMS_JOB was not removed in 19c. It has been deprecated since 12.2 and still works, including in 26ai. What changed in 19c is how it runs underneath and which privilege it needs.
What changed in 19c
- It now runs on the Scheduler. An upgrade to 19c re-creates existing DBMS_JOB jobs as Scheduler jobs. DBMS_JOB is kept as a compatibility wrapper over DBMS_SCHEDULER. New submissions show up as
DBMS_JOB$_nrows inDBA_SCHEDULER_JOBS[1][4][7][8]. - It needs the CREATE JOB privilege. A schema without it gets ORA-27486 when it calls
DBMS_JOB.SUBMIT. This is behind most "stopped working after upgrade" reports, such as the Ask TOM thread about a 12.1 → 19.8 upgrade. People passed that on as "removed in 19c" [1][7][8]. - Submission is still transactional. A submitted job only takes effect on COMMIT [8].
Oracle's official status
- The 19c PL/SQL Packages reference says DBMS_JOB has been superseded by DBMS_SCHEDULER and that "support may be removed in a future release." That means it is deprecated, not desupported [3].
- No desupport has been announced through 26ai [1][4][7].
- The 19c Upgrade Guide covers this under Behavior Changes ("Support for DBMS_JOB"). It is not in the Desupported Features list [2].
What this means for an Azure migration The fact that DBMS_JOB still works doesn't change the migration plan, but nothing forces you to move off it by a deadline. The job bodies are PL/SQL, so you still have to move them to one of these [1][5]:
- SQL Server Agent on Azure SQL Managed Instance
- Elastic Jobs on Azure SQL Database
- pg_cron on PostgreSQL
For Managed Instance, take your job list from DBA_JOBS, convert each job's WHAT block to a stored procedure with SSMA, and turn the INTERVAL expression into an Agent schedule. Two things won't carry over and need re-testing: jobs that disappear when the submitting transaction rolls back, and failure handling that uses the BROKEN flag [5].
Sources
- Oracle 19c Upgrade Guide: https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/oracle-database-changes-deprecations-desupports.html
- Oracle 19c DBMS_JOB reference: https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_JOB.html
- Mike Dietrich: https://mikedietrichde.com/2019/05/24/dbms_job-behavior-change-in-oracle-19c-during-upgrade/
- ORACLE-BASE: https://oracle-base.com/articles/19c/dbms_job-jobs-converted-to-dbms_scheduler-jobs-19c
Sanity Context · GROQ
smaller model · 5 turns · 28 s · 36.0k in / 2.5k out✓ verdict ✓ grounded ✓ cited
Grader: Presents both sides and the resolution, fully cited
4 tool calls
- initial_context on groq · 4,126 chars back
- groq_query on groq · 1,654 chars back
*[_type=="oracleFeature" && (slug.current match "*dbms_job*" || name match "*DBMS_JOB*")]{_id, name, slug, category, introducedIn, deprecatedIn, desupportedIn, oracleReplacement, reviewStatus, "sources": sources[]->{title,url,publisher}} - groq_query on groq · 7,424 chars back
*[_type=="mapping" && oracleFeature->slug.current=="dbms-job"]{_id, fidelity, effort, rationale, appliesToOracleVersions, azureTarget->{name}, "sources": sources[]->{title,url,publisher}, "caveats": *[_type=="caveat" && references(^._id)]{severity, statement, appliesTo, firsthand, evidence->{title,url,publisher}}} - groq_query on groq · 3,110 chars back
*[_type=="dispute" && (claimA->mapping->oracleFeature->slug.current=="dbms-job" || claimB->mapping->oracleFeature->slug.current=="dbms-job" || title match "*DBMS_JOB*")]{_id, title, whatDisagrees, resolution, claimA->{statement, evidence->{title,url,publisher}}, claimB->{statement, evidence->{title,url,publisher}}, resolvedBy->{title,url,publisher}}
Answer
Verdict: False. DBMS_JOB was not removed in 19c — it is deprecated (since 12.2) but still functional through 26ai. There's a recorded dispute over exactly this misconception.
Feature facts — DBMS_JOB: deprecatedIn = 12.2, desupportedIn = not set (no desupport recorded), Oracle-side replacement recorded as DBMS_SCHEDULER. DBMS_JOB (PL/SQL Packages and Types Reference 19c), Deprecated Features in Oracle Database 12c Release 2 (12.2)
Dispute on record: "Did DBMS_JOB stop working in 19c?"
- Claim A (ORACLE-BASE, community): "DBMS_JOB is deprecated but continues to function in 19c and later: each DBMS_JOB.SUBMIT creates a paired DBMS_SCHEDULER job named DBMS_JOB$_n, existing jobs are converted during upgrade, and the legacy interface remains a supported wrapper over the scheduler." — ORACLE-BASE: DBMS_JOB jobs converted to DBMS_SCHEDULER jobs in Oracle Database 19c
- Claim B (Ask TOM thread, community): A poster reported DBMS_JOB.SUBMIT "not working anymore" after a 12.1.0.2 → 19.8 upgrade, framing that circulates as "removed in 19c." — Ask TOM: dbms_job.submit ... not working anymore in 19c
- What disagrees: Oracle's own docs say deprecated-but-functional with jobs auto-converted to Scheduler; the Ask TOM thread's framing suggests removal.
- Resolution (resolved by DBMS_JOB (PL/SQL Packages and Types Reference 19c), Oracle): Both observations are compatible. From 19c, a schema calling DBMS_JOB.SUBMIT needs the new CREATE JOB privilege or it fails with ORA-27486 — that privilege change, not removal, explains most "stopped working" reports. The package remains deprecated and functional through 26ai. For Azure migration purposes the practical conclusion is unchanged regardless: job bodies still need to be re-homed, but the timeline isn't forced by removal.
Related caveats for context (all apply to 19c/21c/23ai unless noted):
- CREATE JOB privilege requirement causing ORA-27486 is the "usual reason" for reports of DBMS_JOB "no longer working." — ORACLE-BASE: DBMS_JOB jobs converted to DBMS_SCHEDULER jobs in Oracle Database 19c
- Upgrading to 19c converts existing DBMS_JOB jobs into DBMS_SCHEDULER jobs (tracked in
scheduler$_dbmsjob_map); "Oracle had announced no desupport" at time of writing. — Mike Dietrich: DBMS_JOB behavior change in Oracle 19c during upgrade - DBMS_JOB.SUBMIT remains transactional (rolled back with caller's transaction) even in 19c — a behavior difference from Azure targets (Elastic Jobs, SQL Agent, pg_cron) that commit immediately. — Connor McDonald: DBMS_JOB - the joy of transactions
Azure migration implication (unaffected by the removal myth): DBMS_JOB maps with partial fidelity, effort M, to SQL Server Agent (Managed Instance), Azure SQL Elastic Jobs, or pg_cron (PostgreSQL Flexible Server) — Elastic jobs in Azure SQL Database, T-SQL differences between SQL Server and Azure SQL Managed Instance, pg_cron README.
GROQ + Knowledge Base
smaller model · 5 turns · 19 s · 34.4k in / 1.3k out✓ verdict ✓ grounded ✗ cited
Grader: Correct and mentions conversion, but omits the community 'removed' side
4 tool calls
- initial_context on groq · 4,126 chars back
- initial_context on kb · 7,679 chars back
- groq_query on groq · 3,270 chars back
*[_type=="oracleFeature" && (slug.current match "*dbms_job*" || name match "*DBMS_JOB*")]{ _id, name, "slug": slug.current, category, introducedIn, deprecatedIn, desupportedIn, oracleReplacement, reviewStatus, "sources": sources[]->{title, url}, summary } - knowledge_base_read on kb · 7,982 chars back
{ "knowledgeBase": "kb6MdvV3ZA3Q", "paths": [ "feature_migration/scheduler_jobs", "oracle_concepts/terminology" ] }
Answer
Verdict: False. DBMS_JOB was not removed in 19c — it was deprecated in 12.2 and remains present (not desupported) as of 26ai.
Facts (dataset):
- DBMS_JOB is marked deprecated in Oracle Database 12.2, with DBMS_SCHEDULER as the Oracle-side replacement — per Deprecated Features in Oracle Database 12c Release 2 (12.2).
- The dataset's
desupportedInfield for DBMS_JOB is null — i.e., it has not been desupported as of 26ai. Per Oracle Database Changes, Desupports, and Deprecations (Upgrade Guide 19c) and Support for DBMS_JOB (Administrator's Guide 19c), starting in 19c an upgrade re-creates existing DBMS_JOB jobs as Scheduler jobs, and DBMS_JOB survives only as a compatibility interface — this is a behavioral change on upgrade, not removal of the package. - The DBMS_JOB (PL/SQL Packages and Types Reference 19c) source states the package has been superseded and support "may be removed in a future release" — future tense, confirming it was still present/supported in 19c.
Distinction that likely causes the confusion (per Migration Terminology and Fidelity Levels, dataset): "deprecated" means still fully supported but flagged to plan away from; "desupported" means no further fixes and code may be removed entirely. DBMS_JOB in 19c hit only the "jobs get re-created as Scheduler jobs on upgrade" behavior — it did not cross into desupported status.
No dispute record exists in the dataset on this specific claim. If you have a specific post making the "removed in 19c" claim, I don't have it as a source to reconcile against — but per the oracleFeature record itself, that claim doesn't match the tracked desupportedIn field.
After the fix
No tools
larger model · 1 turn · 16 s · 16.4k in / 1.7k out✓ verdict ✗ grounded ✗ cited
Grader: Correct verdict, but sources from memory; MOS note likely invented.
Answer
No, DBMS_JOB was not removed in 19c. It has been deprecated since 12.2 and is still in 19c, 21c and 23ai. What changed in 19c is how it works underneath.
What changed in 19c
- It runs on the Scheduler now. Each
DBMS_JOB.SUBMITcall creates a DBMS_SCHEDULER job behind the scene. When you upgrade to 19c, existing DBMS_JOB jobs are converted to Scheduler jobs automatically. - The old API still works.
DBMS_JOB.SUBMIT,RUN,BROKEN,REMOVEand similar calls still run, andDBA_JOBS/USER_JOBSstill return data. - Jobs still wait for COMMIT. Oracle kept the old behavior where a submitted job doesn't exist until you commit.
DBMS_SCHEDULER.CREATE_JOBnormally commits on its own, so this is a real difference. - You need the
CREATE JOBprivilege. Users that submit jobs through DBMS_JOB must have it, or submissions fail with ORA-27486. This is the most common problem after an upgrade. JOB_QUEUE_PROCESSESmust be greater than 0, because DBMS_JOB now depends on the Scheduler's job slaves.
Why people think it was removed
- Oracle marks it "deprecated" and tells you to use DBMS_SCHEDULER. People often read "deprecated" as "desupported."
- The upgrade guides for 19c and later describe the job conversion, which can look like removal at a glance.
What this means for an Azure migration
- Oracle stays Oracle (Oracle Database@Azure, or Oracle on Azure VMs): DBMS_JOB keeps working. Still, plan to rewrite the jobs with DBMS_SCHEDULER, since Oracle may desupport DBMS_JOB in a future release.
- Moving to a different database (Azure SQL / SQL MI or Azure Database for PostgreSQL): Neither DBMS_JOB nor DBMS_SCHEDULER exists there. Rebuild the jobs with SQL Server Agent (SQL MI), Elastic Jobs (Azure SQL DB), or
pg_cron(PostgreSQL Flexible Server). If you use SSMA or ora2pg, check their reports: they flag these calls but don't convert them into working schedules.
Sources (all from memory, not checked this session, so verify the exact wording):
- Oracle 19c Upgrade Guide, sections on behavior changes and deprecated features ("DBMS_JOB jobs converted to DBMS_SCHEDULER jobs"): https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/
- Oracle 19c PL/SQL Packages and Types Reference, DBMS_JOB chapter: https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_JOB.html
- My Oracle Support note 2380601.1 (DBMS_JOB behavior change in 19c). Treat the note number as approximate and search MOS by title if it doesn't match.
Keyword search
larger model · 1 turn · 10 s · 19.0k in / 1.1k out✓ verdict ✓ grounded ✓ cited
Grader: Correct; covers dispute and resolution. Cites [5],[7],[8] not listed.
8 keyword-search passages
dispute_dbms-job-deprecated-vs-removedscore 14.984source_oracle-upgrd-19-changesscore 11.535source_oracle-plsql-ref-19-dbms-jobscore 10.268feature_dbms-jobscore 7.579mapping_dbms-job--sql-agent-miscore 7.548feature_oracle-multimediascore 7.309source_mikedietrich-dbms-job-19cscore 7.079source_oracle-base-dbms-job-19cscore 6.776
Answer
Verdict: False. DBMS_JOB was not removed in 19c. It has been deprecated since 12.2 and still works, including in 26ai. What changed in 19c is how it runs underneath and which privilege it needs.
What changed in 19c
- It now runs on the Scheduler. An upgrade to 19c re-creates existing DBMS_JOB jobs as Scheduler jobs. DBMS_JOB is kept as a compatibility wrapper over DBMS_SCHEDULER. New submissions show up as
DBMS_JOB$_nrows inDBA_SCHEDULER_JOBS[1][4][7][8]. - It needs the CREATE JOB privilege. A schema without it gets ORA-27486 when it calls
DBMS_JOB.SUBMIT. This is behind most "stopped working after upgrade" reports, such as the Ask TOM thread about a 12.1 → 19.8 upgrade. People passed that on as "removed in 19c" [1][7][8]. - Submission is still transactional. A submitted job only takes effect on COMMIT [8].
Oracle's official status
- The 19c PL/SQL Packages reference says DBMS_JOB has been superseded by DBMS_SCHEDULER and that "support may be removed in a future release." That means it is deprecated, not desupported [3].
- No desupport has been announced through 26ai [1][4][7].
- The 19c Upgrade Guide covers this under Behavior Changes ("Support for DBMS_JOB"). It is not in the Desupported Features list [2].
What this means for an Azure migration The fact that DBMS_JOB still works doesn't change the migration plan, but nothing forces you to move off it by a deadline. The job bodies are PL/SQL, so you still have to move them to one of these [1][5]:
- SQL Server Agent on Azure SQL Managed Instance
- Elastic Jobs on Azure SQL Database
- pg_cron on PostgreSQL
For Managed Instance, take your job list from DBA_JOBS, convert each job's WHAT block to a stored procedure with SSMA, and turn the INTERVAL expression into an Agent schedule. Two things won't carry over and need re-testing: jobs that disappear when the submitting transaction rolls back, and failure handling that uses the BROKEN flag [5].
Sources
- Oracle 19c Upgrade Guide: https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/oracle-database-changes-deprecations-desupports.html
- Oracle 19c DBMS_JOB reference: https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_JOB.html
- Mike Dietrich: https://mikedietrichde.com/2019/05/24/dbms_job-behavior-change-in-oracle-19c-during-upgrade/
- ORACLE-BASE: https://oracle-base.com/articles/19c/dbms_job-jobs-converted-to-dbms_scheduler-jobs-19c
Sanity Context · GROQ
smaller model · 9 turns · 32 s · 146.1k in / 2.7k out✓ verdict ✓ grounded ✓ cited
Grader: Deprecated, functional; presents both claims and the privilege-based resolution.
8 tool calls
- ToolSearch on · 0 chars back
select:mcp__sanity-groq__initial_context,mcp__sanity-groq__groq_query,mcp__sanity-groq__array_field_reader,mcp__sanity-groq__schema_explorer
- initial_context on groq · 4,126 chars back
- groq_query on groq · 1,568 chars back
*[_type=="oracleFeature" && (name match "DBMS_JOB*" || slug.current match "*dbms-job*" || slug.current match "*dbms_job*")]{_id, name, "slug": slug.current, category, introducedIn, deprecatedIn, desupportedIn, oracleReplacement, reviewStatus, "sources": sources[]->{title, url}} - groq_query on groq · 3,514 chars back
*[_type=="mapping" && oracleFeature._ref=="feature_dbms-job"]{_id, fidelity, effort, rationale, appliesToOracleVersions, "azureTarget": azureTarget->{name}, "sources": sources[]->{title,url}} - array_field_reader on groq · 139 chars back
{ "mode": "outline", "documentId": "feature_dbms-job", "field": "obituary" } - array_field_reader on groq · 1,463 chars back
{ "mode": "range", "documentId": "feature_dbms-job", "field": "obituary", "range": { "startIndex": 0, "endIndex": 3 } } - groq_query on groq · 3,594 chars back
*[_type=="caveat" && mapping._ref in ["mapping_dbms-job--elastic-jobs","mapping_dbms-job--pg-cron","mapping_dbms-job--sql-agent-mi"]]{_id, severity, statement, appliesTo, "evidence": evidence->{title,url}} - groq_query on groq · 2,795 chars back
*[_type=="dispute" && (claimA->mapping._ref in ["mapping_dbms-job--elastic-jobs","mapping_dbms-job--pg-cron","mapping_dbms-job--sql-agent-mi"] || claimB->mapping._ref in ["mapping_dbms-job--elastic-jobs","mapping_dbms-job--pg-cron","mapping_dbms-job--sql-agent-mi"])]{_id, title, whatDisagrees, resolution, "claimA": claimA->{statement, "source": evidence->title}, "claimB": claimB->{statement, "source": evidence->title}, "resolvedBy": resolvedBy->{title,url}}
Answer
Verdict: False. DBMS_JOB was not removed in 19c — it was deprecated in Oracle 12.2 and remains functional through 26ai as a wrapper over DBMS_SCHEDULER. DBMS_JOB (PL/SQL Packages and Types Reference 19c)
Scoped facts:
- Deprecated in: 12.2 (Oracle Database 12c Release 2). No
desupportedInvalue is recorded in the dataset —Deprecated Features in Oracle Database 12c Release 2 (12.2) - From 19c, each
DBMS_JOB.SUBMITcall creates a pairedDBMS_SCHEDULERjob (DBMS_JOB$_n), and existing jobs are converted on upgrade — ORACLE-BASE: DBMS_JOB jobs converted to DBMS_SCHEDULER jobs in Oracle Database 19c - From 19c, a schema calling
DBMS_JOB.SUBMITmust hold theCREATE JOBprivilege, or it fails with ORA-27486 — this privilege requirement, not removal, is the documented cause of "stopped working" reports — same source - Oracle-side replacement: DBMS_SCHEDULER.
Dispute on record — "Did DBMS_JOB stop working in 19c?"
- Claim A (Oracle/ORACLE-BASE): DBMS_JOB is deprecated but continues to function in 19c+, wrapped over DBMS_SCHEDULER.
- Claim B (community, Ask TOM thread): a poster reported
DBMS_JOB.SUBMIT"not working anymore" after upgrading 12.1.0.2 → 19.8. - Resolution (per
DBMS_JOB (PL/SQL Packages and Types Reference 19c)): Both are compatible — the 19cCREATE JOBprivilege requirement (ORA-27486 if missing) explains the "not working" reports; it was a privilege change, not removal. The package is deprecated and functional through 26ai. For an Azure migration, the practical consequence is unchanged either way: job bodies must be re-homed to SQL Server Agent (Managed Instance), Azure SQL Elastic Jobs, or pg_cron (PostgreSQL Flexible Server) — but that move isn't forced by any removal in 19c.
Additional caveat: DBMS_JOB.SUBMIT remains transactional even in 19c (rolled back with the caller's transaction), unlike DBMS_SCHEDULER.CREATE_JOB or the Azure targets, which commit immediately — Connor McDonald: DBMS_JOB - the joy of transactions
GROQ + Knowledge Base
smaller model · 7 turns · 30 s · 128.9k in / 2.5k out✓ verdict ✓ grounded ✓ cited
Grader: Deprecated, functional; Ask TOM claim resolved via CREATE JOB privilege.
6 tool calls
- ToolSearch on · 0 chars back
select:mcp__sanity-groq__initial_context,mcp__sanity-groq__groq_query,mcp__sanity-kb__initial_context,mcp__sanity-kb__knowledge_base_read,mcp__sanity-groq__array_field_reader
- initial_context on groq · 4,126 chars back
- initial_context on kb · 7,679 chars back
- groq_query on groq · 1,551 chars back
*[_type=="oracleFeature" && (slug.current match "*dbms_job*" || name match "*DBMS_JOB*")]{_id, name, slug, category, introducedIn, deprecatedIn, desupportedIn, oracleReplacement, reviewStatus, "sources": sources[]->{title,url}} - groq_query on groq · 7,044 chars back
*[_type=="mapping" && oracleFeature._ref=="feature_dbms-job"]{_id, fidelity, effort, rationale, appliesToOracleVersions, "azureTarget": azureTarget->name, "sources": sources[]->{title,url}, "caveats": *[_type=="caveat" && references(^._id)]{_id, severity, statement, appliesTo, firsthand, "evidence": evidence->{title,url}}} - groq_query on groq · 3,015 chars back
*[_type=="dispute" && (claimA->mapping->oracleFeature._ref=="feature_dbms-job" || claimB->mapping->oracleFeature._ref=="feature_dbms-job")]{_id, title, whatDisagrees, resolution, "claimA": claimA->{severity, statement, "evidence": evidence->{title,url}}, "claimB": claimB->{severity, statement, "evidence": evidence->{title,url}}, "resolvedBy": resolvedBy->{title,url}}
Answer
Verdict: False. DBMS_JOB was not removed in 19c — it's deprecated (since 12.2), not desupported, and continues to function through at least 23ai/26ai.
Facts
DBMS_JOBwas deprecated in Oracle 12.2;desupportedInis not set in the dataset (no desupport recorded). Oracle's replacement isDBMS_SCHEDULER. DBMS_JOB (PL/SQL Packages and Types Reference 19c), Deprecated Features in Oracle Database 12c Release 2 (12.2)- In 19c and later, DBMS_JOB continues to function as a supported wrapper: each
DBMS_JOB.SUBMITcreates a pairedDBMS_SCHEDULERjob (namedDBMS_JOB$_n), and existing jobs are converted to Scheduler jobs during upgrade. ORACLE-BASE: DBMS_JOB jobs converted to DBMS_SCHEDULER jobs in Oracle Database 19c - From 19c, a schema calling
DBMS_JOB.SUBMITmust hold theCREATE JOBprivilege; without it, submission fails withORA-27486— this privilege requirement, not removal, is the usual cause of "stopped working after upgrade" reports (major-severity caveat, applies to 19c/21c/23ai). ORACLE-BASE: DBMS_JOB jobs converted to DBMS_SCHEDULER jobs in Oracle Database 19c DBMS_JOB.SUBMITremains transactional even in 19c (rolled back with the caller's transaction), unlikeDBMS_SCHEDULER.CREATE_JOBor the Azure targets it maps to (SQL Server Agent, Elastic Jobs, pg_cron), which commit immediately. Connor McDonald: DBMS_JOB - the joy of transactions
Dispute on record — "Did DBMS_JOB stop working in 19c?"
- Claim A (Oracle docs / ORACLE-BASE): deprecated but functional, jobs auto-converted to Scheduler jobs.
- Claim B (Ask TOM thread): a user reported
DBMS_JOB.SUBMIT"not working anymore" after a 12.1→19.8 upgrade — the framing that circulates as "removed in 19c." - Resolution (per DBMS_JOB (PL/SQL Packages and Types Reference 19c)): both are compatible — the failures are caused by the new
CREATE JOBprivilege requirement (ORA-27486), not removal. The package is deprecated and remains functional through 26ai; for Azure migration, the practical consequence is unchanged either way — job bodies must be re-homed to SQL Server Agent (Managed Instance), Elastic Jobs (Azure SQL Database), or pg_cron (PostgreSQL Flexible Server), but that migration isn't forced by a removal deadline.
Azure mapping implication: fidelity is "partial" to all three targets (SQL Server Agent on Managed Instance, Elastic Jobs on Azure SQL DB, pg_cron on PostgreSQL Flexible Server) — mainly because none of them preserve DBMS_JOB's transactional submit semantics.