Oracle 10g에서 종종 문제가 되고 있어서 아래와 같이 고쳐봤습니다. 11g에서도 문제가 되는지는 모르겠습니다. 나중에 확인하면 문서에 추가하도록 하겠습니다.

 아래의 query를 실행해보면 해당 계정에 설정된 profile의 제한값이 나온다.
SELECT A.USERNAME, B.PROFILE, B.RESOURCE_NAME, B.RESOURCE_TYPE, B.LIMIT   
FROM DBA_USERS A, DBA_PROFILES B
WHERE A.PROFILE = B.PROFILE
AND A.USERNAME = '계정명';

 "FAILED_LOGIN_ATTEMPTS           PASSWORD 10"라는 부분이 보일겁니다.
여기를 unlimited로 바꾸거나 새로운 profile을 만들면서 unlimited로 해주고 해당 계정의 profile을 바꿔주면 됩니다.

아래는 profile을 만들고, 사용자계정의 profile을 바꿔주는 구문입니다.
CREATE PROFILE DEFAULT_P1 LIMIT
    COMPOSITE_LIMIT UNLIMITED
    SESSIONS_PER_USER UNLIMITED
    CPU_PER_SESSION UNLIMITED
    CPU_PER_CALL UNLIMITED
    LOGICAL_READS_PER_SESSION UNLIMITED
    LOGICAL_READS_PER_CALL UNLIMITED
    IDLE_TIME UNLIMITED
    CONNECT_TIME UNLIMITED
    PRIVATE_SGA UNLIMITED
    FAILED_LOGIN_ATTEMPTS UNLIMITED
    PASSWORD_LIFE_TIME UNLIMITED
    PASSWORD_REUSE_TIME UNLIMITED
    PASSWORD_REUSE_MAX UNLIMITED
    PASSWORD_VERIFY_FUNCTION NULL
    PASSWORD_LOCK_TIME UNLIMITED
    PASSWORD_GRACE_TIME UNLIMITED
;

ALTER USER 계정명 PROFILE DEFAULT_P1;
Profile을 바꾸고 잘못된 비밀번호를 입력하는 방식으로 시험해 봤는데 아직까지는 잘 되네요.
 Tibero 4 SP1을 사용한지도 벌써 일년이 넘어가고 있다. 그동안 안정화에 꽤 많은 노력을 기울였고, 생각보다 오래 걸렸지만, Tibero를 그럭저럭 사용하고 있다. 문제는 아직까지는 초기에 Tibero 영업에서 얘기한 "Oracle 10g 기준으로 거의 모든(?) 기능이 동일하다"는 얘기에는 많이 모자란 모습이라는 것이다.

 그동안 Tibero에 대해서 몇번 얘기했었는데, 이번에 얘기할 것은 Oracle의 exp, imp에 해당하는 tbexport와 tbimport에 대한 얘기이다. tbexport는 Oracle의 exp와 같이 Online 상태의 DB에서 data를 backup할때 사용하는

 무엇이 문제인가!!
 Oracle에서 export한 덤프 파일을 import할 때에 원본 DB에는 A라는 Tablespace가 존재하지만, import하는 DB에는 A라는 Tablespace가 없다고 가정해보자. 어떻게 되는가. 아래의 이미지를 보면 쉽게 이해가 가지 않을까?
두 DB에 생성된 Tablespace 현황

  DB-1의 ERP라는 유저를 export한 뒤 DB-2의 ERP라는 유저에 import한다고 할 때, 두 DB에 생성된 Tablespace가 서로 다르다면, Oracle에서는 DB-1에서 export한 Table들이 원래 생성되었던 A라는 Tablespace가 DB-2에 없다면 import하는 계정의 default tablespace인 B에 Table을 생성하죠. Tibero에서도 이렇게 될 줄 알았습니다.


 그런데... Tibero에서는 import하는 DB에 원래 DB-1에서 Table이 생성될때 사용했던 Tablespace와 동일한 이름의 Tablespace가 없으면 에러를 발생시키네요. ignore=y 옵션을 주고 시작하면 해당 오류를 그냥 통과하고 나머지를 import합니다만 오류가 발생한 Table은 수작업으로 생성해야 합니다.
 나이를 한살 한살 더 먹어가면서 뭔가 잘 까먹는것 같다. 나의 전문 영역이라고( 이 말에 짱돌을 들어올리신 분들이 계실것이다... 제가 하고 있는것 중에서 그나마 잘 알고있는... 이라는 뜻.... 아시죠... 돌 내려놓으세요. 어르신들... 자자 좋게좋게... ^^; ) 생각하는 오라클에 대한 내용도 해가 갈수록 가물가물해지는 내용이 많고 새로운 기법과 기술들이 나날이 등장하고 있다.(사실은 현재 재직중인 곳에서 메인DB를 Oracle에서 Tibero로 전환 한 뒤에 더더욱 망각의 속도가 빨라지고 있는듯하다.) 그래서 2007년에는 오라클 DBA 과정을 통채로 한번 더 수강하면서 복습했었고, 종종 세미나와 학원 강의를 듣고 있다. 물론 비용이 많이 드니까 자주 들을 수 없다는게 단점이다.
 요즘 책도 잘 나오고, 어느정도 경력도 있으니 알고지내는 전문가도 많을테고, 혼자 혹은 아는 사람들이랑 스터디를 하면 되지 않느냐고 얘기하신다면... 본인의 게으름으로 인해 그건 좀 힘들다는 거다. ㅋㅋㅋㅋ
