오늘은 PureScale 상의 Instance 생성의 Tip을 말씀드리고자 한다.
보통 일반적인 DB2상의 Instance 생성법은 설치된 모듈이 있는 instance라는 디렉토리에서
db2icrt라는 스크립트를 이용하여 생성을 한다.

아래는 일반적인 인스턴스 생성법과 PureScale상의 인스턴스 법을 설명하겠다.
-s 옵션에 따라 ESE 제품의 인스턴스를 만들지 PureScale의 인스턴스를 만들지를 지정할 수 있다.

 ./db2icrt -s ese <dsf> -u dongbucni duongbucni

시나리오 요건 중 동종 , 이기종간의 DB Federation 테스트를 진행해 보려 하였다.
한층 업그레이된 PureScale에는 어떠한 새로운 기능들이 추가 되어 있을까?
하는 기대감을 갖고 테스트에 돌입 전이었다.

하지만 이론~ DBM Update를 치자 마자 난 할말을 잃었다.
=======================================================================================
 

update dbm cfg using FEDERATE YES
 

db2 " ? SQL1419N"

Reason Code 17      

 

         The following configuration parameters are not supported in a

         DB2 pureScale environment:

 

         

         *  DYN_QUERY_MGMT - Dynamic SQL and XQuery query management

         *  AUTO_STATS_PROF - Automatic maintenance

         *  FEDERATED - Federated database system support

         *  HEALTH_MON - Health monitoring


우리는 구성된 PureScale 시스템에 아래와 같은 테스트 시나리오를 만들었다.
그리고 하나씩 테스트를 진행 하면서 그에따른 결과를 얻어 내었다.
테스트 시나리오는 아래와 같다.(그 중 일부를 하나씩 공개 하도록 하겠다)
=====================================================================
1. Online Reorg
    -> 테스트 결과 PureScale에서는 지원되지 않는 기능이었다.

dongbucni/db2> db2 "reorg table db2.stock inplace"

SQL2216N  SQL error "-1419" occurred while reorganizing a database table or

its indexes.

보통 지원 되지 않는 기능들은 SQL1419 에러를 내며 그에 따른 Reason Code가
주르륵 딸려 나온다.
아직 Online Reorg가 지원 되지 않는 상황을 보면서 약간은 당황했다.
언제쯤 우리의 Pure는 완벽한 기능을 보유한 날이 올까?

하지만 그날을 기다리며 오늘도 난 PureScale과 함께 삽질을 하고 있다.

보통 DB2에서 현재 DB에 connection 되어 있는 application의 list 를 보려면 아래와 같이 확인을 한다.

db2 list applications <show detail>

하지만 9.8 PureScale 상의(2개의 member 가정) 의 list 조회는 member별 혹은 global 하게 list 를 조회할 수 있다

아래는 멤버별 조회를 하는 내용을 보여준다.
--------------------------------------------------------------------------------------
 member0:/dongbucni> db2 list applications at member 0 <show detail>

 

Auth Id  Application    Appl.      Application Id                                                 DB       # of

         Name           Handle                                                                    Name    Agents

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

DONGBUCNI      db2bp          4658       *N0.db2.110825071212                                           DONGBU    1  

member1:/dongbucni> db2 list applications at member 1 <show detail>

Auth Id  Application    Appl.      Application Id                                                 DB       # of

         Name           Handle                                                                    Name    Agents

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

DONGBUCNI      db2bp          67417      *N1.db2.110825070744                                           DONGBU    1 

member0:/dongbucni> db2 list applications global <show detail>
 

Auth Id  Application    Appl.      Application Id                                                 DB       # of

         Name           Handle                                                                    Name    Agents

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

DONGBUCNI      db2bp          4658       *N0.db2.110825071212                                           DONGBU    1   

DONGBUCNI      db2bp          67417      *N1.db2.110825070744                                           DONGBU    1   

*주의점 TIP
 

db2 "force applications all" member 모두  kill하는 경우에 쓰인다.

db2 "force applications(67422)" ID 지정 멤버별로 application Kill 한다.

IBM Lab 에서 답변이 왔다.
결론은 Udapl 을 업그레이드 하라는 내용이다

아래는 Lab에서 보내온 결과이다.
 

분석 결과 발생한 현상은 AIX defect 787216 유사합니다. AIX level udapl.rte.7.1.0.15 올릴것을 권고해 드립니다.

물론 AIX level 6.1이라고 하셨지만, defect 대한 check 주십시오.

 

LAB 답변 참고하십시오.

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

Reviewed the db2diag.log.

 

