본문 바로가기

Note

[SQL] model dimension by 문의가 와서 Oracle 10g에서 제공되기 시작한 model dimension by 에 대해 살펴보게 되었다. DB2의 오라클 호환성이 어지간한 신택스는 다 지원된다고 생각하고 있었는데, 이런 엑셀스러운 신택스도 있는 것을 알게 된 것 같다. 처음보는 기능이기에 어떤 방식으로 처리되는지를 알고자 웹 검색을 해보니 “증분 누적?”(바로 전 값을 계속 누적 연산) 처리 로직정도로 이해가 되었다. (참고) http://www.gurubee.net/lecture/2203 어떤 문서에는 common table (with 문을 통한 recursive 처리) 로의 변환이 되지 않게 쓰인 문서들도 있었는데 위의 참조된 웹 문서를 기준으로 db2 방식으로 변환을 해 보았다. [예제1] 증분 누적 입력 값 및 결과 MM.. 더보기
[관리] 메모리 부족 고객사 요청으로 기술지원을 갔다가 데이터 복구 작업을 해야 되는 경우가 있었다. 특정 테이블의 데이터 복구 작업 시 업무 영향도를 최소화하기 위해서 개발 시스템에 운영DB의 백업 이미지를 경로재지정 복구를 수행하여 필요한 데이터를 추출하는 방법으로 작업을 진행하였다. 문제는 개발서버의 자원이 운영시스템만큼 풍족하지 못하고, 이미 개발DB가 존재하기 때문에 복구 중 rollforward 작업이 진행되지 못하게 되었다. rollforward를 수행하면서 내부적으로 DB가 활성화되는 것 같은데, 개발서버의 물리적 메모리의 가용량이 DB가 필요로 하는 메모리 크기가 되지 못해서 생긴 것 같다. 마치 대저택에서 살던 사람이 사업이 망해 단칸방으로 세간살이를 옮겨야 되는 경우와 비슷한.. 인스턴스 메모리 및 DB .. 더보기
[보안] authentication 과 srvcon_auth DBM 구성변수에서 지원하는 보안 관련 변수에는 authentication과 srvcon_auth 가 있다. 정보센터를 통해서 보면 동일한 기능을 하는 것처럼 보이는데, 변수를 2개나 제공을 하고 있다. 내용을 면밀히 읽어보면, authentication 설정 값보다 srvcon_auth 값이 우선한다고 하는 정도의 차이점이 있겠다. 1. server 쪽 DBM CFG 설정 $ db2 update dbm cfg using authentication data_encrypt $ db2 update dbm cfg using srvcon_auth server $ db2 get dbm cfg | grep AUTH Server Connection Authentication (SRVCON_AUTH) = SERVER .. 더보기
[보안] SSL 설정 V9.5 까지는 OS 환경변수 설정하여 SSL을 구성하였으나, V9.7부터 DBM 구성변수로 SSL 설정 변수들이 포함되었다. 최근에 보안 사고로 인해 각종 보안 조치사항들이 취해지다 보니 DB 쪽의 SSL 구성 요건도 생기는 듯 하다. 오래된 버전에서는 SSL 관련 라이브러리를 별도 설치를 했었어야 되는 것 같은데, V9.7부터 DB2 설치 시 SSL 관련 라이브러리(IBM GSKit)들이 설치된다. 1. 설치 경로 - DB2_엔진경로/gskit - 인스턴스_홈/sqllib/gskit 2. DB2 서버 쪽의 설정 인스턴스 경로를 /db2user/inst97로 가정한다. (1) 환경변수 설정 (.profile) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/db2user/ins.. 더보기
[관리] db2gcf db2gcf 명령어는 이중화하는 경우에 주로 사용된다. V9.5부터 TSA (Tivoli System Automation) 클러스터가 도입이 된 후 이중화 관련 tsa의 script를 보면 db2 제어를 위해 db2gcf가 사용됨을 확인할 수 있다. 인스턴스 시작(u), 중지(d), 상태(s) 를 확인할 수 있고, 강제로 자원을 정리하는 k 옵션도 제공한다. Unix 환경이나 Linux 환경에서 DB2 인스턴스가 패닉 상태에 놓인 경우 db2stop 명령어로 인스턴스가 중지되지 않아, db2_kill 이라는 명령어를 사용한다. 그러나 윈도우 환경에서는 db2_kill 이라는 명령어는 제공되지 않는다. 윈도우 작업관리자에서 정리를 할 수 밖에 없기 때문에 db2_kill 같은 명령어의 필요성이 느껴질 수 .. 더보기
[복구] 경로재지정 복구 데이터가 삭제되었거나, 동일한 H/W환경에 백업 이미지로 테스트 DB 환경을 만들어야 되는 경우 db의 경로를 다르게 하여 restore를 해야 할 필요가 생긴다. 이럴 경우 테이블 공간 혹은 스토리지 그룹의 경로를 일일이 적어주는 것은 불편할 것이다. 경로재지정 복구 작업을 위해 db2는 해당 필요한 script를 만들어 준다. (V9.1 부터 지원된다) -- script 추출 db2 “restore db 디비명 from 백업_경로 taken at 백업_시간소 redirect generate script 경로재지정_복구.clp” -- 추출 script 예 RESTORE DATABASE SAMPLE -- USER '' -- USING '' FROM '/home/jseifert/backups' TAKEN .. 더보기
[관리] Backup Pending 풀기 DB2는 기본적으로 순환로그(circular logging) 방식으로 DB 생성이 된다. 따라서 사용된 트랜잭션 로그를 보관(Archive logging)하기 위해서는 LogArchMeth1 이라는 DB 구성변수에 “트랜잭션 로그를 보관할 장소"를 설정해 주어야 한다. 그리고 변경 후에는 Offline DB 백업을 수행해야 DB가 정상 상태에 놓인다. DB 구성 초기에 Archive logging 모드로 변경하는 것은 어려운 일이 아니나, 백업 정책 및 기타 운영 관련 정책이 한참 운영 중인 상태에 서 변경을 하게 되는 경우 난감한 일이 발생한다. DB의 데이터 사이즈가 작다면 큰 문제가 없지만 백업 수행이 오래 걸릴 정도의 사이즈가 되는 경우 백업으로 인해 장시간 운영을 중단해야 되는 상태가 놓이기 때.. 더보기
[구성] Federation MS-SQL Server 보통은 이관 작업을 위한 Oracle Federation 구성 정도가 전부인데, 일이 생겨서 MS-SQL Server의 Federation 구성을 하게 되었다. MS-SQL 서버 Federation을 위해서는 InfoSphere Federation Server를 설치하던가, DB2 서버 설치 후 DB2 FixPack 사이트에서 관계형 wrapper와 비관계형 wrapper 설치 파일을 내려받아 설치를 해야 한다. (Advanced E/W Server Edition로는 구성 불가능) 또한 MS-SQL 서버에 원격 접속을 할 수 있도록 환경 구성을 위해 ODBC 클라이언트가 필요하다. 1. ODBC Driver 내려받기 - 경로: ftp://ftp.software.ibm.com/software/db2ii/d.. 더보기
[성능] Actual Section & db2caem 두 개념 모두 V9.7에서 나온 것으로 알고 있다. 옵티마이저가 SQL을 어떻게 계획을 수립하여 실행할 지를 알고자 access plan을 보지만, 이것은 예상 계획일 뿐 “실제로 실행한 plan”을 보여주지는 않는다. 실제 수행한 plan에 대한 정보는 db2에서 actual section 이라는 개념으로 제공되고 actual section을 얻기 위해서는 “워크로드"와 “이벤트 모니터"를 사용해야 된다. 1. actual section을 수집하기 위한 절차 (1) DB CFG 구성변수 설정 - section_actuals (값: base) (2) Workload 생성 - 수집하고자 하는 SQL을 수행하는 application name 을 알아야 함 (3) Event Monitor 생성 (4) Expl.. 더보기
[성능] SQL Optimizer Profile 요즘에도 오라클의 Hint가 SQL 튜닝의 방법으로 선호되는지 모르겠다. JAVA 기반의 개발 환경에서 iBatis 등을 이용하여 XML 파일에 SQL을 중앙집중화(?) 방식으로 사용하는 추세이고, 오라클 아닌 다른 DBMS를 사용하더라도 개발된 SQL 수정없이 사용하는 요건이 중요해 지면서 “특정 DBMS의 기능”에 편중되는 방식은 지양되고 있는 것 같다. 사용 중인 오라클이 버전 업그레이드를 한다던가 하는 경우에 Hint가 사용된 SQL은 성능 저하를 일으키는 경우을 들어 본 적도 있다. SQL의 성능 개선으로 Hint 사용이 중요한 튜닝 방법으로 인식되어 왔지만, 개인적으로 이런 방법은 “호환되지 않는" 구속성이 있어 튜닝 방법으로서는 부정적인 시각으로 보게 되었다. DB2에서 실행 계획 변경은 O.. 더보기