본문 바로가기

DB2 for LUW

[이관] lobsinfile 및 tempfiles path 데이터 이관 작업 시 lob 데이터를 고려하지 않고 export 나 load를 수행하게 된다. 많은 테이블에 대해서 이관 작업을 급히 수행해야 되는 경우, 이관 대상의 테이블 컬럼 정보를 확인하지 않고 수행을 하다 보면 lob 데이터가 있는 테이블은 load 시 “문자 짤림" 로그가 남게 된다. 데이터 코드 셋이 잘못되어서 발생하는 경우도 있지만, lob 컬럼이 속한 테이블 경우 추출/적재 시 lob 컬럼에 대한 옵션을 주지 않으면 발생하기도 한다. 또한 load 작업 시 여러 이유에서 실패를 하거나 중단되는 경우 load 작업을 위한 임시 공간이 full 발생하여 load 작업이 실패하게 되는 경우도 발생한다. 데이터 이관 작업 시, lob 데이터 및 대용량 데이터 이관을 고려하여 다음과 같이 expo.. 더보기
[이관] admin_cmd 프로시저를 이용한 이관 자동화 고객사 기술지원을 하다보면, 데이터 추출/적재 작업은 개발 프로그램을 통하여 진행하고자 하는 요건이 발생한다. 개발자들이 이관 작업을 수행하는 경우는 개발 language를 통해서 구현하고 싶어하고, DBA가 수행하는 경우는 shell 방식으로 처리하는 경우가 보편적이지 않을까 싶다. admin_cmd를 이용하여 다양한 관리 작업을 개발 레벨에서 관리를 할 수 있다. 자세한 정보는 정보센터를 통해서 확인이 가능하다. 문서: http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.rtn.doc%2Fdoc%2Fr0012547.html 0. 테스트 환경 - DB2: V10.5 - 오라클 호환성: 적용하지 않음 -.. 더보기
[SQL] 오라클 호환성 VARCHAR2에 대한 고찰 오라클 호환성 기능은 DB2_COMPATIBILITY_VECTOR 레지스트리 변수에 값을 적용함으로서 오라클 문법/표현등을 사용하게 된다. 그러나 일부 기능은 데이터베이스를 생성하기 전에만 적용되는 것들이 있다. Developerworks에 나온 문서(https://www.ibm.com/developerworks/mydeveloperworks/blogs/SQLTips4DB2LUW/entry/about_the_db2_compatibility_vector_and_what_not_to_say_at_the_dinner_table282?lang=en) 의 내용 및 기억을 더듬어보면 1. NUMBER 2. VARCHAR2 3. DATE 4. Oracle Data Dictionary 정도가 아닌가 싶다. 이 중 VA.. 더보기
[개발] db2dclgn (선언부 생성기) 요즘의 개발 추세는 java 기반으로 가고 있지만, 과거 시스템에는 Embedded SQL로 개발되어진 시스템들이 많다. 특히 OS390, AS400 등의 host 시스템에서는 여러 류의 ESQL 프로그램들이 사용되는 것 같다. ESQL 이 DB와 연동하기 위해서는 테이블에 대한 정의서(DDL)와 개발 언어로 변환된 변수 선언부가 필요해진다. 수많은 테이블에 대해서 테이블의 데이터 유형을 개발 언어에 맞게 변환을 수작업으로 한다면 (단순한 일에) 많은 시간이 소요될 것이다. 그래서 DBMS마다 테이블에 대한 유형을 개발 언어에 맞게 변환해주는 유틸리티를 제공하는 것 같다. DB2 for LUW에서는 db2dclgn 이라는 유틸리티를 제공한다. db2dclgn를 수행하여 테이블의 데이터 유형들이 개발언어에.. 더보기
[SQL] 오라클 호환성에 따른 문자열 길이 변화 DB V10.5 케플러가 출시된 올해, V9.7 코브라는 이제 오래된 제품처럼 여겨진다. 얘기하고자 하는 내용은 V9.7 때 있었기 때문에 지금은 달라졌을 수도 있다고 생각한다. 샘플 데이터 db2 +p –tv 더보기
[보안] 인스턴스 구성변수(dbm cfg) authentication 국가에서 정책적으로 보안 기능을 요구하면서 많은 고객사들이 데이터 보안 프로젝트를 진행하고 있다. 지원하고 있는 한 고객사에서도 보안 기능을 적용하기 위하여 보안 컨설팅을 받은 결과 DB2의 보안 취약점 중 하나로 DB2 서버와 클라이언트 간의 통신 시 사용자 정보의 암호화 되지 않는 점이 지적사항으로 도출되었다. DB2 인스턴스 구성 시 authentication의 기본 값은 SERVER 로 설정된다. 이것은 인증처리가 DB2 서버 쪽에서 처리됨을 의미한다. 정보센터에서 authentication의 값에 대해 찾아 보면 SERVER_ENCRYPT 값은 통신 시 사용자 ID와 비밀번호가 암호화되어 되어진다고 기술되어 있다. 이외에도 GSSPLUGIN 등을 사용한 암호화 방식도 있지만, 개인적으로 DB2내.. 더보기
[웹서버 구축] Apache + PHP + DB2 연동 Red Hat 기반 리눅스에 PHP 와 DB2 연동 테스트를 해 본 것이 2007년인데, 몇 일전 새롭게 테스트를 해 봤다가 마무리를 하지는 못했다. 차후 재 테스트를 하여 완료가 되는 경우 다시 정리하도록 한다. 1. 설치 환경 정보 - 리눅스: CentOS 4.x x86 - 웹서버: Apache 2.2.6 - 웹 Language: PHP 5.2.5 2. 설치 순서 (1) DB2 V8.x 32bit Client 설치 및 구성 (2) Apache 서버 설치 및 구성 (3) PHP 설치 3. 다운로드 - PHP : http://www.php.net/ - 아파치: http://httpd.apache.org/ - DB2 : http://www-01.ibm.com/support/docview.wss?rs=71&.. 더보기
[관리] row migration 과 row chain DB2의 데이터 관리는 page 단위로 이뤄진다. 그리고 지원하는 page 크기는 4K, 8K, 16K, 32K 가 존재한다. 이번 달에 출시된 V10.5 에서는 페이지 크기를 넘는 row를 기존 페이지에 관리할 수 있는 기능이 지원되었지만, 이런 page 단위의 데이터 관리는 IO 성능 관리에서 중요한 부분을 차지한다. DB2에서는 여러 page에 데이터가 분리되어 들어가는 것을 허용하지 않기 때문에 데이터 단편화(?) 가 발생하지 않는다. 반면, 테이블을 생성 전 어떤 페이지 크기로 사용할 것인지 고민이 필요하다. 이런 데이터 단편화에 대한 의미는 2가지로 구분을 할 수 있는데, 일반적으로는 “row chain”으로 인식이 되는 것 같다. 그래서 경쟁사에 비해 DB2는 데이터 단편화가 발생하지 않는다.. 더보기
[설치] 비루트 설치 DB2 V9.5 (Viper II) 부터 root 이외 계정으로 설치가 가능해졌다. 특정 고객사 설치 작업 시, root가 필요한 사유를 작성해야 되는 경우가 있었으니, non root 설치 방식 지원은 업무 진행에 도움이 될 것이다. 비루트 설치의 제약사항은 DB2 설치 시 인스턴스 구성이 된다는 점이다. (1 엔진에 1 인스턴스 구성만 가능) 어떤 의미에서는 엔진과 인스턴스가 붙어있다고 말할 수 있을 것 같다. 설치 후를 비교하면 다음과 같은 차이가 있다. 1. root로 수행되는 프로세스의 소유자 # root 설치 인스턴스 $> db2_ps UID CMD db2inst - 113:50 db2sysc 0 root - 0:00 db2ckpwd 0 root - 0:00 db2ckpwd 0 db2inst .. 더보기
[관리] 테이블 상태 확인(SQL0668N) 테이블 구조가 변경되거나, 정규화가 되어 RI가 존재하는 테이블을 사용하고 주기적으로 LOAD 작업이 발생한다면 SQL0668N 에러 메시지를 받게 될 것이다. 이런 경우는 테이블 상태 체크를 신속히 파악해야 되는데, 관리 뷰(AdminTabInfo)를 통해서 작업이 가능하다. SELECT CASE LOAD_STATUS WHEN 'PENDING' THEN 'Load Pending' WHEN 'IN_PROGRESS' THEN 'I' ELSE 'N' END , CASE REORG_PENDING WHEN 'Y' THEN 'R' ELSE 'N' FROM SYSIBMADM.ADMINTABINFO WHERE TABSCHEMA = ‘스키마’ AND TABNAME = ‘테이블’ AND TABTYPE='T' ; 데이터 .. 더보기