- Create views over your tables which also select a db function to log SELECT access.
Eg. create or replace view user_details as
select col1, col2, col3, col4, null as audit from some_table union all select null, null, null, null, audit_function(current_user) as func;
There are probably other options, but I can't think of any off the top of my head at the moment. This question has come up in these lists before and on Stack Overflow, so you might want to search around a bit for other options.