DB2에 접속한 Application 확인 방법은 다양하다. db2pd, db2 list application 및 db2 스냅샷 함수 등등…

그런데 Application 접속에 의해 파생된 추가적인 쓰레드 들을 제외한 것을 보고자 하는 요건이 많을 것이다. (순수하게 db에 접속해서 작업을 요청하는 쓰레드만..)

쉽게 접속 수를 확인하는 방법은 db2 list active databases 명령어일 것이다.

실행 예
$>  db2 list active databases

                           Active Databases

Database name                              = SAMPLE
Applications connected currently           = 3
Database path                      = /database/inst10/NODE0000/SQL00001/MEMBER0000/

 

접속된 3개의 Applications에 대해서는 다음 명령어를 통하여 정확히 확인할 수 있다.

$> db2 list applications

Auth Id  Application    Appl.      Application Id                                   DB         # of

            Name           Handle                                                         Name       Agents
------- ----------- -------- ------------------------------------ --------   -----
INST10   db2bp.exe      296     192.168.137.1.62716.12091006351           SAMPLE   1
INST10   db2bp          8          *LOCAL.inst10.120910020559               SAMPLE   1
INST10   javaw.exe      297        192.168.137.1.62718.12091006351        SAMPLE   1

db2 명령어로 된 것은 DB2 관리를 위해 자동화할 때는 문제가 생긴다.

위 명령어와 동일한 결과값은 다음과 같은 SQL로 구현될 수 있다.

select substr(session_auth_id,1,12) auth_id,

          substr(application_name,1,12) app_name,

          application_handle, substr(application_id,1,18) app_id,

           member,

          client_pid,

          substr(client_prdid,1,12) clnt_ver,

          client_platform,

          substr(client_applname,1,10) clnt_appname,

          connection_start_time

from TABLE(mon_get_connection(cast(null as bigint),-2)) as a

실행 결과

AUTH_ID    APP_NAME     APPLICATION_HANDLE   APP_ID   MEMBER CLIENT_PID           CLNT_VER     CLIENT_PLATFORM CLNT_APPNAME CONNECTION_START_TIME    
------------ ------------ -------------------- ------------------ ------ -------------------- ------------ --------------- ------------ --------------------------
INST10       db2bp.exe                     296 192.168.137.1.6271      0                 6372 SQL09074     NT64            CLP C:\Pro   2012-09-10-15.35.15.584196

INST10       db2bp                           8 *LOCAL.inst10.1209      0                 4897 SQL10010     LINUXX8664      -            2012-09-10-11.05.59.404087

INST10       javaw.exe                     297 192.168.137.1.6271      0                 7560 SQL09074     NT64            -            2012-09-10-15.35.15.742185

부가적으로 클라이언트쪽 정보를 더 넣었지만, 이 결과를 보면서 접속된 Application 수와 어떤 프로그램을 통해 접속이 이루어졌는지 확인할 수 있을 것이다.

'Note' 카테고리의 다른 글

[SQL] rownum 사용 시 주의점  (0) 2012.10.22
[관리] Lock 모니터링 및 세션 관리  (0) 2012.09.11
[개발] 오라클 정규식 함수의 이관  (0) 2012.09.10
[SQL] Multi Action Trigger  (0) 2012.05.31
[관리] Offline DB 백업의 복원  (0) 2012.04.23

프로젝트 지원 업무가 있어 ORACLE의 프로시저를 변환 작업 중 정규식 함수로 프로시저 컴파일이 되지 않는 문제가 발생을 했었다.

DB2에서 제공되는 정규식 함수를 찾아 보니 9개 정도가 된다.

- REGR_AVGX, REGR_AVGY, REGR_COUNT, REGR_INTRCEPT, REGR_R2, REGR_SLOPE, REGR_SXX, REGR_SXY, REGR_SYY

통계와 관련된 어려운 함수들만 제공되는 것 같다.

개발자가 문의한 함수는 REGEXP_SUBSTR() 인데 위에 언급했다시피 존재하지 않는다. 웹에서 검색을 해 보니, (V8, V9.1 버전 시절의 오라클 함수 포팅 방법인) java 함수로 해당 함수를 포팅할 수 있도록 IBM Developerworks 기술 문서에 기술되어 있었다.

제공되는 함수는 4가지 (REGEXP_LIKE, REGEXT_REPLACE, REGEXP_SUBSTR, REGEXP_INSTR)…

잘 사용되는 대부분의 오라클 함수는 지원될 것이라 생각했는데, 이렇게 피해가는 함수들이 존재를 한다.

