2009/06/25 10:07

RPM for Oracle DBMS



Oracle RHEL4에 오라클DBMS설치시 필요한 RPM
Trackback 0 Comment 0
2009/06/10 14:13

TAF failover test 하기

1.      DBCA를 이용한 TAF 서비스 등록

§        DBCA실행


Oracle Real Application Cluster database를 선택하고 Next클릭


Service Management
를 선택하고 Next클릭


Next
클릭


Add
버튼을 클릭하여 다음과 같이 서비스 이름을 입력. OK버튼 클릭.


그림과 같이 설정하고 Finish클릭


OK
를 클릭하여 서비스 생성.


서비스 생성 완료. No를 클릭하여 DBCA종료.



§        서비스 생성 확인

rac1 > crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.devdb.db   application    ONLINE    ONLINE    rac2       
ora....b1.inst application    ONLINE    ONLINE    rac1       
ora....b2.inst application    ONLINE    ONLINE    rac2       
ora...._TAF.cs application    ONLINE    ONLINE    rac1       
ora....db1.srv application    ONLINE    ONLINE    rac2       
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....C1.lsnr application    ONLINE    ONLINE    rac1       
ora.rac1.gsd   application    ONLINE    ONLINE    rac1       
ora.rac1.ons   application    ONLINE    ONLINE    rac1       
ora.rac1.vip   application    ONLINE    ONLINE    rac1       
ora....SM2.asm application    ONLINE    ONLINE    rac2       
ora....C2.lsnr application    ONLINE    ONLINE    rac2       
ora.rac2.gsd   application    ONLINE    ONLINE    rac2       
ora.rac2.ons   application    ONLINE    ONLINE    rac2       
ora.rac2.vip   application    ONLINE    ONLINE    rac2



혹은....
rac1 > crs_stat -p | grep devdb_TAF
NAME=ora.devdb.devdb_TAF.cs
NAME=ora.devdb.devdb_TAF.devdb1.srv

§        tnsnames.ora 파일 확인(서버쪽)

다음의 내용이 추가되어 있음을 확인할 수 있다.
DEVDB_TAF =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.mycorpdomain.com)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.mycorpdomain.com)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devdb_TAF)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

 

2.       클라이언트 쪽 tnsnames.ora 파일 수정

§         서버쪽의 DEVDB_TAF를 복사하여 붙여넣는다.
DEVDB_TAF =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devdb_TAF)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

3.       클라이언트 접속 및 failover

§         scott/tiger로 접속한다. è sqlplus scott/tiger@devdb_taf

§         접속한 서버가 몇 번째 노드인지 다음과 같이 확인한다.

SQL> select userenv('instance') from dual;

     
USERENV('INSTANCE')
-----------------------
                                 1

§         서버에서도 다음과 같은 쿼리로 확인한다.

SQL> col machine for a25
SQL> select inst_id, sid, machine, failover_type, failover_method, failed_over
  2  from gv$session
  3  where username='SCOTT';

       INST_ID     SID           MACHINE                                  FAILOVER_T  FAILOVER_M FAI
 ---------- ---------- ------------------------------- ------------- ------------ ---
         1        143          WORKGROUP\YEOHYUNSEUNG    SELECT        BASIC        NO

§         1번 노드 강제 종료

§         Active 서버에서 failover scott 유저 확인
SQL> /

      INST_ID        SID MACHINE                                     FAILOVER_TYPE FAILOVER_M FAI
---------- ---------- ------------------------- ------------- ------------------- ---
         2        153  WORKGROUP\YEOHYUNSEUNG    SELECT             BASIC          YES

 

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0
2009/06/09 10:58

CTF,TAF 설정방법


-         Tnsnames.ora 파일 세팅(클라이언트 쪽)

n        기존 세팅

DEVDB1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

    )

)

 

n        CTF 세팅

DEVDB_CTF =

  (DESCRIPTION =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

    )

)

 

1.       rac1 1521포트로 기동된 리스너를 컨택한다.

2.       그 리스너가 DEVDB라는 서비스를 하고 있다면 DEVDB라는 서비스에 등록되어 있는 인스턴스에 접속한다.

3.       만일 1에서 리스너가 응답이 없거나, 2에서 DEVDB라는 서비스가 없다면, 다음에 지정된 어드레스인 rac2 1521포트로 기동된 리스너를 컨택한다. 여기서 리스너가 응답이 없다면 에러를 리턴하며 접속을 하지 못하게 된다.

4.       2와 마찬가지 과정으로 DEVDB서비스에 등록되어 있는 인스턴스를 접속한다. 여기서 DEVDB서비스를 찾을 수 없다면, 마찬가지로 에러를 리턴하며 접속을 하지 못하게 된다.

-         Fail over방식

l        새로 접속하는 클라이언트

만약 rac1에서 장애가 나면 문제없이 rac2로 페일오버 된다.(인스턴스가 가동되고 있다는 가정하에서)

l        기존에 접속되어 있던 클라이언트

ORA-3113/3114 에러를 만나게 되며 기존의 접속은 끊어진다. 실행되고 있던 DML rac2의 인스턴스에서 트랜잭션 복구를 수행하여 모두 롤백된다.

n        TAF 세팅

DEVDB_TAF =

  (DESCRIPTION =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

      (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))

    )

)

 

 

 

 

 

-         Type

-         Session : 재접속은 필요없음, select fetch도중에 장애를 만나면 fetch는 실패, DW환경이 아니라면 이 방식을 쓰는 것이 좋다.

-         Select : 재접속도 필요없고 fetch도 복구됨. 다량의 레코드를 select할 때 사용.

-         Node : 디폴트 값으로 TAF가 작동하지 않음

-         Method

-         Basic : on-demand 방식으로 페일오버가 필요할 때 살아있는 인스턴스 쪽으로 Oracle Server process를 기동시킨다.

-         Preconnect : 페일오버가 이루어질 인스턴스에 미리 oracle server process를 기동시켜 페일오버시 발생하는 오버헤드를 미리 줄여 놓는 방식이다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0