Tibero4 migration 모험기 (4) 중간정리
Oracle DBA의 Tibero 사용기
 사용기나 감상문 정도로 적으면 될걸 굳이 모험기라는 조금은 부정적인 의미의 단어를 사용한건, Tibero라는 생소한 제품으로의 이전이 제게는 모험에 가깝다고 생각되어서입니다. 아주 주관적인 얘기니까 혹시 티맥스 관계자분들이 보시면... 걍 얘가 겁이 많구나... 이 정도로 생각하시면 됩니다. 현재 Tibero를 아주 잘 사용하고 있습니다. ^^

 그동안 Oracle을 사용하다가 Tibero RDBMS로 이전을 하기로 결정이 내려졌고, 현재 하나의 시스템을 제외하고는 Tibero로 이전을 하였습니다. 처음 Tibero를 접했을때는 너무 자료가 없고, 폐쇄적이라 테스트 해보기 힘들었다는게 문제였고, 실제 서비스에 일부 사용하고 있는 현재는 타업체의 DB, 솔루션과 함께 사용할때 생기는 다양한 문제점의 원인 파악 및 해결이 어렵다는게 가장 큰 문제입니다. 서두에 이미 결론을 내버려서 이 글을 끝까지 읽지 않으실지도 모르지만, 도입 결정 후 시스템 이전 과정과 서비스 과정에서 생긴 일을 하나씩 얘기해보려 합니다.

--------------------------------------------------------------------------

 * Tibero 도입을 결정하다.
 제가 이전에 블로그에 남겼던 글을 읽으셨다면 어느 정도 감을 잡으셨겠지만, Tibero 도입의 결정적인 이유는 다음과 같습니다.
첫째, Oracle RAC 도입 가격에 비해서 아주 저렴한 가격에 Shared Disk 방식의 Cluster DB를 도입할 수 있다.
둘째, Oracle에서 사용하던 Query, Procedure, Function 등이 수정없이 Tibero에서 사용할 수 있다.
셋째, 필요한 기능 추가 및 시스템 에러에 대한 빠른 대응 가능(국내에 연구 개발을 담당하는 조직이 있어서 가능한거죠.)

 위의 세가지 이유로 도입이 결정되었었습니다.

2010/02/18 - [Database] - DBA의 고민 (1) 고성능, 고가용성 시스템 구축. 안정성과 성능의 두 마리 토끼를 잡아야 하는데... ㅜㅜ
 위의 글을 보시면 왜 RAC같은 Cluster DB 제품을 도입하려하는지에 대한 내용이 들어 있습니다.

--------------------------------------------------------------------------

 * 테스트와 이전 작업을 진행하다.
도입이 결정되고는 내부 테스트와 이전 작업이 진행되었습니다. 작업 중 Oracle과는 다른점이 여러가지 발견되었습니다.

 [다르긴 하지만 크게 문제는 없어서 넘어간 점들]
첫째, 리스너는 하나 밖에 사용할 수 없다. 정책적으로 서비스나 솔루션별로 서로 다른 리스너를 사용할 수 없습니다.
둘째, log file들이 저장되는 위치를 마음대로 바꿀수 없다. Oracle에 비해서 자유도가 떨어지더군요.

 [문제가 있지만, 아직 패치가 되지 않은 점들]
첫째, Index rebuild를 할때 저장되는 Tablespace를 바꿀 수 없다. 여기에 관해서는 제가 예전에도 글을 올렸던 적이 있습니다. 2010/02/01 - [Database] - Tibero4 migration 모험기 (3) Index rebuild 기능

