Thursday, January 21, 2016

DBMS_PIPE in Oracle -- Inter-Session Communication



The DBMS_PIPE package provides a non-secure mechanism for inter-session messaging. It is considered non-secure because messages can be lost from the pipe if the instance crashes or is shutdown before they are processed. Advanced Queues are arguably a better mechanism when secure messaging and greater flexibility are required.
There are two types of pipes:
  • Implicit Pipes - These are created automatically when a message is sent with an unknown pipename using theSEND_MESSAGE function. Implicit pipes disappear when they are empty.
  • Explicit Pipes - These are created using the CREATE_PIPE function. Explicitly created pipes must be removed using theREMOVE_PIPE function.
There are two levels of security for pipes:
  • Public Pipes - These are accessible by any user with EXECUTE permission on the DBMS_PIPE package. Implicit pipes are always public, but they can also be created explicitly by calling the CREATE_PIPE function with the private parameter set to FALSE.
  • Private Pipes - These are only accessible by sessions with the same ownerid as the pipe creator, stored programs owned by the pipe creator or by users connected as SYSDBA.

No comments:

Post a Comment