이글루스 로그인


오라클10.1.0.4 패치 적용중 ORA-00821, ORA-00093 의 더블콤보

 
오라클을 새로운 환경에서 설치하게 되면 언제나 기대를 져버리지 않고 지금까지 보지 못했던 에러를 내주어서 엔지니어를 당황스럽게 만든다.

이번 에러는 P4, 512M 이라는 비교적 저성능의 PC에 오라클을 인스톨하고 10.1.0.4 패치를 적용하던 도중 겪은 이야기이다.

이번 작업은 PC서버에 오라클 10.1.0.3 및 컴패니언 시디를 인스톨한 후 오라클사에서 제공하는 "PSR10.1.0.4의 인스톨방법 [UNIX]" 의 수순을 따랐다.

패치파일의 인스톨을 끝내고 인스톨후의 필요 작업을 하게 되면 도중 인스턴스를 NOMOUNT상태로 기동시킨후 alter system 명령으로 파라메터 SHARED_POOL_SIZE 과 JAVA_POOL_SIZE의 사이즈를 180MB이상으로 설정하는 부분이 있다. 이 설정후 업그레이드 모드로 DB인스턴스를 재기동해서 catpatch.sql을 실행시켜야 하는데 재기동하던 도중 다음의 에러가 발생하면서 인스턴스 기동을 실패한다.

>ORA-00821: Specified value of sga_target is too small, needs to be at least 396M

당황해서 파라메터를 원래되로 되돌리려고 하지만 이후 다음과 같은 에러가 연달아 발생하면서 NOMOUNT상태로도 인스턴스가 기동되지 않는다.

ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0.

인스턴스가 기동되기 않기에 다시 alter system 명령을 이용해서 파라메터값을 원래대로 되돌리는 것도 불가능하다.
(오라클 서포트 페이지쪽은 이 문제에 대해선 아무 설명이 없고 웹도 한국어나 일본어쪽은 검색해도 도움이 안되었다. 지금부터 쓰는 해결안은 영문 페이지를 뒤지며 나의 추측과 함께 때려맞춰서 해결한 부분이기에 내용의 보증은 불가능하다는 점을 미리 밝힌다.)

그러면 위 문제의 원인은 무엇이었을까.

상기 두 메모리 영역(SHARED_POOL_SIZE, JAVA_POOL_SIZE)의 파라메터치가 180MB이상으로 재설정되면서 이를 총괄하는 오라클의 SGA(System Global Area)의 용량역시 최소한 이 두영역을 합친 용량 이상으로 커져야 하나 그렇지 못했던 것이 원인이다. 그러므로 SGA의 영역 역시 넓혀 줘야 하는데 위에서 잠깐 언급한 대로 alter system명령을 쓸수가 없다. 그러므로 에디터로 오라클 설정파일을 수정해야 한다.

그러나 오라클 설정파일인 spfile을 에디터로로 수정하는 것은 불가능하다. 왜냐하면 spfile은 바이너리 파일이기 때문이다. 그러므로 따로 spfile로 부터 에디터로 수정이 가능한 pfile을 새로 발행해 줘야 하며 그러기 위해서는 sqlplus에 접속후 다음 커맨드를 이용한다.

SQL> create pfile from spfile;

이후 설정파일이 설치된 장소를 살펴보면 init{$ORACLE_SID}.ora 파일이 생성되어 있는데 이파일을 열어서 SGA영역을 필요한 만큼 수정한후 다시 패치 수순서를 따라서 업그레이드 모드로 인스턴스를 실행하면 정상적으로 인스턴스가 기동된다.

SQL> startup pfile=/설정파일Path/init{$ORACLE_SID}.ora

이후는 오라클의 수순서대로 진행...

모든 패치작업이 끝나면 alter system 커맨드로 메모리 영역을 기존대로 수정해 주어야 한다. 수정하지 않으면 재기동시 예전 spfile값을 불러들이기에 인스턴스 기동에 실패하기 때문이다. 하지만, 새로 생성한 pfile로 인스턴스를 기동했기에 기존의 spfile을 수정할 수가 없다. 그러나 pfile은 에디터로 수정가능하므로 pfile의 파라메터 값을 초기값으로 수정한 후 다음의 커맨드를 이용해서 pfile의 값을 다시 spfile로 옮기는 것이 가능하다.

SQL> create spfile from pfile;

이상.


ps.
이 문제는 애당초 머신의 물리메모리가 512M밖에 안되었기에 인스톨시 디폴트 SGA영역이 작게 잡힌 것이 근본원인이다. 1GB이상의 물리메모리를 가진 머신에 인스톨했을 경우 이문제는 발생하지 않았을 것으로 예상된다. 실제 내가 운용하고 있는 다른 머신의 경우 2기가메모리를 탑재하고 있는데 이 머신에서는 해당 문제가 발생하지 않았다.

by 대나무 | 2006/07/05 19:50 | Oracle DB | 트랙백(1) | 덧글(0)

트랙백 주소 : http://elflord.egloos.com/tb/2540996
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from phocion님의 블로그 at 2007/04/30 18:44

:         :

:

비공개 덧글


◀ 이전 페이지          다음 페이지 ▶