Can literals be subsituted with 'Bind' variables ? How?
My customer had an upgrade from 7.7 to 8.1, they see following SQL's executed and their DBA reported that these queries were re-parsed by Oracle each time due to the usage of literals in the queries.
My question is can these literals can be subsituted with 'Bind' variables as siebel usually does so that 'Exact' optimizer mode will be utilized and avoid expensive calls at DB?
INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E6XD9' , T1.ROW_ID FROM SIEBEL.S_SRM_TASK_HIST T1 WHERE (T1.TGT_DELETE_TS <= TO_DATE(:B1,'MM/DD/YYYY HH24:MI:SS')))
1175 occurrence
INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E6XJG' , T1.ROW_ID FROM SIEBEL.S_SRM_REQUEST T1 WHERE (T1.STATUS IN (:B4,:B3,:B2) AND T1.TGT_DELETE_TS <= TO_DATE(:B1,'MM/DD/YYYY HH24:MI:SS')))
1155 occurrence
INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E6XFH' , T1.ROW_ID FROM SIEBEL.S_SRM_REQUEST T1 WHERE (T1.STATUS IN ( :B2 ) AND T1.EXPIRATION_DT < TO_DATE(:B1,'MM/DD/YYYY HH24:MI:SS')))
1183 occurrence
BEGIN INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E6XII' , T1.ROW_ID FROM SIEBEL.S_SRM_TASK_HIST T1 WHERE (T1.TGT_DELETE_TS <= TO_DATE(:1,'MM/DD/YYYY HH24:MI:SS'))); DELETE FROM SIEBEL.S_SRM_TASK_HIST WHERE ROW_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :2); DELETE FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :3; END;
1236 occurrence
BEGIN INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E6UEX' , T1.ROW_ID FROM SIEBEL.S_SRM_REQUEST T1 WHERE (T1.STATUS IN (:1,:2,:3) AND T1.TGT_DELETE_TS <= TO_DATE(:4,'MM/DD/YYYY HH24:MI:SS'))); DELETE FROM SIEBEL.S_SRM_REQUEST WHERE ROW_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :5); DELETE FROM SIEBEL.S_SRM_DATA WHERE PAR_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :6) ; DELETE FROM SIEBEL.S_SRM_REQ_PARAM WHERE REQ_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :7) ; DELETE FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :8; END;
1187 occurrence
BEGIN INSERT INTO SIEBEL.S_OM_TEMP(TXN_ID, TRGT_ROW_ID) (SELECT '1-5E3NTU' , T1.ROW_ID FROM SIEBEL.S_SRM_REQUEST T1 WHERE (T1.STATUS IN ( :1 ) AND T1.EXPIRATION_DT < TO_DATE(:2,'MM/DD/YYYY HH24:MI:SS'))); DELETE FROM SIEBEL.S_SRM_REQUEST WHERE ROW_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :3); DELETE FROM SIEBEL.S_SRM_DATA WHERE PAR_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :4) ; DELETE FROM SIEBEL.S_SRM_REQ_PARAM WHERE REQ_ID IN (SELECT TRGT_ROW_ID FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :5) ; DELETE FROM SIEBEL.S_OM_TEMP WHERE TXN_ID = :6; END;
1228 occurrence
Your help will be ery much appreciated.
Thank you,
Aditya