2011-08-10-10.50.43.929840+540 E315407A1206 LEVEL: Critical

PID : 598200 TID : 19534 PROC : db2sysc 0

INSTANCE: db2sdin1 NODE : 000

APPHDL : 0-52 APPID: *N0.db2sdin1.110810015041

AUTHID : DB2SDIN1

EDUID : 19534 EDUNAME: db2agntp 0

FUNCTION: DB2 UDB, oper system services, sqloEDUCodeTrapHandler,

probe:90

MESSAGE : ADM14011C A critical failure has caused the following type of

error:

"Trap". The DB2 database manager cannot recover from the

failure.

First Occurrence Data Capture (FODC) was invoked in the

following

mode: "Automatic". FODC diagnostic information is located in

the

following directory:

 

"/db2/db2sdin1/sqllib/db2dump/FODC_Trap_2011-08-10-10.50.43.614265/".

DATA #1 : Signal Number Recieved, 4 bytes

5

DATA #2 : Siginfo, 64 bytes

0x070000003BFC9430 : 0000 0005 0000 0000 0000 0008 0000 0000

.................

0x070000003BFC9440 : 0000 0000 0000 0000 0900 0000 1042 2EF8

..............B..

0x070000003BFC9450 : 0000 0000 0000 0000 0000 0000 0000 0000

.................

0x070000003BFC9460 : 0000 0000 0000 0000 0000 0000 0000 0000

.................

 

Trap shows

 

0x0900000010422EF8 GxlQpPostSend + 0x418

0x0900000010408CA0 IbQpPostSend + 0x780

0x09000000103ACF0C dapls_ib_post_send + 0x24C

0x09000000103AA9F4 dapl_ep_post_send_req + 0x194

0x09000000103C0BA4 dapl_ep_post_rdma_write + 0x84

0x0900000010387788 dat_ep_post_rdma_write + 0xA8

0x090000001042CA30 cmd_send + 0xBD0

0x090000000DD6AA64 readlsc + 0x104

0x090000000DD6EF3C list_get_status + 0x1C

0x090000000DD864B8 CAGetStatus + 0x7D8

0x09000000074EECC8

sqleCaCeStructureStatus__23SQLE_CA_CONN_ENTRY_DATAFPv27SAL_STRUCTURE_STA

TUS_ACTIONP20SAL_STRUCTURE_STATUS + 0x104

0x09000000074EE9F4

SAL_StructureStatus__20SAL_CA_STRUCT_HANDLEFCUiRUlPPcC27SAL_STRUCTURE_ST

ATUS_ACTION + 0x260

0x0900000006195A10

SAL_IsStructInPeer__20SAL_CA_STRUCT_HANDLEFCUiPPcPbRUlCb + 0xB4

0x0900000006194D04 SAL_IsSAInPeer__13SAL_SA_HANDLEFCUiPbRUlCb + 0x24

0x090000000637EB24 SAL_IsSAInPeer__13SAL_SA_HANDLEFCUiPbRUlCb@glue2BB +

0x7C

0x090000000637E228

SAL_ConnectStruct__13SAL_SA_HANDLEFC24SAL_ENCODED_CA_INDEX_SETCUiCUl +

0x414

0x0900000006F48FB8

SAL_OpenSAHandle__13SAL_SA_HANDLEFPP13SAL_SA_HANDLEP16sqeLocalDatabaseCU

l + 0x24C

0x0900000006F48CF8 SA_HANDLE_Initialize__9SA_HANDLEFCP16sqeLocalDatabase

+ 0x38

0x0900000006F48C5C sqleSmartArrayInit + 0x88

0x0900000006F49E34

@78@sqledint__FP8sqeAgentP16sqeLocalDatabaseP5sqlcacPciPb + 0x3C8

0x0900000006F353E0

FirstConnect__16sqeLocalDatabaseFP8SQLE_BWARcP8sqeAgentP8sqlo_gmtiT5Pb +

0x1560

0x090000000704B6C8

StartUsingLocalDatabase__8sqeDBMgrFP8SQLE_BWAP8sqeAgentRccP8sqlo_gmtPb +

0x3C8

0x0900000007047BDC

AppStartUsing__14sqeApplicationFP8SQLE_BWAP8sqeAgentcT3P5sqlcaPc + 0x514

0x0900000007F43010

@78@sqleStartDb__FsP8SQLE_BWAP10sqledbdescP13sqledbdescextT1PcT2iT1lUl +

0x6A0

0x0900000008A5D784

