금일 모고객사에서 10G RAC Fail-Over Test를 진행하였다

환경은 다음과 같다.

OS:RHEL5 64Bit

Oracle:10.2.0.4

 

먼저 pmon을 kill -9로 강제로 kill후 진행상태를 보면 10초정도이후에 crs가 감지해서

자동으로 올린다.

그러나 listener를 강제로 kill -9로 강제로 kill후 진행상태를 보면 8분정도 이후에

crs가 감지해서 자동으로 올리는 현상이 발생했다

10G RAC Check_interval은 600초  즉 10분이기 하지만 pmon에 비해서

crs가 감지하는 시간이 너무 오래걸린다.

그리고 check_interval은 모든 리소스가 600초가 아니고

vip 리소스는 30초이다

========================================================

[oracle@rac1.mycorpdomain.com:devdb1]/export/home/oracle> crs_stat -p
NAME=ora.devdb.db
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./crs_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600

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

 

NAME=ora.devdb.devdb1.inst
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./db_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600

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

 

NAME=ora.rac1.ASM1.asm
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./db_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600

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

 

NAME=ora.rac1.LISTENER_RAC1.lsnr
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./db_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600

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

 

NAME=ora.rac1.gsd
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./crs_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600

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

 

NAME=ora.rac1.ons
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./crs_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=always
CHECK_INTERVAL=600

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

 

NAME=ora.rac1.vip
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0./crs_1/bin/racgwrap
ACTIVE_PLACEMENT=1
AUTO_START=1
CHECK_INTERVAL=30

 

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

 

===========================================================

 

해당 check_interval를 변경하려면 각각 리소스별로 변경해야 한다.

 

crs가 listener가 kill 감지를 빨리 하기 위해

 

CHECK_INTERVAL,SCRIPT_TIMEOUT 를 기존 600초에서 60초로 변경했다.

 

변경 방법은 다음과 같다. 해당 변경 방법은 굿어스 기술노트[34회]를 참조하였다.

====================================================================

1번 노드

1.srvctl stop instance -d devdb -i devdb1
2.srvctl stop nodeapps -n rac1
3.crs_stat -p ora.rac1.LISTENER_RAC1.lsnr > /tmp/ora.rac1.LISTENER_RAC1.lsnr.cap
4.crs_profile -update ora.rac1.LISTENER_RAC1.lsnr -dir /tmp -o ci=60,st=60
5.crs_register ora.rac1.LISTENER_RAC1.lsnr -dir /tmp -u
6.crs_stat -p ora.rac1.LISTENER_RAC1.lsnr |grep CHECK_INTERVAL

 

CHECK_INTERVAL=60

7.crs_stat -p ora.rac1.LISTENER_RAC1.lsnr |grep SCRIPT_TIMEOUT

 

SCRIPT_TIMEOUT=60

 

8.srvctl start nodeapps -n rac1
9.srvctl start instance -d devdb -i devdb1

 

2번 노드

1.srvctl stop instance -d devdb -i devdb2
2.srvctl stop nodeapps -n rac2
3.crs_stat -p ora.rac2.LISTENER_RAC2.lsnr > /tmp/ora.rac2.LISTENER_RAC2.lsnr.cap
4.crs_profile -update ora.rac2.LISTENER_RAC2.lsnr -dir /tmp -o ci=60,st=60
5.crs_register ora.rac2.LISTENER_RAC2.lsnr -dir /tmp -u
6.crs_stat -p ora.rac2.LISTENER_RAC2.lsnr |grep CHECK_INTERVAL


CHECK_INTERVAL=60


7.crs_stat -p ora.rac2.LISTENER_RAC2.lsnr |grep SCRIPT_TIMEOUT


SCRIPT_TIMEOUT=60


8.srvctl start nodeapps -n rac2
9.srvctl start instance -d devdb -i devdb2

==========================================================================

 

변경후 다시 Listener에 대한 Fail Over test를 진행해보니 1분이내애 CRS가 감지해서

자동으로 시작하였다.

 

'OraclE' 카테고리의 다른 글

테이블스페이스(TABLESPACE)  (0) 2010.10.21
Automatic Undo Retention 개요 [펌]  (0) 2010.10.12
Managing Job Queues  (0) 2010.07.11
was 다국어설정  (0) 2010.07.05
CONVENTIONAL PATH LOAD & DIRECT PATH LOAD  (0) 2010.05.25
리스너 프로세스 2개 생성


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = haha)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (SID_NAME = haha)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = xpuser)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

SID_LIST_RBM2TEST =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = RBM2TEST)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (SID_NAME = RBM2TEST)
    )
  )

RBM2TEST =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = xpuser)(PORT = 1541))
    )
  )


 

[ Problem ]
리모트 로그인이 빈번이 발생하는 경우 LISTENER.LOG 파일이 비약적으로 커지는 경우가 종종 있습니다.

이러한 경우에 리스너 로그 자체를 남기지 않는 방법에 대해서 설명합니다.

 

[ Action ]
SQL*Net V2, Net8 에서는 listener.log는 반드시 출력됩니다.
Backup의 타이밍등으로 삭제하는 방법을 검토하는 것이 좋을듯 합니다만 ,Net8 에서는 이하의 방법으로 로그를 남기지 않는 것이 가능합니다.

 

(1) 동적으로 멈추는 경우
    % lsnrctl
    LSNRCTL> set current_listener <리스너명>   <= 옵션(리스너명이 LISTENER 가 아닌 경우(*))
    LSNRCTL> set log_status OFF                    <= 출력 정지
    LSNRCTL> set log_status ON                      <= 출력 개시

 

    (*) 여러개의 리스너를 띄울경우 선택적으로 로그 생성,비생성이 가능합니다.

 

(2) 미리 출력하지 않게 설정해 둔다
    listener.ora 에 이하의 파라미터를 추가

    LOGGING_<리스너명>=OFF

 

[ References ]
「Net8 관리자 가이드」
「SQL*Net의 이해」
http://support.oracle.co.jp/krown/oisc_showDoc.do?id=841


'OraclE' 카테고리의 다른 글

옵티마이저와 신나게 노는 방법(엔코아)  (0) 2008.11.06
오라클 analyze 자동화  (0) 2008.11.06
DataPump *  (0) 2008.10.17
Transportable Tablespaces  (0) 2008.10.17
sqlnet ip 제한  (0) 2008.10.07

+ Recent posts