The output of that last query will show you statements that are identical in the shared
pool after all numbers and character string constants have been removed. These
statements — and more importantly their counts — are the potential bottlenecks. In
addition to causing the contention, they will be HUGE cpu consumers.

If you discover your applications do not use bind variables — you must have this
corrected. You’ll never have a good hit ratio if everyone submits “unique” sql. Your
shared pool will never be used right and you’ll be using excessive CPU (90% of the time
it takes to process “insert into t values ( 1 )” is parsing. If you use “insert into t
values ( 😡 )”, and bind the value of 1 — then the next person that runs that insert
will benefit from your work and run that much faster.