둘째, 서로 다른 Tibero instance간에 Materialized View를 생성해서 쓰면 성능 문제가 생길 수 있다.
  저희가 Materialized View(이하 M-View)를 사용하면서 격은 문제입니다. M-View에는 Fast라는 옵션을 줄 수 있습니다. 아시겠지만, 이 옵션을 쓰면 원본 Table에서 변경된 Data만 가져와서 M-View에 적용을 해줍니다. 이러면 M-View의 Data 동기화 작업 시간을 줄여주고, CPU 부하도 줄여주고... 뭐 이런저런 장점이 있습니다. 그런데 문제는요  동일한 인스턴스에서 M-View를 생성하면 Fast 옵션을 줄수 있는데, 서로 다른 티베로 인스턴스에서 DB Link를 이용해서 M-View를 생성하면 Fast 옵션을 줄 수 없다는겁니다. 어쩔 수 없이 Force 옵션을 주고 생성을 하게 되는데, 이러면 아카이브 파일이 엄청나게 쌓이더군요. M-View를 Refresh할때 마다 대량의 아카이브 파일이 생겨서 운영하기가 힘들 정도였습니다. 언제 패치가 나올지 확답을 받지 못한 상태입니다. 혹시 M-View를 많이, 그리고 여러 DB Instance에서 운영하시는 분들은 참고하시길 바랍니다.


--------------------------------------------------------------------------

이건 tbAdmin 사용자들을 위한 팁입니다.

* tbAdmin에서의 PSM 실행
 Oracle에서 DBMS_JOB 패키지를 사용하여 job을 설정하죠. Tibero에서도 동일하게 job을 설정합니다. 문제는 tbAdmin(TmaxData에서 Tibero client로 배포하는 이클립스 기반의 프로그램입니다.)의 sql 편집창에서 해당 PSM(Oracle의 PL/SQL에 해당합니다.)을 실행시켜도 job이 설정되지 않습니다. 그렇다고 에러 메세지도 보이지 않습니다.
 해결 방법은 간단하더군요. SQL 편집창 말고 PSM 편집창이 따로 있습니다. 거기에서 실행시키면 잘 됩니다.


 TmaxData의 Tibero4로 migration을 진행하면서 알게된 몇가지 내용 중 Index rebuild에 대해서 얘기해보고자합니다. 기존에 사용하던 Oracle을 기준으로 하면... (제가 가장 잘 아는게 Oracle이라 이녀석이 기준입니다.) Index를 사용하다가 rebuild 해줄때 몇가지 옵션을 줄 수 있습니다.

SQL> ALTER INDEX IDX01 REBUILD ONLINE;
   * 기존의 인덱스를 계속 유지한채로 REBUILD하고, REBUILD가 끝나면 바꿔치기 하는 옵션이죠.

SQL> ALTER INDEX IDX01 REBUILD ONLINE TABLESPACE TS_IDX2;
   * REBUILD를 하면서 저장하는 TABLESPACE도 바꾸는 옵션이죠.


 사실 DB 관리를 하다보면 tablespace를 바꿔줄 일이 가끔씩 생깁니다. 그래서 Tablespace를 바꿀 수 있는 옵션은 아주 유용합니다. 그런데... Tibero4에서는 이를 지원하지 않고 있네요. ㅡ.ㅡ
[General syntax error]라는 오류가 발생합니다. Tmax에서도 지원하지 않는다고 하네요. 그런데, Tmax에서 제공하는 Tibero 관리/개발용 툴인 tbAdmin에는 인덱스 리빌드창(마법사??)에서 Tablespace를 선택할 수 있도록 되어있습니다. 혹시나 해서 실행시켜보니까 똑같은 오류가 발생하네요.


 [Power*Architect Data Modeling & Profiling Tool]라는 툴을 아십니까? 흔히들 알고 있는 ERWin과 비슷한 모델링 툴이죠. 큐브리드 홈페이지에 Power*Architect에서 큐브리드를 사용하는 법이 소개된 글이 있어서 링크를 겁니다.

 원문보러가기 : Power*Architect 에서 CUBRID 사용하기

.소개: 본 문서는 보다 편리하게 CUBRID를 사용할 수 있도록 사용자 중심의 편의성 및 기능을 제공하기 위한 데이터 모델링 도구인Power*ArchitectJDBC를 이용하여 연결하는 방법을 소개합니다.