그리고 전문가들은 다들 바빠서 맨입으로는 모시기 힘들더라는... ㅋㅋㅋㅋ

 요즘 토요일이면 엑시엄에서 진행하는 세미나 형식의 강의를 듣고있다.  제목들만 살펴봐도 참 듣고 싶어지는 수업들이다.
 대용량 데이타베이스 아케텍쳐
 데이타베이스 관리를 위한 PL/SQL
 AWR을 이용한 고성능 데이타베이스 튜닝
 초보자를 위한 데이타 모델링 2부
 그 중에서도 "AWR을 이용한 고성능데이타베이스 튜닝" 강의를 듣고 있다. 그동안 몰랐던 Oracle 10g의 속 내용과 세월속에 점점 잊어가고 있던 Oracle 내부구조를 다시 학습하는 기회가 되어서 참 좋다.
 문제는 이론 수업이라서 내가 알아서 부지런히 실습을 해야하는건데, 실습환경 구축이 아직 안끝났다는... ㅜㅜ (이런 벌써 강의가 중반부를 넘어서고 있는데) ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ        아 웃자 힘들땐 웃어야해~~~

 어떤 강의냐고 물어보신다면 아래의 책을 집필한 저자중 한분이 강의를 하신다는거. 강의 내용은 "오라클 AWR을 이용한 고성능 데이타베이스 튜닝"이라는 책의 내용을 기반으로 한다는 거. 이 책의 목차를 보면 알게되겠지만, Oracle 10g의 내부 구조와 락, 래치에 대한 내용과 AWR을 이용하여 상태 분석 및 튜닝에 대한 내용이 주를 이룬다고 보면된다.

강의 준비를 열심히 하시고, 지각하는 사람이 있으면 남아서 챙겨주는 아름다운 마음까지...

고성능데이터베이스튜닝
카테고리 컴퓨터/IT > 데이터베이스 > DB
지은이 김지한 (비팬북스, 2010년)
상세보기
오라클 AWR을 이용한 고성능 데이터베이스 튜닝
국내도서>컴퓨터/인터넷
저자 : 김지한,황오현,장효성
출판 : 비팬북스(러닝스페이스) 2010.11.10
상세보기

왜 책 정보가 두줄이냐고 궁금해할것 같은데, 아랫칸은 인터파크도서 정보이다. 윗칸은... 잘 기억이 나지 않는다. 아마도 다음 책 정보였던거 같은데...

 그리고 지난 주말에 집에서 사용중인 PC에 가상머신으로 리눅스 설치 완료. Oracle VirtualBox를 설치했는데, 이거 쓸만한듯. 공짜지만 될거 다 되고...
암튼 현재 실습환경 구축 중....
얼른 이것저것 질러봐야겠다. 아 배고프다. 퇴근시간이 다가오는구나. 집에 도착하면 책이라도 봐야겠다.
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 편집창이 따로 있습니다. 거기에서 실행시키면 잘 됩니다.


 그동안 MS Windows 7에 Oracle client를 설치하려면 설정 파일을 수정해줘야만 했었습니다. 각종 블로그에 설치하는 방법이 올아왔었죠. 문제는 그렇게 해줘도 일부 설치가 안되는 PC가 생겼으며, 당연히 Oracle의 공식적인 지원이 없었기에 안 되는 사람은 어쩔수 없이 Windos XP로 돌아가거나, Windows 7 재설치라는 악수를 둘 수 밖에 없었습니다.

 이번에 Oracle 11g R2의 Windows 버전이 출시되었습니다.