sqleCreateDb__FsP8SQLE_BWAP10sqledbdescP13sqledbdescextPcT5T1N25T2iT1T11

_P13SQLE_CFG_RECSP5sqlca + 0x11F4

 

The above stacks looks similar to AIX Defect 787216. The recommonded AIX level is udapl.rte.7.1.0.15.

현재 상황을 정리하여 IBM LAB에 내부적으로 db2dump파일을 참조로 PMR Open했다
부디 좋은 결과 및 원인이 나와서 빨리 적용하였으면 한다.

수십번의 PureScale 의 설치 및 구성 작업이다.(한20번은 한것 같다)
이제는 눈감고도 설치가 가능할듯하다. 또한 덕분에 OS 커맨드도 다시 익히게 되었다.
여하튼 어제 DB엔진이 주저앉는 내용을 diag.log를 분석해본 결과 아래의 메세지를 확인할 수 있었다.
====================================================================================
2011-08-10-10.49.04.071637+540 I209380A547          LEVEL: Error
PID     : 1069300              TID  : 19791         PROC : db2sysc 0
INSTANCE: db2sdin1             NODE : 000
APPHDL  : 0-54                 APPID: *N0.db2sdin1.110810014834
AUTHID  : DB2SDIN1
EDUID   : 19791                EDUNAME: db2agntp 0
FUNCTION: DB2 UDB, base sys utilities, sqleagnt_sigsegvh, probe:9
MESSAGE : Error in agent servicing application with PRODUCT SIGNATURE:
DATA #1 : Hexdump, 8 bytes
0x07800000062F66D4 : 5351 4C30 3930 3834                        SQL09084
=====================================================================================
SQL09084의 내용을 찾아본 결과
IC74943: DB2_MEMORY_PROTECT ON PURESCALE, SIGNAL #11 ON CREATE DB 을 확인하였다(실제 우리의 상황과는 직접적인 관계가 없는 듯하나 참고로 넣는다.)
다음의 APAR를 참고하기 바란다.

APAR status
OPEN
Error description
DB21085I  Instance "regres3" uses "64" bits and DB2 code release
"SQL09084"
with level identifier "09050107".
Informational tokens are "DB2 v9.8.0.4", "s110227", "IP23283",
and Fix Pack
"4".
Product is installed at "/home/regres3/sqllib".
$ db2set DB2_MEMORY_PROTECT=YES

$ db2start
03/09/2011 12:00:20     1   0   SQL1063N  DB2START processing
was successful.
03/09/2011 12:00:22     2   0   SQL1063N  DB2START processing
was successful.
03/09/2011 12:00:22     0   0   SQL1063N  DB2START processing
was successful.
SQL1063N  DB2START processing was successful.

$ db2 create db aabbcc
SQL1032N  No start database manager command was issued.
SQLSTATE=57019

Signal #11
<SignalDetails>
Signal #11 (SIGSEGV): si_addr is 0x0700000065032020, si_code is
0x00000034
</SignalDetails>
<SignalHandlers>
</SignalHandlers>
$
Stack traceback unavailable.

Real stack is

<StackTrace>
-------Frame------ ------Function + Offset------
0x090000001F4B6F0C sqlpcLSN
0x090000001F4E6B84 sqlbgbLatchPageForWARM0xB04
0x090000001F4E7AF0 sqlbgbProcessTPL
0x090000001ECE9974 sqlpWriteToLog
0x090000001ECF5900 sqlpWriteLR
0x0900000024575A48 sqlpWriteLR
0x0900000024576170 sqlptwpl
0x090000001F7B78E0 sqlpxcm1
0x090000001F7A58B0 sqlptfrg
0x090000001F6C4DD0 sqlrr_appl_term
0x090000001E25C8EC AppStopUsing
0x0900000023D1DFAC sqleStartDb
0x0900000023D1FB38 sqleCreateDb
0x09000000245BFA00 sqleCreateEntries_sd
0x09000000245C0978 sqlecrea_agent_sd
0x09000000245B6D04 sqleSubCreateDb
0x0900000021B0C310 sqleSubRequestRouter
0x0900000021B14300 sqleProcessSubRequest
0x090000001DE16CB4 RunEDU
0x090000001DE04828 EDUDriver
0x090000001DE04B5C sqlzRunEDU
0x090000001DA1AA58 sqloEDUEntry
</StackTrace>