해당 자바 함수를 DB에 생성하기 위해서는 db2_regex.jar 파일이 필요하다. (블로그에 파일이 첨부되지 않으므로, jar 파일은 글 아래의 URL 주소를 통하여 다운로드 받도록 한다.)

해당 JAR 파일은 SQLJ.INSTALL_JAR 프로시저를 이용하여 설치한다.

구문
call sqlj.install_jar(‘file:JAR_파일경로_파일명’, JAR_ID)

실행 예
CALL SQLJ.INSTALL_JAR('file:/tmp/avalanche/db2_regex/lib/db2_regex.jar', db2_regex)

 

생성해야 되는 정규식 함수 script는 다음과 같다.

CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3))

RETURNS INTEGER
FENCED
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp.regexpLike'
NO EXTERNAL ACTION
@
 

CREATE OR REPLACE FUNCTION REGEXP_REPLACE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), REPLACEMENT VARCHAR(3000), POSITION INTEGER, OCCURRENCE INTEGER, MODES VARCHAR(3))

RETURNS VARCHAR(3000)
FENCED
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp!regexpReplace'
NO EXTERNAL ACTION
@
 

CREATE OR REPLACE FUNCTION REGEXP_SUBSTR(SOURCE VARCHAR(3000), REGEX VARCHAR(512), POSITION INTEGER, OCCURRENCE INTEGER, MODES VARCHAR(3))

RETURNS VARCHAR(3000)
FENCED
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp!regexpSubstr'
NO EXTERNAL ACTION
@
 
CREATE OR REPLACE FUNCTION REGEXP_INSTR(SOURCE VARCHAR(3000), REGEX VARCHAR(512), POSITION INTEGER, OCCURRENCE INTEGER, ROPT INTEGER, MODES VARCHAR(3))

RETURNS INTEGER
FENCED
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp!regexpInstr'
NO EXTERNAL ACTION
@

jar 설치부터 자바 함수 생성은 하나의 script로 작성하여 생성 작업을 완료할 수 있다.

스크립트 파일 예

vi /work/reg.db2
CALL SQLJ.INSTALL_JAR('file:/work/db2_regex.jar', db2_regex) @

CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3))

RETURNS INTEGER
FENCED
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp.regexpLike'
NO EXTERNAL ACTION
@



생성 예

db2 connect to 디비명 user 사용자ID using 사용자비밀번호
db2 –td@ –v –f /work/reg.db2
db2 terminate

 

참고 문서

1. DB2에서 제공하는 정규식 함수

http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref.doc%2Fdoc%2Fr0002321.html

2. 자바 정규식 함수 생성 및 실행

http://www.ibm.com/developerworks/kr/data/library/techarticle/dm-1011db2luwpatternmatch/

“클러스터 관리자 자원 상태가 불일치하므로 db2start가 실패했습니다.”

상세 설명

클러스터 관리자 자원 모델과 db2nodes.cfg 파일이 일치하지 않으므로 db2start 명령으로 프로세스를 시작할 수 없습니다. 클러스터 관리자와 동기화되지 않은 db2nodes.cfg를 수정하면(고의적으로 또는 비고의적으로) 이러한 불일치가 발생합니다.

불일치가 해결될 때까지 DB2 pureCluster 인스턴스 또는 새 자원을 시작할 수 없습니다. 이미 시작된 DB2 자원은 이 오류에 영향을 받지 않습니다.

처리방법

db2nodes.cfg 파일을 이전 구성(클러스터 관리자와 동기화된 구성)으로 복원하십시오. 이전 구성으로 복원할 수 없으면 클러스터 자원 모델을 복구하십시오. 이를 수행하려면 전역 db2stop을 발행하여 인스턴스를 중지하고 -repair 옵션을 사용하여 db2cluster 도구를 실행하십시오.

DB2 V10.1 pureScale 설치 후 사용 중, Infiniband Adapter 기능코드(Feature Code)가 다르게 물려 있어서 Adapter를 교체하는 작업을 하였다.

이후 db2start 시 SQL1517N 메시지가 발생하면서 기동되지 못하였다. db2cluster 명령어를 통하여 repair 작업을 하면서 정상화할 수 있었다.

root 사용자로 db2 엔진이 설치된 경로로 이동하여 다음과 같이 작업을 수행하였다.

#> cd /db2/v10.1/bin
#> ./db2cluster -cfs -list –domain  (클러스터 도메인 명 확인)
#> ./db2cluster -cm -repair –domain 도메인명

 

db2cluster –repair 옵션 시, tsa 클러스터 구성(quorum, domain) 관련하여 초기화 후 재 설정을 하는 것 같다.

+ Recent posts