Search Results dbms_defer_sys_definer




Overview

SYS.DBMS_DEFER_SYS_DEFINER is a definer's-rights wrapper package that Oracle E-Business Suite relies upon indirectly for its distributed and deferred remote procedure call infrastructure. The package is owned by SYS and is reported as VALID in the ETRM metadata for both Oracle EBS 12.1.1 and 12.2.2. Its principal business role is to encapsulate the privileged operations of the deferred transaction queue—scheduling, pushing, purging, and executing queued remote procedure calls—behind a stable, invoker-agnostic interface. In Oracle EBS, deferred RPCs are used to propagate changes between database links and to support features such as Multi-Org replication, Advanced Replication snapshots, and Materialized Views. DBMS_DEFER_SYS_DEFINER does not introduce new business logic; rather, it protects the underlying DBMS_DEFER_SYS operations from SQL injection and privilege escalation by executing them under the definer's (SYS) privileges.

Key Procedures and Functions

The ETRM documentation records this object as a PACKAGE with zero explicitly documented procedures or functions in the API classification "OTHER". This classification indicates that the package is not intended as a general-purpose application programming interface for EBS developers, but rather as an internal SYS-level mechanism. The metadata does not list any custom parameters, and the package body is marked "show dependent code," meaning its source is visible in the data dictionary but is not surfaced as a named EBS API. Practically, this package delegates its executable content to the public DBMS_DEFER_SYS interface, which it references directly as a dependent object. Callers therefore interact with the documented DBMS_DEFER_SYS procedures (for example, SCHEDULE_PURGE, EXECUTE, PUSH, and DELETE_DEF_DESTINATION), while DBMS_DEFER_SYS_DEFINER provides the secure execution context in which those operations run.

Tables Accessed

The metadata identifies five DEF$ tables referenced through APPS synonyms: DEF$_AQCALL, DEF$_CALLDEST, DEF$_DEFAULTDEST, DEF$_ERROR, and DEF$_LOB. These are the core tables of Oracle's deferred transaction queue. DEF$_AQCALL holds the queued deferred calls themselves; DEF$_CALLDEST identifies each destination database for those calls; DEF$_DEFAULTDEST defines the default destination for deferred transactions; DEF$_ERROR captures failed or rejected deferred calls for diagnosis and re-execution; and DEF$_LOB stores large object payloads associated with deferred calls. DBMS_DEFER_SYS_DEFINER accesses these tables to enqueue, dispatch, monitor, and purge deferred RPCs. In EBS environments, the contents of these tables are critical to reliable propagation of data between the application database and its downstream or replicated targets, and the ERROR table in particular is examined during troubleshooting of stalled replication.

Usage Notes

DBMS_DEFER_SYS_DEFINER is not normally invoked directly from EBS forms, concurrent programs, or custom applications. It is referenced by two higher-level packages documented in the ETRM: SYS.DBMS_DEFER_SYS and SYS.DBMS_SNAPSHOT. DBMS_DEFER_SYS exposes the public deferred transaction queue API, while DBMS_SNAPSHOT manages materialized view (snapshot) refresh operations that generate deferred calls. The definer's-rights wrapper ensures that when an application executes a deferred RPC through these public packages, the underlying queue maintenance occurs with SYS privileges, preserving security and consistency. Administrators may encounter this package indirectly when diagnosing DBA_REPCAT or DEF$_ERROR conditions, when validating dependencies after a database upgrade, or when verifying that the package remains VALID in the SYS schema. Because it is a SYS-owned object, it should never be modified, recompiled manually, or replaced; any invalidation should be resolved by Oracle's standard recompilation of dependent SYS packages.