- 예전에 한번 사용해보려다가 모델링과 모델링 툴에 대한 이해 부족과 영문 메뉴얼에 좌절해서 접었던 적이 있었는데, 이렇게 문서도 올라오고 하니... 다시한번 사용해볼까 합니다. ^^;
 OTN에 올라온 Oracle RAC 구축 관련 문서입니다. Oracle VM과 Oracle Enterprise Linux 환경에 구축하는 내용을 담고 있으며, 개인이나 회사에서 개발용, 테스트 혹은 교육용으로만 사용할 것을 권장하고 있네요.
세개의 웹 페이지로 나뉘어져있으며, 각 페이지에는 인쇄용 화면을 볼 수 있는 링크가 있습니다.

소개

일반적인 Oracle RAC(Real Application Cluster) 구현은 하나 또는 여러 노드의 장애를 신속하게 복구하는 아키텍처입니다. 그러나 일반적인 시나리오에서 Oracle RAC의 모든 노드는 한 곳의 데이터 센터에 있으므로 치명적인 데이터 센터 장애로 이어지기 쉽습니다. 이 시나리오에서 재난 복구를 위한 솔루션은 로컬 데이터 센터와 일부 백업 데이터 센터 간에 Oracle DataGuard를 설치하여 대기 시스템(일반적으로 하나의 Oracle Database 또는 다른 RAC 클러스터)을 실행하는 것입니다.

DataGuard는 이 역할을 물론 잘 수행하지만 전체 대기 시스템과 어레이를 패시브 노드로 전환하므로 트랜잭션에 전산 능력을 사용할 수 없게 되며 이로 인해 솔루션 비용이 매우 높아집니다. (대기 Oracle DataGuard 시스템은 읽기 전용 쿼리를 수행하기 위해 열 수 있고 Active DataGuard in Oracle Database 11g를 사용할 경우 항상 읽기 전용 모드로 실행할 수도 있지만, 이 구성의 경우 애플리케이션이 일부 노드의 읽기 전용 특성을 알고 있어야 합니다.)

다행히도 부분적인 재난 복구를 위한 다른 솔루션이 있으며 그것이 바로 확장 RAC입니다. 이 아키텍처에서 일부 RAC 노드는 "알파 사이트"에서 작동하며 나머지 노드는 "베타 사이트"에서 작동합니다. 두 사이트의 노드는 액티브 모드이므로 모든 전산 리소스를 충분히 사용합니다. 그림 1에서 볼 수 있는 것처럼 각 사이트에는 전용 SAN(Storage Area Network)이 있고, 양쪽 데이터 센터(dcA와 dcB)에 있는 시스템은 동일한 RAC의 구성원이므로 데이터를 신속하게 상호 교환할 수 있고 다른 사이트의 스토리지에 액세스할 수 있습니다. 즉, dcA에 있는 RAC1 노드는 dcB에 있는 SAN 어레이에 데이터를 쓰고 dcB에 있는 RAC2 노드와도 통신합니다.



원문 : Oracle VM 및 Oracle Enterprise Linux에 Oracle 확장 RAC 클러스터 직접 구축하기



 예전에는 MS-SQL을 사용하던 중소 규모의 업체에서 회사 규모 확장에 따라서 Oracle을 구매하여 Migration을 하는 경우가 많았었다.  예전에 몸 담았었던 H 모사에서도 그랬고 대용량 DB를 운영하는 사이트에서는 Oracle을 많이 사용하는 추세였죠.
 최근들어 Windows 계열 서버의 사용이 많아지고, MS-SQL Server의 기능이 향상됨에 따라서 MS-SQL Server의 사용이 많아지고 있습니다. 그래서 역으로 Oracle에서 MS-SQL로 이전하는 경우도 생기고 있습니다. 물론 일반적인 경우는 아니라고 생각합니다. 아직은... 성능이든 엔지니어든 여러모로 부족한게 사실이니까요. 설치 및 관리의 편리함은 MS-SQL에 대한 접근성을 낮춰주었고 수많은 MS-SQL 사이트들이 존재하며 그 영역을 넓혀가고 있는데요. 기존 Oracle에서 MS-SQL로 이전하는 사용자를 위한 이전 툴이 MS에서 나왔습니다. 당연한 얘기겠죠. 후발 주자이니 이런 툴에 대한 지원을 잘해야겠죠.

