There seems to be some confusion around how ORDS works with it's connection pooling yet running the REST call as the specified schema.
For this reason, in a CDB install the connection pool is established as a common user in the CDB names ORDS_PUBLIC_USER. This allows for common connection pool that can be shared over all 50 PDBs. As requested finish, the connection can be recycled back for any PDB to service the next request.
I made a trivial REST api that does nothing more than a select on EMP
Then I turned on Auditing of this table with the following
The connection pool
Consider a 50 PDB env and concurrent users per PDB running some REST stuff. Using a connection pool per PDB would be 50 connection pools. Then if a JET app ( or any HTML5/JS/.. ) is making REST calls Chrome will do this with 6 concurrent calls. This makes it so that as simple as 5 concurrent users * 6 threads in Chrome * 50 PDBs would reach 1500 connections.For this reason, in a CDB install the connection pool is established as a common user in the CDB names ORDS_PUBLIC_USER. This allows for common connection pool that can be shared over all 50 PDBs. As requested finish, the connection can be recycled back for any PDB to service the next request.
What about Auditing
This is where the confusion begins. If it's a common connection pool, it's un-auditable. FALSEI made a trivial REST api that does nothing more than a select on EMP
Then I turned on Auditing of this table with the following
AUDIT SELECT, INSERT, DELETE ON klrice.emp BY ACCESS WHENEVER SUCCESSFUL;Running the REST call and checking the DB level audit results in exactly what is expected. There's no notion of the common ORDS_PUBLIC_USER anywhere. The user KLRICE accessed this table making all normal DB auditing work well normal.