본문 바로가기

DB2 for LUW

[SQL] SQL0444N Reason code 4 (built in function) DB2에 내장된 함수 실행 시 위와 같은 SQ0444N 메시지를 보게 되는 경우가 생길 수 있다. 내장 함수 호출 시, db2 내부적으로는 db2clifn1.a 라이브러리를 참조하게 되는데 이 라이브러리 파일이 없어서 발생을 하는 경우가 있다. $> db2 ? sql0444n SQL0444N 루틴 ""(특정 이름 "")이(가) 라이브러리 또는 경로 "", 함수 ""에서 코드로 구현되었지만 액세스할 수 없습니다. 이유 코드: "". 설명: 데이터베이스 관리 프로그램이 루틴 ""(특정 이름 "")을(를) 구현하는 코드 본문에 액세스하려고 했지만, 이유 코드""(으)로 지정된 이유로 인해 액세스할 수 없습니다(코드는 아래 나열되어 있음). 루틴을 구현하는 파일은 ""(으)로 식별되고 함수는 ""(으)로 식별됩.. 더보기
[아키텍처] DB2 Virtual Memory 란? 요즘처럼 가상화 시대, 클라우드 환경이 언급되는 상황에서는 “Virtual Memory”라는 용어는 색다르게 느껴질 수도 있을 듯 싶다. 고객사쪽에서 db2pd –osinfo를 통해서 보면 나오는 “Virtual Memory가 무엇이냐?”고 문의가 들어 왔었다. host DB2를 접하시는 분들에게는 특별한 기능처럼 여겨지는 듯 하다. (virtual memroy라고 별도로 설정하는게 있는?) Linux, Unix & Windows 기반의 DB2에서는 물리적인 메모리와 디스크의 SWAP 공간을 통털어서 “Virtual Memory”라고 칭한다. 이렇게 표현된 데에는 DB2의 메모리 아키텍처에 따른 메모리 주소 관리 방식 때문이라고 할 수 있겠다. DB2가 사용하는 메모리 주소 관리 방식은 VAS (Virt.. 더보기
[성능] 오라클 IFS 환경에서 varchar 문자열의 검색 키 업무적으로 IFS 를 구성해서 사용하는 경우는 Data Migration 인 경우다. 데이터 이관 작업으로 일회성으로 사용을 하기에 IFS 관련 문제가 될 경우는 없었다. 그러나 오라클 IFS 환경에서 개발을 지원하다 보니 성능 문제가 된 적이 있었다. db2top 에서 세션 정보를 모니터링 하거나, 스냅샷 뷰인 sysibmadm.applications 의 appl_status 상태가 “Wait for Remote” 인 경우가 발생을 한다. nickname 데이터 조회 시, data source에서 sql 처리가 진행 중으로 결과를 기다리는 상태라고 해석해 볼 수 있겠다. 데이터가 많은 테이블이면 별 문제가 되지 않겠지만, 데이터 건수가 얼마 되지 않는데도 이런 식으로 “대기 상태”에 놓여 있다면 SQL.. 더보기
[관리] 데이터베이스 옮기는 방법 고객사에 지원을 하다 보면, 현재의 Database를 다른 곳으로 옮기거나 특정 tablespace의 위치를 바꿔야 하는 경우가 발생한다. 이유는 디스크 공간이 부족해서 여유있는 곳으로 옮겨야 하는 상황이 되었거나, 외장 스토리지의 IO 성능 개선 작업을 하면서 Container로 사용 중인 Raw device의 경로가 변경되거나, 사용자 실수로 데이터가 삭제되서 데이터 복구를 하고자 하는 경우 등이라 할 수 있겠다. DB 백업 이미지로 위와 같은 작업을 하기에는 시간이 걸린다. 최종 백업을 받고 새로운 곳으로 restore를 해야 되므로 어느 정도 소요시간이 발생한다. 이런 경우 db2relocatedb 유틸리티를 사용하면 백업/복구 방법보다는 작업 시간을 단축할 수 있다. 작업은 db2 중지 후 진행.. 더보기
[이중화] db2havend (pureScale:db2instance) 에러라고 봐야할 지, 경고 성 메시지로 메시지를 봐야할 지 개인적으로도 아리송하지만, pureScale 환경에서 진단로그(db2diag.log)에 다음과 같음 메시지를 볼 수 있다. 2012-10-08-15.18.39.607132+540 I35440458A354 LEVEL: Error PID : 13107340 TID : 1 PROC : db2havend INSTANCE: db2inst1 NODE : 000 HOSTNAME: dbcni2 EDUID : 1 FUNCTION: DB2 UDB, high avail services, GPFSCluster::refreshVersionInfo, probe:5127 DATA #1 : String, 37 bytes detected DB2_CFS_GPFS_NO_REFRE.. 더보기
[개발] DB2 JDBC Driver 버전 DB2를 설치하고 WAS 담당자로 부터 JDBC Driver 요청을 받아서 전달해 줄 때 파일명에 4가 붙은 것(db2jcc4.jar)과 안붙은 것(db2jcc.jar)의 차이를 궁금해 했었다. 동기부여가 부족하기도 할 것이고, 업무로 바쁘다 보니 지나치게 되어 버리곤 했는데, 고객사에서 이것에 대해 문의가 왔다. 차이가 뭐냐고…그리고 JDBC 버전 어떻게 확인하냐고… 그래서 DB2에서 제공되는 jdbc driver관련해서 살펴보게 되었다. DB2 서버에 접근이 가능하다면, DB2 JDBC Driver는 다음과 같은 경로에 존재한다. (Linux/Unix) DB2설치_경로/java 혹은 instance경로/sqllib/java (Windows) C:\Program Files\IBM\SQLLIB\java .. 더보기
[SQL] rownum 사용 시 주의점 국내외적으로 Oracle 사용자가 많은 관계로 (여러 DBMS의 제조사 세미나를 가보면서) Oracle은 DBMS 계의 공공의 적이 되었다는 생각이 들곤 한다. IBM DB2의 경우 Mainframe (z-Series) 분야에서는 평정한 DBMS 이나 많이 사용되는 Unix, Linux, Windows 시장에서는 그렇지 못하기에 DB2 for LUW 제품에는 오라클 SQL을 실행할 수 있는 요건이 필수적이 되었다. 오라클을 사용하는 고객을 대상으로 DB2로 전환하기 위해서는 Oracle 의 기능을 흡수할 필요도 있고 낯선 DB2를 친숙하게 하는 효과를 만들었어야 했을 것이다. V9.1까지는 java 기반으로 만들어진 udf를 Oracle DB 전환 시 사용하였으나, V9.5부터는 DB2 자체에 변환기를 .. 더보기
[권한] SQL5193N (workload:sysdefaultuserworkload) 고객사 지원 시, DB2 계정 정책은 DB 레벨에서 설정한다. 설치 작업만 하는 경우는 대부분 고객사에서 인스턴스 계정으로 업무용으로도 사용하는 것 같고, 프로젝트 업무를 지원하게 되면 테이블 공간까지 정의를 하면서 계정 정책을 수립하게 된다. 보통은 DBADM 권한을 부여해서 사용하기에 크게 문제가 되지 않았는데, DBADM 권한을 주지 않고 더 약한 권한을 주는 경우 다음과 같은 문제를 겪을 수 있다. 필자의 경우는 V10.1 에서 겪은 문제이나, 그 이하 버전에서도 접할 가능성이 있어 보인다. 계정 생성 db2 “grant CONNECT,DATAACCESS on database to USER db2user” 테이블 조회 db2 connect to sample user db2user using db2.. 더보기
[개발] 오라클 정규식 함수의 이관 프로젝트 지원 업무가 있어 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 기술 문서에 기술되어 있었다... 더보기
[이중화] SQL1517N (pureScale:db2cluster) “클러스터 관리자 자원 상태가 불일치하므로 db2start가 실패했습니다.” 상세 설명 클러스터 관리자 자원 모델과 db2nodes.cfg 파일이 일치하지 않으므로 db2start 명령으로 프로세스를 시작할 수 없습니다. 클러스터 관리자와 동기화되지 않은 db2nodes.cfg를 수정하면(고의적으로 또는 비고의적으로) 이러한 불일치가 발생합니다. 불일치가 해결될 때까지 DB2 pureCluster 인스턴스 또는 새 자원을 시작할 수 없습니다. 이미 시작된 DB2 자원은 이 오류에 영향을 받지 않습니다. 처리방법 db2nodes.cfg 파일을 이전 구성(클러스터 관리자와 동기화된 구성)으로 복원하십시오. 이전 구성으로 복원할 수 없으면 클러스터 자원 모델을 복구하십시오. 이를 수행하려면 전역 db2stop.. 더보기