이름하여 SQL Server Migration Assistant(SSMA for Oracle)!!

홈페이지에 있는 정보를 보니 세번째 버전인것 같은데, 그동안 까마득히 모르고 있었네요. 사실 이런식으로 Migration 작업을 한 적이 없었는데, 이번에 Migration 작업을 하시는 분이 있어서 대신 자료를 찾다가 발견하게 되었습니다. 이런 툴들이 존재하는걸 보니 이제는 DB 시장도 치열한 경쟁 구도로 바뀌어가는것 같습니다.
 자동화는 관리자든, 개발자든 공통적으로 중요한 일이죠. 이번에 IBM DeveloperWorks에 "손 쉬운 데이터베이스 마이그레이션"이라는 제목의 글이 올라왔습니다. 흠... LiquiBase라는 오픈소스 소프트웨어를 이용해서 데이터베이스 변경 관리하는 법을 소개하고 있네요. 흥미로운 글입니다.

원문 : 사람을 위한 자동화: 손 쉬운 데이터베이스 마이그레이션

데이터베이스는 종종 그것을 기반으로 하는 애플리케이션과 어긋난 상태로 존재하는데, 이로 인해 데이터베이스와 데이터를 안정된 상태로 끌어내는 것은 관리에 있어서 상당한 도전 과제가 됩니다. 사람을 위한 자동화 이번 기사에서는, 자동화 전문가 Paul Duvall이 오픈 소스 LiquiBase 데이터베이스-마이그레이션 도구를 사용하여 데이터베이스와 애플리케이션의 변경 사항을 관리할 때 발생하는 고통을 줄이는 방법을 보여줄 것입니다.

수년간 내가 일했던 애플리케이션들은 대부분 다량의 데이터를 관리해야 하는 엔터프라이즈 애플리케이션이었다. 그런 프로젝트에서 일하는 개발 팀은 보통 데이터베이스를 애플리케이션과는 완전히 별개의 것으로 취급한다. 이는 때때로 데이터베이스 팀과 애플리케이션 개발 팀으로 나뉘어 있기 때문이거나, 단순하게 팀이 그런 식으로 일을 하기 때문일 것이다. 두 방법 모두 다음과 같은 결과를 초래할 수 있다.

  • 데이터베이스에 변경 사항 직접 반영하기
  • 데이터베이스 변경 사항을 다른 팀원과 공유하지 않기
  • 일관되지 않은 방법으로 데이터베이스나 데이터 변경 적용하기
  • 데이터베이스 버전을 다음 버전으로 변경하는 관리를 비효율적으로 손수 다루기

개발자들이 데이터 변경 사항을 제대로 인지하지 못한 상태로 두는 비효율적인 상황이 발생한다. 게다가, 그들은 애플리케이션 사용자가 데이터 불일치나 충돌 문제를 경험하게 할 수도 있다.

그림 1은 소프트웨어 개발 프로젝트에서 흔히 사용하는 데이터베이스에 직접 변경을 가하는 방법을 보여준다. 직접 데이터를 변경하는 방법은 불안하고 에러가 발생할 여지가 많다, 그리고 방금 한 것을 되돌리는 걸 어렵게 하며 시간 흐름에 따라 데이터베이스에 어떤 변화가 있었는지 그 히스토리를 분석하는 것도 힘들다. 예를 들어, DBA가 한 건의 조회 데이터를 변경해야 한다는 것을 기억하고 있을지 모른다. 하지만 한 개발자가 나중에 이 데이터를 같은 테이블에 넣어야 한다는 것을 깜빡할 수도 있다.


 요즘엔 Oracle 11g가 출시되고 RAC, GRID 등의 다양한 기능을 제공하지만 아직까지 Oracle 9i를 고집하는 시스템도 있다. 특히나 지금 근무중인 곳은 대형 시스템이다보니 한꺼번에 10g나 11g로 옮겨가는 것을 꺼려하고 있다. 이곳만해도 "만약 작업 소요 시간이 지금보다 느리게 나오면 어떻할거냐"는 문제와 함께 "여러대의 DB를 동시에 옮기는데 따른 서비스 중지 시간" 등의 문제로 인해서 쉽게 결정을 못하는 상태이다. 이런저런 문제가 있긴하지만 예산과 인력만 투입된다면 처리될 문제이다. 적어도 내가 보기엔...