OTN에 Oracle 11g R2 다운로드 페이지 (지난번에 제가 64비트 버전은 링크가 깨져있다고 했었는데, 이번에는 잘 들어가집니다. 다운로드 받아야 겠네요. ^^)

 위의 웹 페이지에서 Windows 버전을 다운로드 받으면 MS Windows 7에 정상적으로 설치됩니다. 물론 Oracle 9i 및 10g client를 설치하면 사용할 수 있었던 Enterprise Manager는 메뉴에서 사라졌네요.(11g R1에서부터 없어졌었나요? 11g R1을 설치해보질 않아서 확인을 못했습니다.) 그 외에는 잘 됩니다.

  작년말에 한창 문제가 되었던 내용입니다.
저희가 운영하는 Oracle DB 중에서 Tibero로 이전하는 DB가 있었습니다. Tibero에서 Oracle로 Gateway(Tibero에서 제공한 Gateway)를 이용해서 Database link를 만들어서 일반 DB Link 이용하듯이 쓸 수 있어서 좋았는데, 문제는 Oracle DB에 있는 기준 정보들이 변경되었을때 이를 Tibero에 적용시킬 방법이었습니다. Oracle에서는 현재 Tibero로 DB Link를 지원하지 않으므로 Oracle측에서 변동내용이 있을때 Data 동기화 작업을 위해서 Tmax Prosync라는 제품을 이용하였습니다.

* Tmax Prosync
[Oracle to Tibero Prosync], [Tibero to Oracle Prosync]가 있는데, [Tibero to Oracle Prosync]는 시스템에 부하를 많이 주는 문제가 있어서 제외하고 [Oracle to Tibero Prosync](이하 Prosync)만 사용하기로 했었습니다.
 Prosync는 Oracle의 로그마이너를 이용하여 테이블의 변동 내용을 알아내고, 이를 로그 파일로 저장한뒤에 Tibero측에 insert, update, delete 문장을 보내서 실행시키는 구조입니다. 그래서 Oralce DB에서도 필요한 설정을 했죠. (알고 계시겠지만 Supplemental Logging 설정이 필요합니다.)
그리고 실제 구축을 했었죠. 그런데 실제로 사용하는 중에 문제가 생겼습니다.

* 문제
 일부 테이블은 몇개의 컬럼이 빠진채로 변경 내용이 감지 되어서 Tibero측에 정상적인 쿼리문이 보내지지 않더군요.

* 원인 및 해결 과정
 TmaxData의 여러 엔지니어가 와서 이 문제에 달려들었었습니다. 결국 마지막에 밝혀낸건 Oracle logminer의 버그라고 하네요. 10g 버전에서는 해결이 되었다고 합니다. 10g를 사용하는 곳은 이상없이 사용 가능하실테고, 저희처럼 9i를 사용하는 곳은 문제가 되네요. Function Based Index가 생성되어있는 테이블은 Logminer에서 비정상적으로 인식을 해서 변경 내용을 정상적으로 감지 하지 못하더군요. Function Based Index를 제거하니까 바로 정상적으로 인식하더군요.
 해당 인덱스를 살펴보니 실제로 쓰이지는 않는 인덱스이더군요. (왜 만들었는지... 제가 입사하기전에 만든거라 왜 만든건지, 누가 요청한건지를 모릅니다.) 그래서 해당 인덱스를 일반 인덱스로 바꿔버렸습니다. 그 다음부터는 잘 되더군요.
OTN(한국 Oracle Technology Network)에 올라온 문서인데, Oracle 9i RAC을 Linux, FireWire 환경에 설치하는 방법을 설명하는 문서입니다. 기본적으로 개발 및 테스트 용도의 시스템으로 사용하는데 무리가 없다고 합니다. 저는... 아직 구축해보지 못 했구요. ㅡ.ㅡ (이놈의 게으름은...)
 OTN의 화면상에서는 이미 링크가 없어진 상태입니다. 속 내용을 전부 넣으려다 저작권 문제가 생길것 같아서 링크를 걸고, 서문에 해당하는 내용만 가져왔습니다. 개요와 구축에 사용사는 기술 소개 정도는 복사해와도 되겠죠?? 출처도 명확히 표시했으니...
 물론 해당 사이트에서 관련 링크가 삭제된 문서라 내용은 상당히 오래전에 작성된 글임을 짐작하실 수 있을겁니다. 하지만 아직가지 Oracle 9i를 사용하는 업체가 제법있구요. 개인적으로 구성한다면 이런것도 가능하다는걸 습득하는걸로도 도움이 될거 같습니다.
음... 이 문서의 최근 버전에서는 OacleVM을 이용하더군요. 아무래도 이 문서는 실제로 적용해보지는 않고 최근 버전의 문서를 이용해서 RAC 구축을 연습해볼것 같습니다. 그게 좀더 편할거 같아요. ^^; 암튼... RAC 구축에 성공하는 날 다시 글을 올리겠습니다.

원문 보기(링크)


목차

