Coding Planet

ORA-04013: number to CACHE must be less than one cycle 본문

SQL

ORA-04013: number to CACHE must be less than one cycle

jhj.sharon 2023. 1. 16. 18:58
반응형

 

1. 오류발생 경로

  • 이미 생성된 시퀀스의 MAXVALUE를 변경하던 와중 MAXVALUE가 특정 값 이하로 설정 될 경우 오류가 발생

 

 

 

2. 발생원인

 

  • MAXVALUE로 설정한 값이 CACHE로 할당된 값에 비해 너무 작아서 문제가 발생
  • CASHE는 처리속도를 증가시키기 위해 SEQUENCE 번호를 한 번에 여러 개씩 메모리에 올려놓고 작업을 한다. 이러한 방법이 매번 SEQUENCE 번호를 생성하는 것보다 빠르기 때문이다. ( https://denodo1.tistory.com/273)
  • CASHE 옵션이 아래 그림과 같이 20개씩 번호를 생성하도록 설정되어 있다면 한번에 1에서 20번까지의 시퀀스가 생성된다. 
  • 그런데 아래와 같이 MACVALUE를 70으로 설정할 경우 CACHE 설정값에 한참 못 미치게 된다.

 

 

3. 해결방법

  • MAXVALUE를 CACHE를 고려하여 일정 이상으로 설정한다(여기서는 200이상)
  • INCREMENT BY 10, CACHE_SIZE 20
  • CASHE_SIZE를 줄인다 혹은 CASHE 옵션을 사용하지 않는다. 
  • ALTER DEPT_DEPTNO_SEQ NOCASHE

반응형
Comments