물론 DataStage나 기타 관제 소프트웨어, 백업 구성 등등 신경쓸 문제가 너무 많다는것도 맘에 걸리긴 한다. 이런 문제를 한방에 해결하려면 도데체 몇군데 업체가 회의에 참가해야 할런지... 막막하기만 하다. 그래서 일단 Oracle 9i와 9i RAC 설치 연습을 하려고한다.

 운영체제로는 Linux를 선택했다. 앞으로 Linux를 사용하는 곳이 점점 늘어날거라 생각하고 있고(지난번에 소개한 HP Oracle ExaData라는 제품이 Linux 기반이다. 앞으로 이런 제품이 더 많아질거라 생각한다.), 고가의 UNIX 장비를 소유하지 못한 중소기업체에서도 Oracle에 대한 수요가 늘어날거라 생각하기에 Linux에 Oracle 9i를 설치하려고 마음먹었다.

 DB를 선택했고 Linux라는 운영체제를 선택했으니 이제 Linux 배포판을 선택해야겠다. Oracle에서 배포하는 Oracle Unbreakable Linux(다운로드 링크에는 Oracle Enterprise Linux라는 이름으로 되어있다.)를 사용할까 했으나 업데이트에 문제가 있어서 CentOS 4.7을 선택했다. 현재 CentOS는 5.x 버전이 있으나 Oracle 9i 관련 설치 문서는 RedHat Enterprise Linux 4 기반의 문서가 많기에 CentOS도 4.x 버전대를 선택했다. (CentOS는 RedHat Enterprise Linux의 클론이다.)



다른 UNIX 장비에 Oracle을 설치할때와 순서는 비슷하다.

1. 필수 Software 설치 및 OS 환경 설정하기
2. oracle user 환경 설정하기
3. Oracle 9.2.0.4 설치하기
4. Oracle 9.2.0.8 Patch 설치하기
5. Oracle DB 생성하기


 이번에 새 장비가 들어와서 서버 이전을 해야합니다. 이기종 DBMS간의 이전은 아니라서 참 다행스럽긴한데, 그래도 고민해야할것들이 참 많네요. 그래서 Oracle이라는 DBMS의 관점을 포함해서 일반적인 DBMS Server의 이전이라고 가정하고 서버 이전을 할때 고려해야할 점들을 정리해보고자합니다.

 (1) 서버 이전을 시작하며

 서버 이전을 하기전에 우선 새 장비 도입과 관련된 업체 사람들이 모여서 회의를 하죠.
서버 납품 일정, 스토리지 장비 납품일정, 넷트웍 관련 장비 납품 일정, 전원 및 상면 예약 등등의  협의 사항을 얘기했습니다. 장비가 들어오는 시간 순서부터, 연결하는 순서. 동시에 작업 가능한 일들... 열거하려니 참 힘드네요.

그리고 결정적으로 Migration시에 발생하는 라이센스 변동 내용. 이건... 계약 내용에 없는건데, 갑이 억지를 부리네요. CPU갯수가 두배이상 늘어나는데, 어플리케이션 라이센스도 알아서 처리하라는...(음... CPU갯수가 틀리니까 경고메세지가 뜨는데 그게 보기 싫으시다는) 우리 "갑"님.

 그 외에는 걱정거리는 없네요.
더 많은 CPU 갯수, 더 빠른 CPU, 더 빠르고 용량이 늘어난 스토리지 도입. 뭐 걱정보단 DB 파일 저장 구조를 어떻게 꾸밀지만 고민하면 됩니다. 이것도 중요한거지요.

자세한 고민은 다음회부터 하겠습니다. 그럼 빨리 사무실에 들어가봐야 겠어요. 벌써 15분 가량이 지났네요.
 지난번에 이어지는 Part 3 : "pureQuery로 신속한 애플리케이션 개발"입니다.
