Introduction
Oracle Virtual Private Database (VPD) is a security feature, introduced in Oracle Database 8i. It is available only in Enterprise Edition of Oracle Database. Discretionary access control (DAC) grants/restricts access to data at an object level (for example, table level). This means that a user can access either the entire data in a table or no data. VPD enables you more granular control over security of your data. Using VPD, you can restrict access to data at row level or column level.
Note
VPD doesn't replace DAC, but it is complimentary to DAC. VPD can further restrict access to users who have been given access to data by DAC.
There are five types of policies based on how often a policy function is evaluated:
DBMS_RLS.DYNAMIC
DMBS_RLS.STATIC
DBMS_RLS.SHARED_STATIC
DBMS_RLS.CONTEXT_SENSITIVE
DBMS_RLS.SHARED_CONTEXT_SENSITIVE
DBMS_RLS.DYNAMIC
is default.
Although it is not necessary to use application contexts when implementing VPD policies, it is a common practice. Figure 1 shows usual...