Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
База данных разработчиков, работaет один сервис (java приложение), который достает коннекты из пула, чего-то делает и
коммитит это. Последней командой перед отдачей коннекта в пулл гарантированно выполняется rollback. Никого боллее на базе данных кроме сервиса нет. Первой командой после получения коннекта из пула являтся вызов процедуры из пакета, которая проверяет установлен ли security context (пакетные переменные) для сервиса, и если он не установлен создает его следующим кодом:
SELECT SECURITY.SEQ_SEC_CONTEXT.NEXTVAL
INTO M_CONTEXT.ID FROM DUAL;
M_CONTEXT.DB_ID := MY_DB_ID;
M_CONTEXT.CONN_TYPE := P_CONN_TYPE;
M_CONTEXT.KILL_FLAG := 'N';
M_CONTEXT.PING_DATE := SYSDATE;
M_CONTEXT.ORA_AUDSID := SYS_CONTEXT('USERENV','SESSIONID');
M_CONTEXT.OS_USER := SYS_CONTEXT('USERENV','OS_USER');
M_CONTEXT.MACHINE := SYS_CONTEXT('USERENV','HOST');
M_CONTEXT.VERSION := 1;
M_CONTEXT.INSERT_DATE := SYSDATE;
INSERT INTO SECURITY.TSEC_CONTEXT VALUES M_CONTEXT;
COMMIT;
M_CONTEXT это обычный record:
M_CONTEXT SECURITY.TSEC_CONTEXT%ROWTYPE;
При INSERT и возникает "snapshot too old". Воспроизвести ошибку удается с большим трудом - сервис может часами работать без ошибок, а может и через 15-мин выбросить ошибку. В сообщении об ошибке имя роллбак-сегмента - пустая строка.
ORA-01555: Snapshot zu alt: Rollback-Segmentnummer namens "" ist zu klein.
У таблицы четыре CLOB-поля и один BLOB, но в момент INSERT все они установлены в NULL. Все blob-ы имеют аттрибут "Enable storage in row"
В трейс-файле стоит это:
=====================
PARSING IN CURSOR #5 len=49 dep=1 uid=124 oct=3 lid=124 tim=25880185001 hv=2637333543 ad='7ff109ec7e0' sqlid='85dgpnqfm5117'
SELECT SECURITY.SEQ_SEC_CONTEXT.NEXTVAL FROM DUAL
END OF STMT
EXEC #5:c=0,e=12,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=1804810192,tim=25880185000
FETCH #5:c=0,e=23,p=0,cr=0,cu=0,mis=0,r=1,dep=1,og=1,plh=1804810192,tim=25880185097
CLOSE #5:c=0,e=1,dep=1,type=3,tim=25880185120
=====================
PARSING IN CURSOR #2 len=190 dep=1 uid=124 oct=2 lid=124 tim=25880185520 hv=1956798015 ad='7ff109ec560' sqlid='7h95xp5ua4rjz'
INSERT INTO SECURITY.TSEC_CONTEXT VALUES (:B1 ,:B2 ,:B3 ,:B4 ,:B5 ,:B6 ,:B7 ,:B8 ,:B9 ,:B10 ,:B11 ,:B12 ,:B13 ,:B14 ,:B15 ,:B16 ,:B17 ,:B18 ,:B19 ,:B20 ,:B21 ,:B22 ,:B23 ,:B24 ,:B25 ,:B26 )
END OF STMT
PARSE #2:c=0,e=311,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=25880185520
EXEC #2:c=0,e=1851,p=2,cr=9,cu=25,mis=1,r=0,dep=1,og=1,plh=0,tim=25880187419
ERROR #2:err=1555 tim=25880187460
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL (cr=0 pr=0 pw=0 time=0 us)'
CLOSE #2:c=0,e=12,dep=1,type=0,tim=25880187647
XCTEND rlbk=1, rd_only=1, tim=25880187732
=====================
Подскажите куда смотреть/копать?