오라클

ORA-604 조치 방법

OEasy 2006. 10. 30. 20:03
BULLETIN CATEGORY
BULLETIN TOPIC 
: RDBMS     
: ORA-604 조치 방법

이 에러는 내부적으로  SQL명령이 실행될 때 발생한다. 예를 들어 현재 할당된 익스텐트가 가득 차서 다음 익스텐트를 할당 받으려고 할 때 오라클이 다음 익스텐트의 크기와 위치를 결정하기 위하여  SELECT명령을 내리게 되는 것과 같은 경우이다.

  * 이 문제가 발생하면 우선  alert.log 화일을 검사하여 ORA-600 과 같은 에러가 발생했는가를 확인한다. ORA-600 에러가 발생했다면 오라클측에 지원을 요청하도록 하고 그렇지 않다면 다른 원인을 검사해 봐야 한다.
  * 가장 먼저 고려할 사항은 init.ora 화일에 지정된 open_cursors의 크기를 알아보는 것이다. 이 값이 설정이 안되어 있으면 Default가 50이므로 open_cursors=255 와 같이 설정하도록 한다. 이 값은 단지 커서의 최대 값을 지정하는 것이므로 커서를 적게 쓰는 프로그램에 아무런 영향을 끼치지 않는다. open_cursors를 변경하고 DB를 Shutdown 하고 Startup 시키면 된다.

  * 만약 이 방법으로 해결이 안되면 다음의 방법을 따른다.
 정확한 에러의 원인을 찾기 위해서 init.ora 화일에 다음과 같은 라인을 추가한다.
                events = "604 trace name errorstack"
  이렇게 init.ora를 변경하고 DB를 Shutdown 하고 Startup 하면 ORA-604 에러가 발생하는 경우에 자세한 정보를 Trace 화일에 기록해 주므로 이 화일을 검사하여 에러의 원인을 찾을 수 있다.

  * 에러의 다른 원인으로는 init.ora 화일의 파라미터 가운데 DC_FREE_EXTENTS 나 ROW_CACHE_ENQUEUES 의 값이 너무 작게 설정된 경우를 생각해 볼 수 있다. 이와같은 경우는 이들 값을 크게 설정해 주도록 한다.

  *  테이블 스페이스가 가득 차거나 Extent 갯수의  최대 허용값을 초과해서 에러가 발생하는 경우 ORA-604 에러가 함께 발생할 수가 있는데 이와같은 경우에는 이들 문제를 먼저 해결하면  ORA-604 에러는 함께 해결 된다.


Oracle Korea Customer Support Technical Bulletins