Hi
the following update statement gives ora-379 buffer pool error in oracle version 8.1.6.3 on TRU64.
UPDATE MISPOSTPAID.MIS_DYDSRNEW@MIS SET MIG_OUT=:b1,DEACT=DEACT - :b1 WHERE (POP_DATE) = TRUNC(SYSDATE - 1 ) AND BRANCH = :b3 AND TYPE = 'POST-CORP'
when i trace it,
Rows Execution Plan
------- ---------------------------------------------------
0 UPDATE STATEMENT GOAL: CHOOSE (REMOTE)
0 UPDATE OF 'MIS_DYDSRNEW' [MIS]
0 AND-EQUAL
0 INDEX (RANGE SCAN) OF 'DSRNEWPOPDT' (NON-UNIQUE) [MIS]
0 INDEX (RANGE SCAN) OF 'DSRNEWBRANCH' (NON-UNIQUE) [MIS]
0 INDEX (RANGE SCAN) OF 'DSRNEWTYPE' (NON-UNIQUE) [MIS]
Oracle Metalink says, AND-EQUAL will throw the above error on 8.1.6.3.
Its in Production and no downtime.
Any workaround? can we able to change the update statement?
If you can replace it with some PL/SQL, try some variation on:
- Declare my_pk as a table of . . .
- Select PK Into my_pk Bulk Collect From my_table Where . . . ;
loop over:
- Update my_table Set . . . Where PK = my_pk(i);
Otherwise experiment with:
Update my_table Set . . .
Where PK In
(Select PK From my_table
Where . . . . .
AND rownum >= 1);
added later:
If neither of those work, try avoiding the AND-EQUAL by only using one index (not good for efficency, but if it's the only way . . . ) e.g.:
WHERE TRUNC(POP_DATE) = TRUNC(SYSDATE - 1 )
AND BRANCH = :b3
AND UPPER(TYPE) = 'POST-CORP'
Bookmarks