오라클9i 에서 10g 혹은 11g 로 업그레이드시 발생할 수 있는 문제점...

rgbi3307의 이미지

오라클이 9i --> 10g --> 11g로 버젼업하면서,
비용기준옵티마이저, CBO(Cost Based Optimizer)의 기능을 강화해 나가고 있는 것으로 압니다.
그동안 9i를 사용하고 있는 곳이 많을텐데,
요즘 10g, 11g로 업그레이드 하려는 곳이 있는듯합니다.
이때 발생할 수 있는 문제점들은 어떤것이 있을까요?
단적인 예로,
9i에서는 Group By 수행시 내부적으로 sorting을 합니다만,
10g, 11g에서는 sorting 없이 Group By을 한다는군요.
이렇게 되면 클라이언트쪽에 출력되는 레코드 순서가 달라질 수 있겠습니다.
또, 어떤 문제점들이 있을까요?
그리고, 최근에 9i 에서 10g, 11g로 마이그레이션을 성공한 사례가 있다면,
어떤 부분을 중점적으로 점검했는지도 궁금합니다.
그럼, 즐컴 하세요~

budle77의 이미지

말씀하신 정렬 문제가 좀 크구요. 그 외에는 개발자가 신경쓸일은 그다지 없더군요.(저희가 이전하던 웹 서비스의 경우에 그랬다는 말씀입니다.)
플래쉬백 영역이었던가... flash_recovery_area였던걸로 기억하는데요. 10g를 설치해주신 분이 플래쉬백 영역은 설정 안하겠다고 말씀을 하셨었는데... 실제로는 설정이 되어있더군요. 이 영역이 설정되어 있다면 운영중에 사이즈 문제로 DB가 멈추는 일이 발생할수도 있습니다.

1. 기존의 사용자 정의 함수와 프로시져가 정상 작동하는지 여부 확인
: Oracle 9i라도 9.2.0.8에서 정상작동하는 쿼리가 9.2.0.7에서는 정상작동하지 않는게 있더군요. 당연히 10g나 11g를 미리 설치해놓고 Function, Procedure 등을 전부 생성해놓고 정상작동하는지 확인해야 합니다.
저희는 별다른 이상이 없이 정상 작동하더군요.

2. 정렬 문제로 인해서 어플리케이션 소스에 들어있는 Query문장을 수정해야 합니다.

3. Listener log에서 Inbound Connection Time Out라는 오류를 접하실 수 있습니다.
보통 10g로 이전한 사이트에서 많이 발생하더군요. 리스너 파라미터를 수정해주시면 해결이 가능하구요. 보다 자세한 내용은 구글이나 OTN에서 검색해보시길...

rgbi3307의 이미지

지적해 주신 1번, 3번은 오라클 설정이나 파라미터로 해결할 수 있겠지만,
2번은 골치아플것 같아요.
실제로 현장업무 하다보면, 2번처럼 클라이언트쪽의 어플리케이션 소스에서 쿼리를 반복적으로
호출하는 경우가 있더라구요. 심하게는 한번 쿼리한 레코드의 특정값을 가져와서
레코드수만큼 for 루프를 돌리면서 다시 쿼리 하는 경우도 흔히 있더군요.
이렇게 되면 성능도 떨어지고 관리하기도 힘들어져요.
되도록이면 오라클 패키지나 프로시져를 사용하여 쿼리을 한방에 작성하는 것이 성능향상에 도움되리라 봅니다.

From:
*알지비 (메일: rgbi3307(at)nate.com)
*학창시절 마이크로마우스를 만들었고, 10년동안 IT관련 개발자로 일하고 있음.
*틈틈히 커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))

From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))