2014-11-24 6 views
0

나는 홀리데이 중 발생한 18 개의 숫자가 내 oracle 시퀀스에 있음을 발견했으며 로그 파일에서이 범죄의 흔적을 발견하지 못했습니다. 시퀀스가 업데이트되거나 시퀀스 번호가 사라지는 것을 추적 할 수있는 방법을 알 수 있습니까?오라클에서 시퀀스가 ​​업데이트되었을 때

+0

아마 18 레코드가 삭제 되었습니까? 해당 테이블에서 일종의 감사 트리거가 있으면이를 해결할 수 있습니다. 그게 왜 "범죄"입니까? – toddlermenot

+1

시퀀스 번호의 갭은 문제가되지 않습니다. 당신은 그것을 무시할 수 있습니다. 시퀀스에 의해 생성 된 값은 전혀 의미가 없으며 42,60,4546, -35345 또는 632023485 값을 사용하면 문제가되지 않습니다. –

답변

3

다른 답변/의견 상태와 마찬가지로 시퀀스는 갭이없는 것으로 보장되지 않습니다. 갭은 다양한 방법으로 발생할 수 있습니다.

시퀀스의 한 가지는 기본값이 CACHE 20입니다. 즉, 호출되면 NEXTVAL 데이터베이스의 시퀀스 실제로, (20)에 의해 증가되는 값을 반환하고, 다음의 19의 값은 단지 메모리로부터 반환되는 수단 (공유 풀.)

시퀀스라면 공유 풀에서 세월이 지났거나 공유 풀이 플러시되거나 데이터베이스가 다시 시작되면 시퀀스 메모리 캐시의 값은 다음에 시퀀스가 ​​데이터베이스에서 값을 가져 오므로 손실됩니다. 마지막으로.

공휴일에 일어났다고 말하면서 시퀀스에서 메모리의 2 개 값을 사용한 것으로 추정되는데 DBA는 공휴일에 유지 보수를 수행하여 공유 풀을 비울 때까지 남은 18 개 값 시퀀스 메모리 캐시에서 사라집니다.

정상적인 동작과 시퀀스가 ​​빠르게 작동하는 이유입니다. 당신은 NOCACHE NOORDER에 의해 갭이없는 곳으로 "더 가깝게"갈 수는 있지만 성능이 떨어지며 어쨌든 틈이 생기지 않습니다.

2

시퀀스는 간격없는 일련의 숫자를 생성하지 않을 수도 있습니다. 다중 사용자 환경에서 확장 성이 뛰어난 일련의 (고유 한) 번호를 생성하는 데 사용됩니다.

응용 프로그램에서 테이블의 숫자 식별자가 간격없이 순차적이어야하는 경우 해당 식별자를 생성하는 다른 방법이 필요합니다.

관련 문제