By appropriate use of this package and database triggers, an application can cause itself to be notified whenever values of interest in the database are changed. For example, suppose a graphics tool is displaying a graph of some data from a database table. The tool automatically wakes up when the data is changed by any other user.
Alerts are transaction based.
This means that the waiting session does not get alerted until the transaction signalling the alert commits. There can be any number of concurrent signallers of a given alert, and there can be any number of concurrent waiters on a given alert. A waiting application is blocked in the database and cannot do any other work. Set the polling interval. You might want to write a cover package on top of this one that restricts the alert names used.