개 요
Oracle9i Real Application Cluster(RAC) 소개
RAC에 필요한 소프트웨어
공유 스토리지 개요
FireWire 기술
하드웨어 및 비용
간단한 프로세스 설명
Red Hat Linux(Fedora Core 1) 설치
네트워크 구성
적합한 Linux 커널 얻기 및 설치
"oracle" 사용자 및 디렉토리 생성
공유 FireWire 스토리지 장치에 분할 영역 생성
RAW 바인딩 생성
RAW 볼륨에서 심볼 링크 생성
Linux 서버 구성
hangcheck-timer 커널 모듈 구성
원격 액세스를 위한 RAC 노드 구성
각 RAC 노드에 대한 모든 시작 명령
Red Hat Linux 시스템(Oracle Metalink Note 252217.1) 갱신
Oracle9i 설치 파일 다운로드/압축 풀기
Oracle9i Cluster Manager 설치
Oracle9i RAC 설치
Oracle Database 생성
TNS 네트워킹 파일 생성
RAC 클러스터/데이타베이스 구성 확인
클러스터 시작 및 중지
TAF(Transparent Application Failover) 


개요

Oracle Real Application Clusters(RAC) 기술에 익숙해질 수 있는 가장 효율적인 방법은 실제 Oracle RAC 클러스터를 사용해보는 것입니다. 이 새로운 기술을 학습해보면 결함 허용, 새로운 보안 수준, 로드 밸런싱 및 쉬운 업그레이드 성능 등과 같은 Oracle RAC의 장점을 빨리 파악하게 될 것입니다. 하지만 이렇게 하는 데에는 전형적인 프로덕션 RAC 구성을 갖추기 위해 필요한 하드웨어 구입 비용이 문제입니다. 예를 들어 노드 두 개의 소규모 클러스터를 구축하는 데에도 10,000달러에서 20,000달러의 비용이 듭니다. 하지만 이 비용에는 프로덕션 RAC 환경의 핵심인 공유 스토리지 비용은 포함되지도 않았습니다.

단순히 Oracle RAC 기능을 배우려는 독자를 대상으로 하여 본 문서에서는 저렴한 비용으로 일반 판매 제품과 다운로드 가능한 소프트웨어를 사용하여 Oracle9i RAC 시스템을 구성하는 방법을 설명합니다. 이 구성을 위해서는 대략 1,000달러에서 1,500달러 정도의 비용이 듭니다. 이 시스템은 Linux를 사용하는 이중 노드 클러스터로 구성되며 IEEE1394 (FireWire) 드라이브 기술 기반의 공유 디스크 어레이가 포함됩니다.

본문의 내용 외에도 다양한 방식으로 저비용의 Oracle9i RAC 시스템을 구축할 수 있습니다. 예를 들어, 공유 스토리지를 FireWire 대신 SCSI를 사용하여 구현할 수도 있습니다. 일반적으로 SCSI 카드는 대략 70달러 정도이고 80GB 외장형 SCSI 드라이브가 700달러에서 1,000달러 정도라는 점을 감안하면 Firewire보다 SCSI에 더 많은 비용이 필요할 것입니다. 일부 메인보드에는 SCSI 컨트롤러가 내장되어 있을 수도 있습니다.

이러한 구성은 절대로 프로덕션 환경에서 실행될 수 없으며, 오라클 또는 기타 어떤 업체에서도 지원되지 않습니다. 광 채널은 포인트 투 포인트 또는 스위치 토폴로지 중 어떤 구성에서도 시스템과 스토리지 장치를 연결할 수 있는 고속 직렬 전송 인터페이스이기 때문에, 프로덕션 환경에서는 이러한 광 채널도 선택 대상으로 고려할 수 있습니다. FireWire는 테스트 및 개발 목적으로 광 채널에 대한 저비용의 대안이 될 수 있지만, 아직 프로덕션 환경에 사용할 수 있는 수준은 아닙니다.

참고: 본 문서를 작성한 시기에는 이러한 설명이 Oracle Database 10g에서 작동하는지 확인하지 않았습니다. 이에 대해서는 몇 개월이 지난 후에 개별 문서에서 10g를 사용한 유사 설치 방법을 설명할 예정입니다.


Oracle9i Real Application Clusters(RAC) 소개

Oracle Real Application Clusters(RAC)는 Oracle Parallel Server(OPS)의 후속 제품으로 개발되었습니다. RAC를 사용하면 동일 데이타베이스(스토리지)를 여러 인스턴스에서 동시에 액세스할 수 있습니다. RAC는 시스템 확장이 가능하기 때문에 결함 허용, 로드 밸런싱 및 향상된 성능을 제공합니다. 또한 모든 노드가 동일한 데이타베이스를 액세스하기 때문에 한 인스턴스에서 장애가 발생해도 데이타베이스에 대한 액세스가 손실되지 않습니다.

