시퀀스의 last_number와 currval 값 차이.. 0 3 10,220

by 최정환 currval user_sequences last_number nextval 차이 오차 [2009.06.21 21:42:57]


last_number.png (10,809Bytes)

 

설명보다는 이미지 첨부가 좋을 것 같아서 사진 첨부합니다.

currval을 사용하여야 하는데 nextval을 한 이후에만 사용이 가능하므로 사용이 불가능하여

user_sequences 테이블에서 last_number 컬럼을 사용하여 확인하고자 하였습니다.

그런데 보다시피 last_number의 값이 nextval이나 currval과 일치하지 않네요.

혹시나 해서 nextval을 사용하여 last_number의 근사값으로 가도록 했더니

또 그만큼 차이가 나버립니다........

인터넷에서 한번 찾아봤을 때에는 currval을 대신하기 위해 last_number 컬럼을 이용하라고 하던데..

왜 이런걸까요?

윈도우즈XP SP3 + 오라클 10g입니다.

JSP 공부하면서 사용하고 있습니다.

 

by 최정환 [2009.06.21 21:56:08]
user_sequnces 테이블의 cache_size 만큼 차이가 나게 되는거군요...
irc에서 답변해주신 모 분께 감사합니다.

by 랄랄라젠카 [2009.06.21 23:03:02]
RAC 환경이거나 혹은 Sequence 생성시 option 절에서 Cache 값을 설정해준경우 위와 같은 현상이 보일수 있습니다.

Instance에서 Sequence 를 호출할경우 각 Instance간의 경합방지를 위해 SGA에 설정해준 Cache 값만큼 올려 놓는 것이죠.

DBA_SEQUENCES 에서 Cache 값을 확인해보세요.

by 손님 [2012.11.15 17:33:11]
으으잉잉 이거 좀만 더 빨리 발견했더라면 좋았을텐데
저도 딱 20씩 계속 숫자 차이나서 환장하는줄 알았어요 ㅋㅋㅋ
이제라도 알게 되어서 다행이에요 감사합니다~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입