The Oracle package setup with the "PRAGMA SERIALLY_REUSABLE;"
feature is "stateless" in Oracle 11gR2 (release 18.104.22.168 and higher),
which means packages can be recompiled without getting ORA-04068
error ("existing state of packages … has been discarded").
The package state gets stored in a small pool in the system global
area (SGA), thereby the state of the package persists only for the
life of the server call or the session. The benefits of this feature
are better memory management and improved scalability.
The ceveat is that, procedure in SERIALLY_REUSABLE package cannot be
used in a database trigger or in a PL/SQL subprogram invoked by a SQL
Packages not using this feature get stored in user global area (UGA)
for each user resulting in UGA memory consumption linearly with
multiple users thus limiting application scalability.
Other features are:
Constrainted Datatype - SIMPLE_INTEGER
Constrainted Datatype - SIMPLE_FLOAT
Dynamic SQL - Execute Immediate CLOB
Caching Function Results - Results_Cache
Loop Forward With - CONTINUE