^^ 우웅... 다음에는 DB2 관련 문서를 좀 뒤져볼까합니다. DB쪽 공부를 폭 넓게 해볼까하는데 잘 될지 모르겠습니다.

 
원문 : 새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 3 : pureQuery로 신속한 애플리케이션 개발 (한글)

 아래는 본문의 서론 부분을 정리한 내용입니다.

IBM® pureQuery 플랫폼과 이클립스 도구를 사용하면 JDBC보다 코드 작성을 덜 하고도 간단하면서도 고성능의 데이터 액세스 레이어와 애플리케이션을 신속하게 만들 수 있으며 다른 어느 이클립스 기반 도구보다 더 높은 생산성을 얻을 수 있습니다.

목표

  • pureQuery 애플리케이션을 신속하게 만든다.

  • pureQuery 프로그래밍 스타일에 대한 기초 지식을 소개한다.

  • 샘플 프로그램과 JUnit 생성 기능을 사용하여 코드 한 줄 쓰지 않고 생성된 애플리케이션을 실행해 볼 것이다.

  • pureQuery 이클립스 통합이 유연성을 제공하는 방법에 대해 배우고 고성능 애플리케이션 개발에 활용한다.

  • 생성된 애플리케이션을 수정한다.

  • 자바 프로그래밍 내에서 코드 어시스트를 사용하여 pureQuery SQL 편집기 통합을 사용한다.

  • SQL 기능을 실행한다.
---------------------------------------------------------------------------------------------------

시작하기전에

본 연재에 대해

본 튜토리얼은 새로운 IBM pureQuery 도구로 자바 데이터베이스 개발에 생산성을 높이는 방법을 다루는 연재다.

본 튜토리얼에 대해

본 튜토리얼에서는 pureQuery 애플리케이션을 신속하게 만드는 방법을 다룬다. pureQuery 프로그래밍 스타일에 대한 기초 지식을 소개하고 샘플 프로그램과 JUnit 생성 기능을 사용하여 코드 한 줄 쓰지 않고 생성된 애플리케이션을 실행해 볼 것이다. pureQuery 이클립스 통합이 유연성을 제공하는 방법에 대해 배우고 고성능 애플리케이션 개발에 활용한다. 생성된 애플리케이션을 수정하고 자바 프로그래밍 내에서 코드 어시스트, SQL 기능 실행을 사용하여 pureQuery SQL 편집기 통합을 사용한다.

pureQuery 도구에 대한 개요는 Part 1을 참조한다.

자바 프로그램에서 입력한 SQL 오류를 찾고 고치는 법은 Part 2를 참조한다.

본 튜토리얼은 IBM pureQuery 이클립스 기반 도구를 사용하여 pureQuery로 신속하게 애플리케이션을 개발하는 것에 중점을 둔다.

  • 다음과 같은 방식으로 코드 한 줄 쓰지 않고 pureQuery 메서드-스타일 애플리케이션을 빌드할 수 있다.
    • 데이터베이스 테이블과 프로시저에서 pureQuery 애플리케이션을 생성해 만든다.
    • 자바 빈(bean)에서 pureQuery 애플리케이션을 생성해 만든다.
    • 애플리케이션을 위해 JUnit 테스트 케이스를 생성해 만든다.
  • 다음 사항을 수정함으로써 자바 편집기 내에서 pureQuery의 유연한 도구를 사용하여 비즈니스 요구사항에 맞게 pureQuery 애플리케이션을 커스터마이즈할 수 있다.
    • SQL과 자바 통합을 사용해 SQL을 수정한다.
    • 커스터마이즈한 SQL을 사용하여 pureQuery 애플리케이션을 수정한다.

커스터마이즈한 SQL을 사용하여 pureQuery 애플리케이션을 수정한다.

  • Database Explorer
  • 데이터 연결 퍼시스턴스 옵션

플랫폼 지원

IBM 데이터베이스 - IBM Informix® Dynamic Server를 비롯 Linux®, UNIX®, Windows®, zSeries®, iSeries®용 IBM DB2

이클립스 환경

  • IBM Data Studio V1.1
  • IBM Rational® 스위트와 공유하는 향후 셸 지원



+ Recent posts