Search Results next_item_type
Overview
SYS.DBMS_PIPE is the Oracle-supplied PL/SQL package that implements inter-process communication (IPC) through in-memory pipes within a single database instance. Unlike OS-level pipes, DBMS_PIPE allows arbitrary Oracle sessions to exchange messages privately or publicly, buffering data in the System Global Area until it is retrieved. In the Oracle E-Business Suite 12.1.1 and 12.2.2 environments, the package is certified as VALID in the SYS schema and is a foundational dependency of the EBS technology stack rather than a business-facing API. It enables loosely coupled coordination between concurrent programs, forms sessions, and background agents without requiring direct database table access. Because the package resides in SYS and is exposed through a PUBLIC synonym, EBS application code can invoke it without schema qualification, and the ETRM metadata classifies the API as OTHER, reflecting its infrastructure role.
Key Procedures and Functions
The documented interface comprises eighteen procedures and functions organized into three functional groups.
- Message construction: PACK_MESSAGE, PACK_MESSAGE_RAW, and PACK_MESSAGE_ROWID write values of type VARCHAR2, RAW, and ROWID respectively into the local message buffer.
- Message extraction: UNPACK_MESSAGE, UNPACK_MESSAGE_RAW, and UNPACK_MESSAGE_ROWID read typed values from the buffer in the order they were packed. NEXT_ITEM_TYPE reports the datatype of the next item awaiting unpacking.
- Pipe lifecycle and transport: CREATE_PIPE establishes a named private or public pipe, REMOVE_PIPE deletes it, SEND_MESSAGE transmits the buffered contents, and RECEIVE_MESSAGE reads a message into the buffer. RESET_BUFFER clears the local buffer, PURGE empties a pipe, and UNIQUE_SESSION_NAME returns a session-unique identifier suitable for private pipe naming.
These procedures are complemented by additional documented INTERNAL subprograms not listed in the excerpt. Parameter lists are intentionally omitted here; each call conforms to the standard DBMS_PIPE signature.
Tables Accessed
No application tables are documented as being referenced by DBMS_PIPE via EBS APPS synonyms. The package operates entirely against SGA-resident pipe memory and internal fixed views such as V$DB_PIPES for monitoring. Persistence is not provided: pipe contents exist only for the life of the instance, which distinguishes DBMS_PIPE from DBMS_AQ-based queuing. The absence of documented table dependencies means the package imposes no database I/O on EBS transactional schemas.
Usage Notes
Within EBS, DBMS_PIPE is typically invoked from concurrent programs, database triggers, and custom PL/SQL that require lightweight signaling. A common pattern is to have a long-running worker call RECEIVE_MESSAGE with a timeout in a loop while a form or concurrent request calls SEND_MESSAGE to wake it. The metadata records DBMS_PIPE as referenced by DBMS_ALERT, DBMS_DEBUG, DBMS_SNAPSHOT, DBMS_SQLDIAG, DBMS_CAPTURE_ADM_INTERNAL, DBMS_I_INDEX_UTL, DBMS_PIPE itself, and the EBS-specific packages OWAPUB, DEBUG_CARTX, JVMRJBC, JVMRJBCINV, PBREAK, and PBRPH. Execution privileges are granted to PUBLIC by default, so DBMS_PIPE can be called from any EBS session without explicit grants. Because pipes consume SGA memory and are non-persistent, the package is unsuitable for durable messaging; Oracle recommends DBMS_AQ or Advanced Queuing for transactionally reliable EBS integrations. Sessions must also avoid name collisions by using UNIQUE_SESSION_NAME when creating private pipes.
-
PACKAGE: SYS.DBMS_PIPE
12.1.1
-
PACKAGE: SYS.DBMS_PIPE
12.2.2