본문 바로가기

Note

[이관] 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를 수행하여 테이블의 데이터 유형들이 개발언어에.. 더보기
[개발] db2jcc 와 db2jcc4 의 차이 이전에 db2 jdbc driver 버전에 대해 기술한 적이 있다. JAVA 6 (JDK 1.6) 버전 관점에서 설명을 하고 버전 확인하는 법들을 설명했는데, Driver 버전이 4인 경우와 아닌 경우에 따른JAVA 연동 시의 문제점을 최근에 알게 되었다. 문제점 - JDBC 4.0 (db2jcc4.jar) 으로 DB2와 연동하는 경우 SELECT문의 “컬럼 별명"이 반영되지 않는(무시되는) 현상 원인 - jdbc 4.0 에서는 ResultSetMetaData.getColumnName 과 ResultSetMetaData.getColumnLabel 이 명확히 구분되어 ResultSetMetaData.getColumnLabel 를 사용하지 않는 이상 “컬럼 명"으로 결과 값들이 반환됨 정리 JDBC & SQ.. 더보기
[개발] Windows에서 ESQL 컴파일 및 Connect By Siblings 고객사의 connect by 관련 지원하다 C 소스 코드를 컴파일 해보는 작업을 잠시 해 보게 되었다. 윈도우 환경에서 사용되어 C 컴파일러가 필요하여 지인을 통해 무료 컴파일러인 MinGW 다운받아 설치를 했다. 그러나 bldrtn 을 이용해서 컴파일은 되지 않았다. (cl.exe 오류) 왜 오류가 날까? bldrtn을 열어보니 기본 컴파일러로 Visual Studio C++ 를 사용하도록 BLDCOMP 변수에 박여 있었다. 즉 Visual Studio를 설치해야 bldrtn을 구동할 수 있게 셋팅되어 있던 것… MinGW 및 기타 gcc 들을 설치해 봐야 “어떤 값"을 넣어 “기본 컴파일러" 설정해야 하는지 알 수 없기에 Trial version으로 VS를 설치하였다. 물론 VC++이 설치되어 있다고.. 더보기
[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내.. 더보기
[이중화] 로그 쉬핑(shipping)을 통한 복제서버 구성 Informix에서는 CLR (continuous log restore) 를 통하여 원격지 서버에 복제 서버 구성이 가능한 것으로 알고 있다. DB2에서는 (내가 모르고 있는 것인지 모르지만) CLR에 해당하는 기능은 없어 보인다. HADR 설정을 통하여 DB 동기화는 가능하지만, Flash Copy 및 디스크 복제 기반의 이중화 환경에서는 실시간으로 Disk 복제를 하지 않는 이상 불가능하다. 한번은 고객사쪽에서 아카이브 로그만 복제 서버로 옮겨서 복구를 계속 할 수 있는지를 문의해 왔다. 즉 rollforward 작업을 한번이 아닌, 여러 번 수행 가능한지 확인이 필요한 문제였다. 아카이브 로그를 원격지 복제서버에 수동으로 옮겨주어야 하는 불편함은 있지만, 이 부분은 제외를 하고 다음과 같이 테스트를.. 더보기
[관리] db2dart 와 db2 inspect “데이터 무결성”을 확인하는 방법으로 DB2에서 제공하는 툴들이다. db2dart는 DB가 비활성화(offline)일 때 사용 가능하고, db2 inspace는 DB가 활성화된 상태에서 사용된다는 점이 사용 상 차이점일 듯 하다. 두 개의 툴이 사용되는 경우는 DB가 활성화되지 않는 상황이거나, 진단로그(db2diag.log)에 bad page 오류가 발생할 때 사용이 될 뿐 보통의 경우에는 사용하지 않는다. 필자의 경우도 많이 사용해 본 도구들은 아니다. 데이터 무결성 확인이외에도 두 개의 도구는 기능상 약간의 차이점이 있다. (1) db2dart - 데이터 추출 기능 - 테이블 공간의 고수위 마크(HWM)를 떨어뜨리는 기능 - 유효하지 않는 색인(index) 고치기 기능 (2) db2 inspect .. 더보기