I'm a DBA who doesn't really work with weblogic at all. I know we have it implemented and the developers are using the ejb timers. Our program and code base are huge so I'm working to get a better understanding of the issue before trying to hunt down the right developer(s) or code.
The shared pool on our DBs that have the timer tables WEBLOGIC_TIMERS and ACTIVE are basically flooded with cursors for the maintenance of these tables because all of the statements use literal inputs ie:
SELECT * FROM WEBLOGIC_TIMERS WHERE TIMER_ID = 'LITERAL' AND DOMAIN_NAME='LITERAL' AND CLUSTER_NAME='LITERAL'
DELETE FROM WEBLOGIC_TIMERS WHERE TIMER_ID = 'LITERAL' AND DOMAIN_NAME='LITERAL' AND CLUSTER_NAME='LITERAL'
SELECT LISTENER FROM WEBLOGIC_TIMERS WHERE TIMER_ID = 'LITERAL' AND DOMAIN_NAME='LITERAL' AND CLUSTER_NAME='LITERAL' FOR UPDATE
INSERT INTO ACTIVE VALUES (LITERALS)
DELETE FROM ACTIVE WHERE (SYSDATE > TIMEOUT) AND SEVER='LITERAL' AND DOMAINNAME='LITERAL' AND CLUSTERNAME='LITERAL'
One of our formal test dbs has over 130k copies of just one of these statements, and just about as many as some of the others.
I want this all to use bind variables. Is this code likely something that we have written in the process of the implementation of the timers? (if so I can hunt it down and get someone to fix it), or is this internal to weblogic that we don't have any control over the statements?