Oracle RAC의 핵심은 공유 디스크 하위 시스템입니다. 클러스터의 모든 노드는 클러스터 내의 모든 노드에 대한 데이타, 리두 로그 파일, 제어 파일 및 매개변수 파일을 액세스할 수 있어야 합니다. 데이타 디스크는 모든 노드가 데이타베이스를 액세스할 수 있도록 허용하기 위해 전역으로 사용할 수 있어야 합니다. 각 노드는 자신의 리두 로그 및 제어 파일이 있지만, 시스템 장애의 경우 특정 노드를 복구하기 위해 다른 노드에서도 이러한 파일을 액세스할 수 있어야 합니다.

일부 클러스터링 솔루션의 경우에는 공유 스토리지가 사용되지 않습니다. 일부 업체들은 데이타를 전체적으로 공유하는 대신 여러 시스템에 분산시켜두는 연합 클러스터(federated cluster)라는 이름의 방식을 사용합니다. 하지만 Oracle RAC에서는 여러 노드가 동일 디스크 세트를 사용하여 데이타를 저장합니다. Oracle RAC에서 데이타, 리두 로그, 제어 및 아카이브 로그 파일은 원시 디스크 장치의 공유 스토리지 또는 클러스터화된 파일 시스템에 보관됩니다. 오라클의 이러한 클러스터 방식은 클러스터의 모든 노드를 총체적으로 처리하는 능력을 활용하며 동시에 복구 보안 기능을 제공합니다.

절대적인 필수 사항은 아니지만 오라클은 Oracle Cluster File System(OCFS)을 설치할 것을 권장합니다. OCFS는 모든 노드에 동일한 파일 시스템을 작성함으로써 사용자의 디스크 관리 편의를 향상시켜줍니다. OCFS는 필수 요소가 아니지만 OCFS를 사용하지 않을 경우 모든 분할 영역을 수동으로 만들어야 합니다. (참고: 본 문서에서는 OCFS 설치 및 활용에 대해 자세히 다루지 않으며, 분할 영역을 작성하고 원시 장치를 이러한 분할 영역에 수동으로 바인드하는 작업을 설명합니다.)

Oracle RAC와 OPS의 가장 큰 차이는 새로 추가된 캐시 결합 기능입니다. OPS에서는 한 노드에서 다른 노드로 데이타를 요청할 경우 해당 데이타를 먼저 디스크에 기록한 다음에야 요청 노드에서 데이타를 읽을 수 있습니다. 하지만 캐시 결합 기능을 사용할 경우 데이타는 잠금 상태를 거치지 않고 바로 전송됩니다.

Red Hat Linux에 OCFS를 사용하지 않기로 한 중요한 이유는 OCFS가 RPM 형식으로 제공되기 때문입니다. 모든 RPM 모듈과 선행 컴파일된 모듈은 Red Hat Enterprise Linux AS(1,200달러) 커널 이름 지정 표준과 연결되어 있으며 제공된 2.4.20 연결 커널에서 로드되지 않습니다.

미리 구성된 Oracle9i RAC 솔루션은 Dell, IBM 및 HP와 같은 업체에서 프로덕션 환경용으로 제공됩니다. 하지만 본 문서에서는 Linux 서버와 저렴한 공유 디스크 솔루션인 FireWire를 사용하여 개발 및 테스트 용도의 Oracle9i RAC 환경을 구성하는 방법을 중점적으로 설명할 것입니다.                    


RAC에 필요한 소프트웨어와 구입 정보

RAC는 Oracle9i Database Enterprise Edition 내에 포함되어 있습니다. (오라클은 최근 Oracle Database 10g Standard Edition에서도 RAC를 사용할 수 있다고 발표하였습니다.) 클러스터에 Oracle9i Enterprise Edition을 설치하면 Oracle Universal Installer(OUI)에서 클러스터가 인식되어 RAC 설치 옵션이 제공됩니다. 대부분의 UNIX 플랫폼에서는 필요한 클러스터웨어를 위한 OSD 설치가 필요합니다. Intel 플랫폼(Linux 및 Windows)을 위해, 오라클은 Oracle9i Enterprise Edition 릴리스에 OSD 소프트웨어를 함께 제공하고 있습니다.


공유 스토리지 개요

