Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-18
제목 ORACLE8 OPS - ORACLE GROUP MEMBERSHIP SERVICE(OGMS)
ORACLE8 OPS - ORACLE GROUP MEMBERSHIP SERVICE(OGMS)
===================================================



SCOPE
-----
Standard Edition 에서는 Real Application Clusters 기능이 10g(10.1.0) 이상 부터 지원이 됩니다.


Explanation
-----------
Oracle7 OPS에서는 OS에서 제공하는 DLM(distributed lock manager)을
사용하였는데(IBM SP2 제외) Oracle8 부터는 OS에서 제공하는 DLM은
전혀 사용되지 않고 oracle DLM이 사용된다.
GMS(Group Membership Service)는 O8 DLM과 CNX(Connection Manager)
간의 인터페이스를 제공하는 역할을 하며 oracle8 ops install 시 db 생성 전에
(instance구동 전에) 반드시 GMS process가 정상 작동을 하고 있어야만
작업이 가능하다.

1. CNX (Connection Manager)란 ?

Connection Manager (CNX)는 OS에서 제공하는 Cluster 소프트웨어의 일부이다.
(예: Digital CNX 경우 TruCluster 소프트웨어의 일부)
CNX는 클러스터에 새로운 노드가 추가 되거나, 빠지는 것을 관리한다.
클러스터 노드간의 높은 성능과, 신뢰성을 제공하는 것 이외에도 CNX는 Oracle
DLM에서 사용된다. 분산 데이터베이스의 락 관리를 위해 Oracle 8의 DLM에서는
CNX에서 제공하는 configuration 데이터와 다른 정보를 활용한다.

2. GMS (Group Membership Service) 란?

GMS (Group Membership Service)는 오라클 DLM과 CNX 간의 인터페이스를
제공하는 역할을 한다.
GMS는 instance를 관리해 주는 기능을 제공해 주며, OPS 데이터베이스 상에서
parallel query 등을 instance의 일부분에 할당을 해 주는 역할을 수행한다.
이 때 GMS 자신은 CNX ( 그리고 / 또는 ) Node Monitor의 기능에 의존한다.
Node monitor는 현재 클러스터에 어떤 노드가 있는지 등을 알아낼 수 있다.
GMS는 이와 같은 정보를 Oracle 8의 DLM에 제공한다.

* GMS 구동 전에 CNX(Digital), CM (HP), Cluster Service 등은 정상 구동이
되어 있어야 한다.

1) Digital경우 cnx 확인 : 아래의 3개의 deamon process가 구동돼 있어야 한다.
ps -ef|grep cnx
cnxpingd
cnxagentd
cnxmond

2) HP 경우 : : 아래의 4개의 deamon process가 구동돼 있어야 한다.
ps -ef |grep cm
cmcld : CM daemon
cmdlmd : DLM daemon
cmdlmmond : DLM monitor daemon
cmlvmd : SLVM daemon

3) IBM SP2 경우는 cluster service와 HC service가 정상 구동되어 있어야 한다.
cluster service확인 : ps -ef|grep clstr
HC check : ps -ef|grep hc 혹은 $ORACLE_HOME/bin/hcconnect
$hconnect (정상일 경우)
Usage : hconnect
Using defaults : timeout 50, polls 50, sleep_time 2
hconnect : attempting to open socket
attempting to connect to socket /tmp/serv.hc
connection was successful
calling poll with timeout 50 ...
reconfig msg : incarnation 6
node 1 active
detach complete

The HC subsystem is functional
$hconnect (비정상일 경우)
Usage : hconnect
Using defaults : timeout 50, polls 50, sleep_time 2
hconnect : attempting to open socket
attempting to connect to socket /tmp/serv.hc
connection was successful
calling poll with timeout 50 ...
poll : timeout occurred
calling poll with timeout 50 ...
poll : timeout occurred
calling poll with timeout 50 ...
poll : timeout occurred
calling poll timeout 50 ...
poll : timeout occurred
give up!

The HC subsystem is not functional
(보다 자세한 사항은 Oracle8 install guide의 appendix D를 참조한다)


3. GMS setup 방법 (IBM SP2)

1) GMS 구동 시 모든 node에서 access 가능하게 4M raw device를 만든다.
이는 GMS_QUERY_FILE paremter에 사용될 file이다.
(minimum physical partition size가 8M라면 8M raw device를 만든다)