다시 설치 및 구성이 잘되었던 픽스팩3 , hdisk 의 Shared영역을 다른 부분으로 설치 후 DB를 만들어 보아도 같은 증상 이었다.아~~ 무엇이 문제일까? DISK , OS
25~6번의 설치와 DB구성 후 약간의 허무함을 느꼈다. 이것이 진정 오라클의 RAC를 견주는 제품이란 말인가?
다음에는 OS엔지니어와 함께 OS , DISK 구성을 다시 해야 하겠다.

OS 엔지니어의 도움으로 HDISK 를 다시 재구성했다.
오~ 깔끔하게 설치 및 클러스터 파일 시스템을 구성했다.
다음은 클러스터 파일 시스템 구성 명령어 이다

1) db2cluster -cfs -create -filesystem db_home -disk /dev/hdisk4 -mount /dbcni/dbhome
2) db2cluster -cfs -create -filesystem db_storage -disk /dev/hdisk2 -mount /dbcni/storage
3) db2cluster -cfs -create -filesystem db_tnxlog -disk /dev/hdisk5 -mount /dbcni/tnxlog

여기서 cluster 의 구성은 root 유저로 해야 한다.
물론 아래와 같이 db2 instance에게 권한은 주어야 겠죵~~

 1) chown -R db2sdin1:db2iadm1 /dbcni/dbhome
 2) chown -R db2sdin1:db2iadm1 /dbcni/storage
 3) chown -R db2sdin1:db2iadm1 /dbcni/tnxlog

자~ 이제 DB를 생성해 보자
과거에는 2node 구성으로 2member , 2cf 에 DB생성까지 완료 했지만
이제는 3node 2member , 1cf로 구성된 Purescale에 DB를 생성 하겠다.

 1)  db2 create database cnidb on /dbcni/storage dbpath on /dbcni/dbhome

두둥~~~
에러가 아니라 DB엔진이 내려갔다. 뭐야~~ 이건.
픽스팩4의 버그가 아직 있단 말인가? 하지만 예전 DB구성 성공까지 진행 되었던
픽스팩3도 마찬가지였다
구성된 클러스터에 DB만 생성하면 DB엔진이 주저 앉는다.
아~~ 이런







dd 명령어 및 pv를 clear 후 설치는 완료 되었다.
다시 기쁜 마음으로 DB구성을 하려는 순간~~~ cluster 에러가 발생 하였다
이건 뭐~ 할때 마다 상황이 틀려지나~~~ 아~~
에러는 다음과 같은 메세지를 내면서 cluster가 구성되지 않았다.
No Available PR Key 확인을 해보니 각 hdisk 마다 PR Key 가 있는데 lsattr 로 조회시
구성 부분이 none으로 표시 되었다(PR Key 는 각자 검색해 보시길~~)
그림을 첨부한다.


OS 엔지니어의 도움으로 몇번을 시도 해보았지만 같은 결과를 보여주었다.
할 수 없이 기존 디스크의 구성을 다 뭉개 버리고 재구성을 하기로 하였다.
아~~ PureScale의 이런 노고가 언젠가는 빛을 바라길 기원한다.

오늘은 실제 운영 환경에 맞는 구성을 위해 PureScale을 재설치 하게되었다.
1차 설치 구성은 2대의 논리적 서버에 2Member 에 2CF로 구성을 하였으나, 1대의 서버를
추가하여 CF를 추가된 서버에 구성 하기로 했다.
변경된 추가 구성 사항은 아래와같다.
================================================================================
1차 구성 요건
  1) Member -> dbcni1 , dbcni2
  2) CF         -> dbcni1 , dbcni2

2차 구성 요건
   1) Member -> dbcni1 , dbcni2
   2) CF         -> dbcni3(추가)
=================================================================================

기존에 구성된 디스크의 PVID 값으로 Shared Disk 영역과 TieBreake 영역을 만들기로 했다
이론~ 근데 중간에 에러를 내면서 설치가 제대로 진행되지 않았다.
시스템 rebbot과 Disk 를 clear 해보아도 도무지 해결되지 않았다.
여러가지 검색과 수소문끝에 disk 상태가 clear 되지 않을 때 강제로 null값을 넣을 수 있는
방법을 알게 되었다.
Command 는 다음과 같다.
 
dd if=/dev/zero of=/dev/hdisk2 bs=4096 count=1000

결과는 에러 발생~~
또같이 해당 디스크에 대해서 busy 하다는 내용이었다.
DISK 자체를 날려버리고 재구성을 해야 할 듯 싶었다.
아무래도 이부분은 OS엔지니어의 도움이 필요한듯 싶다.
추후 Disk 문제 해결 후 다시 구성을 해야 겠다.~~~

+ Recent posts