현재 광 채널은 가장 대중적인 공유 스토리지 솔루션 중 하나입니다. 앞서 언급한 바와 같이 광 채널은 포인트 투 포인트 또는 스위치 토폴로지 모두에서 시스템과 스토리지 장치를 연결하는 데 사용되는 고속 직렬 전송 인터페이스입니다. 광 채널에서 지원되는 프로토콜에는 SCSI와 IP가 포함됩니다. 광 채널 구성은 최대 127개의 노드를 지원할 수 있으며 초당 처리량은 최대 2.12GB입니다. 하지만 광 채널은 매우 비쌉니다. 광 채널 스위치 만으로도 1,000달러 정도의 비용이 소모될 수 있습니다. 이 외에도 광 채널 스토리지 어레이 및 고급 드라이브를 구입해야 하며, 드라이브는 36GB 용량의 경우 300달러의 비용이 필요합니다. 서버에 대한 광 채널 카드를 포함하는 전형적인 광 채널 설정의 기본 설정에는 대략 5,000달러의 비용이 들며 여기에 클러스터 구성 서버 비용은 포함되지 않습니다.

광 채널에 대해 비교적 저렴한 대안은 SCSI입니다. SCSI 기술은 공유 스토리지를 위한 적절한 성능을 제공합니다. 하지만 GPL 기반 Linux 가격에 익숙한 관리자 및 개발자에게는 SCSI도 비용 부담이 클 수 밖에 없습니다. SCSI 구성에서 이중 노드의 클러스터 비용은 1,000달러에서 2,000달러 정도입니다.

이 외에 자주 사용되는 솔루션은 Sun NFS(Network File System)입니다. Sun NFS는 공유 스토리지에 사용할 수 있지만 네트워크 기기나 기타 유사 장비를 사용할 경우에만 가능합니다. 특히 NFS 상의 직접 입출력이 보장되는 서버가 필요합니다.


FireWire 기술

Apple Computer 및 Texas Instruments에서 개발된 FireWire는 고속 직렬 데이타 버스에 대한 교차 플랫폼 구현 기술입니다. 고대역폭, 장거리(최대 100미터 길이) 및 고성능 버스 기능을 제공하는 FireWire는 디지털 비디오(DV), 전문 오디오, 하드 드라이브, 고급 디지털 스틸 카메라 및 홈 엔터테인먼트 장치와 같은 애플리케이션에 사용되고 있습니다. 현재 FireWire는 초당 800MB의 전송 속도로 운영되며, 차세대 FireWire의 경우에는 이론상 1,600Mbps의 비트 속도를 지원하고 그 이후에는 3,2000Mbps까지도 지원할 예정입니다. 즉, 초당 3.2기가비트의 성능을 제공할 수 있는 FireWire는 이러한 속도로 인해 대용량 데이타 파일을 전송 뿐만 아니라, 압축되지 않은 HD(high-definition) 비디오 또는 다양한 SD(standard-definition) 비디오 스트림 처리와 같은 가장 어려운 비디오 애플리케이션의 경우에도 꼭 필요한 기술입니다.

다음 표는 여러 디스크 인터페이스 간의 속도를 비교한 것입니다. 각 인터페이스에는 초당 최대 전송 속도가 kb(킬로비트), KB(킬로바이트), Mb(메가비트) 및 MB(메가바이트) 단위로 표시되어 있습니다. 표에서 알 수 있듯이 IEEE1394 기능은 다른 사용 가능한 디스크 인터페이스 기술과 비교할 때 적정 성능을 제공합니다.

디스크 인터페이스 속도
직렬 115 kb/s - (.115 Mb/s)
병렬(표준) 115 KB/s - (.115 MB/s)
USB 1.1 12 Mb/s - (1.5 MB/s)
병렬(ECP/EPP) 3.0 MB/s
IDE 3.3 - 16.7 MB/s
ATA 3.3 - 66.6 MB/sec
SCSI-1 5 MB/s
SCSI-2 (Fast SCSI / Fast Narrow SCSI) 10 MB/s
Fast Wide SCSI (Wide SCSI) 20 MB/s
Ultra SCSI (SCSI-3 / Fast-20 / Ultra Narrow) 20 MB/s
Ultra IDE 33 MB/s
Wide Ultra SCSI (Fast Wide 20) 40 MB/s
Ultra2 SCSI 40 MB/s
IEEE1394(b) 100 - 400Mb/s - (12.5 - 50 MB/s)
USB 2.x 480 Mb/s - (60 MB/s)
Wide Ultra2 SCSI 80 MB/s
Ultra3 SCSI 80 MB/s
Wide Ultra3 SCSI 160 MB/s
FC-AL Fiber Channel 100 - 400 MB/s

 오랫만에 AIX에 Oracle Database client를 설치할 일이 생겼습니다. 그런데, X window로 원격 접속을 하려는데 너무 느려서 화면이 뜨지를 않더군요. telnet으로만 접속해서 작업을 해야할 상황이 되었습니다. 근데 telnet 접속도 아주 느리네요.
 그래서 Oracle client를 설치하는 것 보다는 Instant client를 설치하는 것이 적절할거 같아서 Instant client를 다운 받았습니다. 용량도 적당하고, 설치도 쉽고... 이렇게 진행을 했죠. ORACLE_HOME, TNS_ADMIN, ORACLE_BASE, PATH와 LD_LIBRARY_PATH 등을 설정을 하고 sqlplus를 실행시켰더니 오류가 발생하더군요.

