Hello folks,
My first post here.
I've started to dig into the internals of VPD within OTM and I'm trying to work out how it all hangs together.
I've come across something which doesn't quite make sense to me. Here's what I've found.
Location table :
- It has 2 policies for read
1. VPDWREXT_PREDICATE_READ584
2. VPD.EXTERNAL_PREDICATE_RULE_READ
The first one has a policy_type of dbms_rls.shared_context_sensitive while the second one has dbms_rls.dynamic. The first one basically does a call to VPD.EXTERNAL_PREDICATE_RULE_READ. Why are we doing the same thing twice? Doesn't the second dynamic policy of dynamic make it reparse the statement each time which basically means there's no reason for the first one?
I've run a seesion trace with 10046 and I can see the functions being called.
Anyone know why it works this way?
I'm about to raise a service request with Oracle to get some more info... oh, this is 5.5 and it's a 10.2.0.3 database on Linux. I can see similar stuff in 5 on 9.2.0.8.
Regards,
Stojan.
My first post here.
I've started to dig into the internals of VPD within OTM and I'm trying to work out how it all hangs together.
I've come across something which doesn't quite make sense to me. Here's what I've found.
Location table :
- It has 2 policies for read
1. VPDWREXT_PREDICATE_READ584
2. VPD.EXTERNAL_PREDICATE_RULE_READ
The first one has a policy_type of dbms_rls.shared_context_sensitive while the second one has dbms_rls.dynamic. The first one basically does a call to VPD.EXTERNAL_PREDICATE_RULE_READ. Why are we doing the same thing twice? Doesn't the second dynamic policy of dynamic make it reparse the statement each time which basically means there's no reason for the first one?
I've run a seesion trace with 10046 and I can see the functions being called.
Anyone know why it works this way?
I'm about to raise a service request with Oracle to get some more info... oh, this is 5.5 and it's a 10.2.0.3 database on Linux. I can see similar stuff in 5 on 9.2.0.8.
Regards,
Stojan.
Comment