2) node list file을 만든다


a. node_number : GMS node의 node number
(IBM SP2경우 각node에서 /usr/lpp/install/bin/node_number로
알수 있다)
b. ip_address : GMS communication을 위한 ip address (ethernet or switch
address)
c. unused_number : 보통 0을 쓴다.

예) 5 100.10.199.5 0
6 100.10.199.6 0
7 100.10.199.7 0
8 100.10.199.8 0

3) 각 node 별 oracle 환경변수에 다음을 추가한다.
GMS_QUERY_FILE : raw device의 절대 path를 기술 ( 2-1)에서 만든 file의 절대
path 기술 )
GMS_NODE_LIST : node list file의 절대 path 기술 (2-2)에서 만든 file의 절대
path 기술 )
GMS_HC_SOCKET : HC가 GMS client의 node membership 정보와 communication
하기 위한 unix domain socket의 path. default value는
/tmp/serv.hc 만일 HC demon에 접속되어 있는 것이 있다면
default value가 아닌 다른 값을 지정해야 한다. 왜냐하면 새로
운 HC instance가 default socket name을 사용할 수 없기 때문
니다.
GMS_LOG_DIR : GMS logfile을 저장할 directory. default value는 /tmp/.ogms

예) .profile의 경우 아래와 같이 정의하여 쓴다.
GMS_QUERY_FILE=/dev/rVi05.ak.gmst ; export GMS_QUERY_FILE
GMS_NODE_LIST=$ORACLE_HOME/gms/nodes/lower4 ; export GMS_NODE_LIST
GMS_HC_SOCKET=/tmp/serv/ora ; export GMS_HC_SOCKET
GMS_LOG_DIR=/ogms/logs ; export GMS_LOG_DIR

4) listener.ora file 설정 방법

NET8을 사용하여 oracle instance에 접속 시 listener.ora file의 ENVS
parameter에 GMS_QUERY_FILE, GMS_NODE_LIST, GMS_LOG_DIR의
환경 변수를 기술한다.

예) LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = tcp)
(HOST = hostname)
(PORT = 1521)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORA7)
(ENVS='GMS_QUERY_FILE=/dev/rVi05.ak.gmst,
GMS_HC_SOCKET=/tmp/serv/ora,
GMS_LOG_DIR=/ogms/logs')
(ORACLE_HOME=/usr/oracle7)
)
)
** HP, Digital, Sun 등의 platform에서는 oracle s/w install 후에 GMS 구동만
해주면 된다.


4. GMS 구동/정지 방법

1) oracle8 instance 구동 전에 ogms start
$ ogms start (IBM SP2 )
$ ogmsctl start ( HP, Digital 등 )

2) oracle8 process가 없어야 stop 가능하다.
$ ogms stop (IBM SP2 )
$ ogmsctl stop ( HP, Digital 등 )

*** GMS setup 및 oracle install 후의 process 상황
ps -ef|grep ora|more
oracle 7011 1 0.0 20:13:00 ?? 0:07.51 ogms
oracle 7044 1 0.0 20:13:55 ?? 0:00.05 ora_pmon_ORA8
oracle 7046 1 0.0 20:13:55 ?? 0:01.94 ora_lmon_ORA8
oracle 7048 1 0.0 20:13:55 ?? 0:01.08 ora_lmd0_ORA8
oracle 7050 1 0.0 20:14:03 ?? 0:01.32 ora_dbw0_ORA8
oracle 7052 1 0.0 20:14:03 ?? 0:00.34 ora_lgwr_ORA8
oracle 7054 1 0.0 20:14:03 ?? 0:00.64 ora_ckpt_ORA8
oracle 7056 1 0.0 20:14:03 ?? 0:00.07 ora_smon_ORA8
oracle 7058 1 0.0 20:14:03 ?? 0:00.19 ora_reco_ORA8
oracle 7060 1 0.0 20:14:15 ?? 0:03.15 ora_lck0_ORA8
oracle 7062 1 0.0 20:14:21 ?? 0:00.01 ora_p000_ORA8
oracle 7064 1 0.0 20:14:21 ?? 0:00.01 ora_p001_ORA8

**** ORACLE8 OPS에서 db startup 시 parallel, shared, exclusive 등의
option은 없어지고 initSID.ora file에 parallel_server=True로 기술하고
startup을 한다.

Comment
등록된 코멘트가 없습니다.