Message file sp1<lang>.msb not found

 우잉 이건 뭐지??? 구글님께 여쭤보니 환경 변수를 설정하라는 내용의 글들이 많이 보이더군요.
그중에서 OTN에서 찾은 아래의 두 글에 해답이 있었습니다.
Message file sp1 lang .msb not found
AIX instantclient "Message file sp1<lang>.msb not found"

AIX에서는 LIBPATH를 설정해줘야 하는데, 제가 이건 쏙 뺐더군요.
아... 그리고 결정적으로 제가 설치 관련 내용을 잘 따르지 않았다는걸 알게 된게요.
바로 아래의 링크를 클릭하시면 나오는 인스턴트 클라이언트 다운로드 웹 페이지 하단에 있는 영문 설명이더군요.

Instant Client Downloads for AIX5L (64-bit)

내용은 아래와 같습니다.

Installation Steps:

1. Download the appropriate Instant Client packages for your platform. All installations REQUIRE the Basic package.


2. Unzip the packages into a single directory such as "instantclient".

3. Set the library loading path in your environment to the directory in Step 2 ("instantclient"). On AIX, LIBPATH is the appropriate environment variable.

4. Start your application and enjoy.


 MS-SQL에서 Oracle에 있는 Data에 접근하기 위한 방법으로 Openquery라는걸 소개한 적이 있죠.
기본적으로 제공하는 기능이라 좋긴 하지만 동적으로 쿼리를 만들어서 결과값을 받아올수 없다는 얘기를 한 적이 있습니다. 그렇게 되면 WHERE절 조건을 정확하게 줄 수 없으니 오라클 DB에 부하를 많이 주게 되겠죠.
저도 이렇게 알고 서비스 중인 MS-SQL과 Oracle 사이에 Data 동기화 프로시져를 만들었었습니다.
그런데....

 웬걸...

 회사에서 사용중인 MS-SQL 2005에서 혹시나 하는 마음에 문자열 변수에 커서를 정의하는 문장까지 포함해서 동적으로 쿼리를 만들어 주고, 커서를 열었더니... 결과 값이 정상적으로 나오네요. 앗싸~ 가오리~

아래와 같은 방식으로 처리하니까 동적으로 쿼리문장을 만들어서 실행시키고 결과값을 커서에 받아서 사용할 수 있습니다.


DECLARE @QUERY_STRING VARCHAR(1000)
DECLARE @CODE        VARCHAR(30)
SET @CODE='SUPERCODE'
DECLARE @USERNAME VARCHAR(50)

