'Oracle/RAC'에 해당되는 글 13건

  1. 2010.06.16 CTF, TAF 설정
  2. 2010.06.16 srvctl 유틸리티 1
  3. 2010.06.14 crs_stat 각 정보의 의미는?
Oracle/RAC2010. 6. 16. 16:37

-         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를 기동시켜 페일오버시 발생하는 오버헤드를 미리 줄여 놓는 방식이다.

출처 : http://homeboy.tistory.com/73

'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
srvctl 유틸리티  (1) 2010.06.16
crs_stat 각 정보의 의미는?  (0) 2010.06.14
Posted by 자수성가한 부자
Oracle/RAC2010. 6. 16. 13:42

srvctl 유틸리티는 무엇인가?

데이터베이스와 인스턴스, 설정 정보 관리, 인스턴스와 서비스를 이동하거나 제거하는데 쓰이는 유틸리티로
디폴트로 각각의 노드에 설치된다.(물론 RAC 설치시에)

srvctl 유틸리티 사용법은 어떻게 되는가?

사용법을 확인하는 방법은 아래와 같다.

os] srvctl -h

Usage: srvctl [-V]
Usage: srvctl add database -d <name> -o <oracle_home> [-m <domain_name>] [-p <spfile>] [-A <name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s <start_options>] [-n <db_name>] [-y {AUTOMATIC | MANUAL}]
Usage: srvctl add instance -d <name> -i <inst_name> -n <node_name>
Usage: srvctl add service -d <name> -s <service_name> -r "<preferred_list>" [-a "<available_list>"] [-P <TAF_policy>]
.
.
.

start나 stop에 관한 것만 보고 싶을 때는 아래와 같이 하면 된다.

os] srvctl -h | grep start
os] srvctl -h | grep stop

그럼, 실제로 인스턴스를 shutdown 해보고 startup해보자.

현재의 crs status 를 확인해보면

[oracle@rac1 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    ONLINE    rac1       
ora....ek2.srv application    ONLINE    ONLINE    rac2      
ora....ORCL.cs application    ONLINE    ONLINE    rac2      
ora....k1.inst application    ONLINE    ONLINE    rac1       
ora....k2.inst application    ONLINE    ONLINE    rac2      
ora.rac.db     application    ONLINE    ONLINE    rac2      
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....FT.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....HT.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


여기서 srvctl 유틸리티를 이용하여 인스턴스를 shutdown 해보면

[oracle@left ~]$ srvctl stop instance -d rac -i rac1

명령어 실행 후 crs status 를 확인해보면 rac1 의 인스턴스가 내려가 있는 것을 확인할 수 있다.

[oracle@rac1 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    OFFLINE              
ora....ek2.srv application    ONLINE    ONLINE    rac2      
ora....ORCL.cs application    ONLINE    ONLINE    rac2      
ora....k1.inst application    OFFLINE   OFFLINE              
ora....k2.inst application    ONLINE    ONLINE    rac2      
ora.rac.db     application    ONLINE    ONLINE    rac2      
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....FT.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....HT.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


위와 같이 srvctl 을 이용하여 데이터베이스, 인스턴스, 그리고 서비스 등을 올렸다 내렸다 할 수 있다.

 

'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
CTF, TAF 설정  (0) 2010.06.16
crs_stat 각 정보의 의미는?  (0) 2010.06.14
Posted by 자수성가한 부자
Oracle/RAC2010. 6. 14. 10:08
RAC 설치 후에는 crs_stat이란 명령어를 사용할 수 있습니다.

우선 오라클 유저로 접속 후 crs_stat 명령을 입력하여 봅시다.

os] crs_stat -t

Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    ONLINE    left       
ora....ek2.srv application    ONLINE    ONLINE    right      
ora....ORCL.cs application    ONLINE    ONLINE    right      
ora....k1.inst application    ONLINE    ONLINE    left       
ora....k2.inst application    ONLINE    ONLINE    right      
ora.bitek.db   application    ONLINE    ONLINE    right      
ora....SM1.asm application    ONLINE    ONLINE    left       
ora....FT.lsnr application    ONLINE    ONLINE    left       
ora.left.gsd   application    ONLINE    ONLINE    left       
ora.left.ons   application    ONLINE    ONLINE    left       
ora.left.vip   application    ONLINE    ONLINE    left       
ora....SM2.asm application    ONLINE    ONLINE    right      
ora....HT.lsnr application    ONLINE    UNKNOWN   right      
ora.right.gsd  application    ONLINE    UNKNOWN   right      
ora.right.ons  application    ONLINE    UNKNOWN   right      
ora.right.vip  application    ONLINE    ONLINE    right

위와 같은 정보가 나옵니다.

그럼 crs_stat은 어떤 정보를 보여주는 명령어인지 감은 오실겁니다.

정확히 얘기해서 crs_stat은 클러스터 노드의 리소스들에 대한 상태정보를 보여주는 명령어 입니다.

그럼 각 컬럼이 무엇을 의미하는지 알아보죠.

Name : 리소스의 이름을 나타냅니다.
Type : 리소스의 타입을 나타냅니다.
Target : 오라클 클러스터웨어가 리소스에 대해 어떻게 하려고 하는지 보여줍니다.
            만약 target이 online이고, 클러스터 노드가 실패한다면 오라클 클러스터웨어는 다른 노드에서 그 리소스(어플리케이션)을 재시작하려고
            시도합니다.
State : 클러스터 노드에서 성공적으로 실행되고 있는지 아닌지를 보여주는 항목입니다.
          online / offline / unkown
Host :  서버의 hostname을 나타냅니다.



참고로 위의 crs_stat 명령어를 실행하면 리소스 이름들이 잘려보이므로
아래의 스크립트를 이용하면 전체 이름이 잘 나옵니다.
(참고로 os에 따라 명령어의 위치가 달라질 수 있으므로 주의. 아래의 예는 Oracle Enterprise Linux에서는 문제 없이 잘 실행됨.)


#!/usr/bin/ksh
#
# Sample 10g CRS resource status query script
#
# Description:
# - Returns formatted version of crs_stat -t, in tabular
# format, with the complete rsc names and filtering keywords
# - The argument, $RSC_KEY, is optional and if passed to the script, will
# limit the output to HA resources whose names match $RSC_KEY.
# Requirements:
# - $ORA_CRS_HOME should be set in your environment
RSC_KEY=$1
QSTAT=-u
AWK=/bin/awk # if not available use /usr/bin/awk
# Table header:echo ""
$AWK \
'BEGIN {printf "%-45s %-10s %-18s\n", "HA Resource", "Target", "State";
printf "%-45s %-10s %-18s\n", "-----------", "------", "-----";}'
# Table body:
$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \
'BEGIN { FS="="; state = 0; }
$1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1};
state == 0 {next;}
$1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
$1~/STATE/ && state == 2 {appstate = $2; state=3;}
state == 3 {printf "%-45s %-10s %-18s\n", appname, apptarget, appstate;
state=0;}'




'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
CTF, TAF 설정  (0) 2010.06.16
srvctl 유틸리티  (1) 2010.06.16
Posted by 자수성가한 부자