본문 바로가기

DB2 for LUW

[이중화] ERRORCODE=-4210 (pureScale:maxTransports) DB2 구축 작업을 하면, 동시접속자수를 고려하여 maxuproc(AIX) 등의 OS 레벨의 변수 값을 검토하게 된다. DB2 인스턴스 레벨에서는 MAX_COORDAGENTS 변수의 값으로 조정을 하게 되는데, 현재는 기본 값이 Automatic 이기 때문에 크게 고려할 필요가 없게 되었다. 그런데 pureScale 환경에서는 동시접속 관련하여 고려해야 될 변수가 있다. 클라이언트 친화성(Client Affinity) 방식 및 자동 워크로드 밸런싱(WLB) 방식 중 어느 방식이 pureScale 이중화 구성에 권장되는지는 알 수 없지만 WLB 방식인 경우 dsdriver 설정 파일에 maxTransports 값을 고려해야 된다. V10.1 FixPack 0 (GA) 버전에서는 기본 값이 80 이였고, F.. 더보기
[설치] Activation Code 및 버전 EOS 가끔씩이기는 하지만 파트너 사 아니면 DBA 분들로부터 위 2가지 관련한 문의를 받는다. 이미 V9.1 Viper는 2012년 4월 말 End Of Service가 되었고, 내년 V9.5 Viper2가 EOS된다. 현재 가장 많이 쓰이는 버전은 V9.7 코브라라고 할 수 있고, V10.1(갈릴레오)이 최신버전이라 할 수 있겠다. 금년 여름 V10.5 케플러가 출시된다는 소식이 있으니 IBM에서 고속 성장을 하고 있는 제품이라 할 수 있겠다. 1. 라이센스 파일 및 Activation Code 일반적으로 DB2 Edition 유형은 WSE, ESE, AESE 정도가 일반적인데, IBM Tech Note를 보면 많은 License가 존재한다. DB2 라이센스는 시리얼 키 값이 아닌 Activation.zip.. 더보기
[SQL] 테이블 함수 PD_GET_DIAG_HIST 로 진단로그의 MSG 컬럼 데이터 줄바꿈 변경 방법 db2의 진단로그(db2diag.log) 파일은 db2diag 유틸리티와 –fmt 옵션으로 포맷을 수정할 수 있다. 이외에도 테이블 함수를 사용해서 진단로그 내용을 SQL 방식으로 조회가 가능하다. 단 문제는 MSG 컬럼의 내용이 “줄바꿈”처리 되어 있는 경우 결과 값이 흐트러져서 나오는 문제점이 있다. 이 경우는 db2diag –fmt 옵션으로 볼 때도 마찬가지로 줄이 바뀌어져서 흐트러진다. 테이블 함수로 “줄 바꿈”하지 않고 처리할 수 있는 방법을 생각하다가 다음과 같은 함수를 사용해서 줄바꿈처리를 못하도록 변경할 수 있었다. select varchar(replace (MSG, CHR(10),’ ‘),1024) msg from TABLE(PD_GET_DIAG_HIST(‘MAIN’,’D’,’’,CAST.. 더보기
[SQL] 오라클 호환성 VARCHAR2 오라클 포팅작업을 하다보니 오라클 호환성 기능에 대해 새롭게 살펴보게 되는 것 같다. 오라클에서는 숫자형으로 선언된 컬럼에 공백값(‘’)을 입력하면 NULL 값 처리가 된다. DB2에서는 공백값을 입력하면 형 변환 오류가 발생하여 입력이 실패한다. 만일 문자열로 된 숫자 값 (예: ‘1234’) 식의 값을 입력하면 자동 캐스팅 되어 입력된다. iBatis에 대해서는 잘 모르지만, DBMS Migration 작업을 하다보면 XML 문서에 SQL문들을 모아 놓고 dynamic 하게 SQL을 실행하는 환경을 보게 된다. 아마도 XML문서에 값들도 동적으로 받아 처리되도록 하다보니, 매개변수의 데이터 유형이 DB에 선언된 컬럼 유형과는 다르게 지정되는 경우가 많다. (아마도 개발편의성 때문에 대부분은 VARCH.. 더보기
[권한] 사용자에게 테이블 생성 및 DML만 하게 하려면? DB2는 OS 사용자를 대상으로 권한/특권 부여하여 관리한다. 따라서 계정 인증처리는 db2ckpwd 프로세스를 통하여 처리된다. 권한/특권 부여는 인스턴스 레벨 (OS 그룹을 dbm cfg 구성 변수에 설정), DB 레벨, 테이블 공간 등의 하위 object 레벨로 이뤄진다. 대부분은 DB 레벨에서만 권한 관리하는 방식으로 고객에게 제시를 하는 편이여서, 하위 object에 대한 특권 관리를 자세히 보지는 않았었다. 고객으로부터 특정 사용자가 테이블 생성, DML, LOAD 정도만 되도록 권한 관리 방안을 요청해 와서 살펴 보았다. V10.1에서는 V9보다 조금 더 DB레벨 권한 종류가 다양해졌다. 모든 권한을 다 테스트해 본 것은 아니지만, DATAACCESS 권한이 상당히 비중이 큰 권한이라는 것을.. 더보기
[연계] SQL30090N Reason Code 31 (Federation:Wrapper) db2 “? sql30090n” SQL30090N 조작이 응용프로그램 실행 환경에 대해 유효하지 않습니다. 이유 코드 = "". 설명: 조작이 응용프로그램 실행 환경에 대해 유효하지 않습니다. 예를 들어, 명령문 또는 API에 대해 특별한 제한사항이 있는 응용프로그램(CICS와 같은 XA분산 트랜잭션 처리 환경에서 실행되는 응용프로그램,CONNECT 유형 2 연결설정으로 실행되는 응용프로그램 또는 페더레이티드 시스템 기능을 사용하여 여러 데이터 소스를 갱신하는 응용프로그램)의 조작이 유효하지 않을 수 있습니다. 조작이 거부되었습니다. DB2 V9.X 에서 Oracle로의 Federation 설정할 때는 발생하지 않았었는데, V10.1에서는 Wrapper 생성 시 Linux에서는 위와 같은 오류가 발생한다.. 더보기
[SQL] 변경된 데이터 추적 및 V10의 신기능 시간 테이블 (Temporal Table) DBMS의 기능 요건을 살피면 “사용자 실수에 의한 트랜잭션 복구” 요건을 보게 되곤 한다. 해당 요건은 ORACLE의 Flashback 기능을 이용한 “행 레벨”, “테이블 레벨” 혹은 “DB 레벨”의 시점 복구를 의미한다. SQL 수행을 잘못해서 취소를 하고자 할 경우 oracle은 flashback을 통해서 SQL 수행 전 시점으로 되돌 릴 수 있다. 현재에도 DB2 에서는 해당되는 기능이 없는 것으로 알고 있기에 “어떤 대안이 있을까” 하는 고민을 하게 된다. 테이블공간 생성 시 (현재는 기본 옵션이지만) “삭제된 테이블 복구” 옵션을 주는 경우 삭제된 테이블의 DDL 추출과 백업 이미지를 통하여 데이터를 추출해 내어 복구 작업을 할 수 있다. 이외 Optim HPU(High Performance.. 더보기
[이관] SQL3508N Reason code 3 (load fail) db2 “? SQL3508N” 로드 또는 로드 쿼리 중에 "" 유형의 파일 또는 경로에 액세스하는 동안 오류가 발생했습니다. 이유 코드: "". 경로: "". 이유 코드 3: 파일에 기록할 수 없거나 파일 크기를 변경할 수 없습니다. 디스크가 가득찼거나 하드웨어 오류 때문일 수 있습니다. 아래의 파일 유형 목록을 참조해서 로드를 실행하기에 충분한 스페이스가 있는지 확인하거나 다른 곳을 사용하도록 지정하십시오. 로드를 재시작하거나 다시 실행하십시오. 하드웨어 오류인 경우, 적절한 조치를 취한 다음 재시작하거나 로드를 다시 실행하십시오. db2 load 유틸리티를 사용해서 데이터 적재를 수행하는 경우, 적재 작업 중 임시 파일을 만들어 적재 작업을 진행한다. 따라서 임시 파일 경로를 별도로 지정하지 않아 데.. 더보기
[이중화] ECF=0x9000053E (pureScale:db2instance -list) pureScale에 구성된 인스턴스 상태를 보기 위해서 db2instance –list 를 수행하면 진단로그에 다음과 같은 메시지가 기록된다. 2012-10-02-08.34.14.156718+540 E14601321A556 LEVEL: Error PID : 26148990 TID : 65120 PROC : db2sysc 0 … FUNCTION: DB2 UDB, high avail services, sqlhaGetInfoForClusterObject, probe:4596 RETCODE : ECF=0x9000053E=1879046850=ECF_SQLHA_RESOURCE_NOT_FOUND Resource not found 2012-10-02-08.34.14.158708+540 I14601878A671 LEVE.. 더보기
[일반] SQL6048N (hostname) SQL6048N 메시지 SQL6048N START 또는 STOP DATABASE MANAGER 처리 중에 통신 오류가 발생했습니다. 설명: START 또는 STOP DATABASE MANAGER 명령이 추가하려는 새 노드를 포함하여 sqllib/db2nodes.cfg 파일에 정의된 모든 노드와 연결을 설정하려는 중에 TCP/IP 통신 오류가 발생했습니다. 고객으로부터 SQL6048N 관련 문의가 온 적이 있었다. 이 오류메시지는 hostname 과 관련된 오류로 관련된 파일들을 살펴봐야 한다. 확인1) db2 명령어가 정상 수행되는가? DB2가 운영 중인 상태라 하더라도 “호스트 명”이 변경되는 경우 db2 명령어는 수행되지 못하고 위 에러메시지를 반환한다. DB는 요청된 작업 수행에 있어서 “호스트 명.. 더보기