SET @QUERY_STRING = 'DECLARE ORA_CUR CURSOR FOR
                     SELECT USERNAME
                         FROM OPENQUERY(ORA_DB, ''SELECT USERNAME
                                FROM USER_INFO
                               WHERE CODE='''''+@CODE+''''' AND USER_FLAG=''''N'''' '') '

EXEC (@QUERY_STRING)
OPEN ORA_CUR
FETCH NEXT FROM ORA_CUR INTO @USERNAME

WHILE @@FETCH_STATUS = 0
    BEGIN
    INSERT INTO dbo.USER_INFO(USERNAME)
    VALUES(@USERNAME)

    FETCH NEXT FROM ORA_CUR INTO @USERNAME
  END;

CLOSE ORA_CUR

DEALLOCATE ORA_CUR

 요즘 이기종 DBMS간의 Data 동기화에 대해서 많은 고민을 하고 있습니다. 지금 근무하는 직장에 입사하기 전, DW 구축 업무를 했을 때에는 Data 동기화보다는 정해진 시간내에 통계 Data 구축을 마치는데에 신경을 썼지 실시간 동기화는 큰 필요성을 느끼지 못했었죠. ETL Tool을 이용하면 여러 시스템에서 Data를 가져오거나, 보내주는 Data file 등을 가공하는데 불편함이 없었으니까요. DataStage가 좋더군요. (비싼게 좋네요. ㅡㅡ)
 고사양, 대용량 시스템에서 DW 구축할때와는 달리 소규모 DB를 여러대 사용하는 환경으로 바뀌게 되니까 여러가지 제약과 마주치게 되었습니다. 예산이 적다보니 편리한 ETL Tool은 쓸 수 없고, 기준 정보를 동기화 해야한다던지(꼭 실시간을 원하더군요.), 서로 다른 서비스/업무 시스템에서 서로 다른 DBMS를 사용하는 경우가 많네요.
 Oracle을 사용하던 중에 MS-SQL이 도입되었고, 이제는 TmaxData의 Tibero까지 도입되었습니다. ㅜㅜ
TmaxData의 ProSync, Tibero와 MS-SQL 등과 씨름하던 중에 Oracle의 Golden gate에 대해서 듣게 되었고, 01월 12일(화)에 세미나를 한다는 정보를 접하게 되었습니다. 월차를 내고 거기에 갔었죠. 이 글은 Oracle Data Integration Day에 참석한 DBA의 소감입니다.

 아래 사진은 코엑스 인터컨티넨탈 호텔 지하1층 다이아몬드홀 앞에 준비되어있던 참석자를 위한 휴식 공간에 비치된 의자들입니다. 편안하게... 거의 누워있는듯한 자세로 앉게 되는 빈백(이름이 맞는지 모르겠네요?)과 영화 감독님 의자(낚시 의자 같은)입니다. 편하더군요.



















































 늦게 도착해서 첫번째 세션인 [[Keynote] Real Time Enterprise를 위한 혁신 : Data Integration]은 듣지 못했고, 두번째 세션인 [Real Time Data Integration 고객 사례 : 현대증권]부터 들었습니다.

 Golden gate
 Exadata 소개 세션을 제외한 세션들은 저마다 차이는 있으나 Golden gate를 이용한 고객 사례 소개와 이번에 새로 나온 제품이 아닌 기존에 여러 기업에서 사용하고 있던 좋은 솔루션이라는 점을 강조하고 있었습니다.
 일단 제가 봐도 좋아보이는 점은 다양한 이기종 DBMS간의 Data 동기화를 가능하게 해준다는 점과 단방향 및 양방향 동기화까지 지원해준다는 점입니다. 실시간 동기화는 현대증권에서 이미 구축 사례가 있으니 신뢰가 가네요.
 저희 회사처럼 세 가지 이상의 DBMS를 사용하는 곳이라면 적절한 솔루션이 아닐까요? 음... 가격을 모르니까 좀 걱정이 되긴 하네요.

 Exadata V2
 Exadata는 하드웨어와 소프트웨어를 통합한 제품으로 DW에 초첨이 맞춰져있었던 Exadata V1때부터 관심이 있던 제품인데, V2는 정말 맘에 드는 제품으로 변해있더군요. SUN을 인수 이후 가장 눈에 띄는 제품이라고 생각합니다. 두 회사의 강점이 모여서 나온 이 제품은 SUN의 Flash fire 및 하드웨어 노하우와 Oracle의 DBMS, Storage 관리 기능이 한데 묶여서 DW와 OLTP를 모두 지원하는 하이브리드 장비이면서 기존의 Exadata V1보다 월등히 빠른 제품이 되었습니다.
 강력한 Data 압축 기능(Exadata Hybrid Columnar Compression라고 하던데... 정확한 명칭인지는 확인을 못했습니다.)을 지원하는... 좀 아쉬운점은 일반 Oracle 11g에서도 지원하는 기능인데, Exadata에서만 작동 가능하도록 설정되어 있다고 합니다. 음...
 Exadata의 핵심은 SUN의 Flash Fire 카드를 장착하고 Oracle Storage Software를 설치한 SUN Oracle Exadata Storage Server인것 같습니다. Flash Fire 카드의 캐쉬 기능을 이용하여  반응 속도를 빠르게 하고, 강력한 압축 기능을 이용하여 Storage 효율을 높인 점, 그리고 SUN Oracle Exadata Storage Server가 자체적으로 Query 문장을 인식하여 처리가 가능하여 더욱 빠른 Data 처리가 가능하도록 만들어져있더군요. 언젠가 여건이 된다면 Exadata를 도입한 회사에서 근무해보고 싶네요. 음... 한번 만져보고 싶은...

그리고...
 세미나 참가자 기념품이 배송 사고로 인해서 추후 택배로 배송해준다고해서 회사 주소를 적어놓고 왔는데, 오늘 도착했습니다. 아래 사진에 보이는 제품입니다. ^^ 폰카로 찍어서 화질이 안 좋네요.

 회사에서 MS-SQL과의 Data 동기화에 누락된게 있다고 전화가 와서 경품 추첨을 뒤로한채 나와야 했었는데, 이날 경품 중에 순금이 있더군요. ㅜㅜ
꼭 받고 싶었는데... 우웅...

+ Recent posts