본문 바로가기

DB2 for LUW

[SQL] Multi Action Trigger 일반적인 트리거는 테이블에 이벤트 특정 한 개의 작업 (삭제 혹은 입력, 변경)을 하게 되어 있다. 그러나 9.7 FixPack4 부터는 여러 작업을 수행할 수 있도록 트리거 기능이 개선되었다. 업무에 따라, 회사마다 정책에 의해서 트리거를 쓸 수도 있고, 안쓸수도 있지만 “특정 이벤트에 여러 작업을 해야 되는 요건”이 있다면 multi action trigger를 검토할 필요성이 있을 것 같다. 1번 테이블에 데이터가 입력되거나 변경되는 경우, 2번 테이블에 insert 및 update 작업이 기록되도록 하여 multi action이 적용하는지를 테스트 해 보았다. 테이블 생성 db2 “create table t1 (c1 integer, c2 timestamp)” db2 “create table t2 .. 더보기
[관리] Offline DB 백업의 복원 Offline Backup은 Database가 메모리에서 내려간 상태에서 받아진 것을 의미한다. 다른 관점에서는 Database에 접속이 이뤄지지 않는, 업무 서비스가 되지 않는 상황에서의 백업을 의미한다. 특정 DBMS에서는 이런 offline backup 개념이 없을 수도 있겠지만, DB2에서 백업은 트랜잭션을 기록하는 로그 관리 방식과 밀접한 관련을 갖는다. 순환로깅 방식을 사용하는 경우 백업은 offline 상태에서 진행되고, 아카이브 로깅 방식(사용한 트랜잭션 로그를 버리지 않고 보관)을 사용하는 경우는 offline, online 백업이 가능해 진다. 대부분의 고객사에서는 서비스가 중지되는 시간을 줄이기 위해 Archive 로깅 모드로 DB를 운영한다. 이런 상황에 offline backup을.. 더보기
[이관] IBM에서 제공하는 DBMS Migration 도구들 IBM에서 타 제조사의 DBMS를 DB2로 변경하는 경우, 관련 작업들을 편하고 자동화할 수 있도록 Tool을 제공한다. 한 때는 MTK(Migration Toolkit) 이라는 것을 제공했으나 현재는 V9.7과 같이 나온 DMT(Data Movement Tool) 이라는 것을 제공하고 있다. 어떤 면에서는 MTK가 좋은데, 또 어떤 면에서는 DMT가 낫다. 1. 비교 항목 MTK DMT DB연결방식 ODBC JDBC Type 4 운영체제 Windows, Linux, Unix Windows, Linux, Unix 원본 DBMS Oracle, MSSQL, Sybase ASE, MySQL Oracle,MSSQL, Sybase, Access, MySQL, Postgres, db2, db2 /z 목표 DBMS .. 더보기
[관리] Application에서 실행 중인 SQL 확인 시스템을 관리하다가 오류가 발생해서, 아니면 갑작스럽게 DB 시스템이 느려지거나 heavy한 SQL이 있나 해서 수행 중인 SQL모을 확인해 보고자 하는 경우가 있을 것이다. IBM에서 무료로 제공하는 모니터링 도구 중 잘 사용되는 것이 db2pd와 db2top 2가지가 있다. db2pd는 informix의 onstat 의 메커니즘을 적용한 도구로 DB2가 사용하는 메모리에서 정보를 수집하게 해주는 도구이다. 장점은 DB 접속 절차가 없어서 db가 hang이 발생하는 순간에도 DB의 정보 수집이 가능하다는 점일 것이다. 단점은 많은 정보가 추출되고, Text 기반으로 출력 형식이 정해져 있어서 보고자 하는 정보를 찾거나 보기가 불편하다는 점일 것이다. 반면, db2top은 (v9.5부터 제품 설치 시 제.. 더보기
[관리] Windows 작업스케줄러를 이용한 DB2 백업 자동화 DAS 에 대한 블로그 글에 Windows 작업 스케줄러에서 DB2 자동화 방법에 대한 문의가 있었다. 최근 Windows 용 DB2를 설치했던 고객사에서도 관련하여 문의가 왔었다. 인터넷에서 관련 자료 검색이 잘 안되었나 하는 생각이 들기도 하여 블로그에 남겨 본다. Windows XP에서 작업 스케줄러를 설정하는 것과 Windows 7 혹은 Vista 혹은 2008 Server에서 설정하는 방법이 약간 다르다. DB2 관련 작업을 자동화하기 위해 개인적으로 2개의 파일을 만들어서 설정을 했다. ### XP 및 Windows 2003 서버의 경우 #### 1. cmd 파일 (파일명 예: backup.cmd) db2cmd /w /c /i db2 -tf backup.sql >> bak.txt 작업 스케줄러.. 더보기
[SQL] Oracle 호환성에 따른 date 값의 차이점 IBM에서는 V9.5부터 DB2_COMPATIBILITY_VECTOR 라는 레지스트리 변수를 통하여 ORACLE의 특수 기능을 동일하게 사용하도록 지원하기 시작하였다. ORACLE에서 DB2로 object들을 변환 작업할 때, 도움이 많이 되지만 DBMS가 다른 만큼 동일하게 작용하지 않는 부분이 존재한다. 개인적으로는 “오라클 호환성” 기능은 ORACLE 적인 SQL 등을 내부적으로 DB2 기능으로 mapping 혹은 변환시켜주는 기능이지 “Oracle SQL”을 직접 수행하는 기능은 아니라고 생각하고 있다. 보통은 DB2 V9.7에서 오라클 호환성을 사용하기 위해서는 레지스트리 변수를 DB2_COMPATIBILITY_VECTOR=ORA 로 설정을 한 후 DB를 생성하도록 안내를 한다. 면밀하게 살펴보.. 더보기
[SQL] 집계함수 listagg() 위 함수는 V9.7 FixPack4에서 새롭게 소개된 함수이다. 특정 컬럼 기준으로 그룹의 문자열 값 세트를 하나의 문자열로 집계하도록 하는 기능을 한다. 고객사쪽에서 문의가 와서 고민하다 위 함수가 생각이 나서 소개를 해 주었는데, 나름 의미가 있을 듯 해서 블로그에도 남겨 본다. 저장된 데이터 C1 C2 C3 ----------- ----------- --- 1 1 A 1 1 B 1 1 C 1 2 D 1 3 E 원하는 결과값 C1 C2 C3_SUM ----------- ----------- ------------ 1 1 A,B,C 1 2 D 1 3 E LISTAPP() 함수를 쓰면 다음과 같이 간단한 SQL로 구현된다. select c1, c2, substr(listagg(c3,',') within .. 더보기
[관리] 데이터베이스 크기 확인 DBMS마다 데이터베이스가 가지는 자원들은 차이가 난다. ORACLE 경우는 인스턴스와 DB가 붙어있어서 자원 구분이 불분명하지만, DB2의 경우는 DB 하위에 독립적인 트랜잭션 로그, 메모리(버퍼풀), 테이블 공간등을 지정하고 관리를 한다. Informix의 경우는 인스턴스 범위에서 트랜잭션 로그, 시스템(메타 테이블) 정보, DB 공간이 지정되고 관리가 된다. (어렴풋한 기억을 더듬어 보면 MS-SQL, Sybase 는 informix와 비슷하지 않을까 싶다.) 그 아키텍처가 제조사 별로 다르기 때문에 DB 크기 산정도 차이가 나겠지만, 그 기준이 되는 것은 “테이블 공간”들의 합일 것이다. DB2에서는 프로시저를 실행함으로서 DB의 사용크기와 가용 크기를 확인할 수 있다. (단위는 byte) 명령어.. 더보기
[관리] DB2에서는 작업 스케줄링을 어떻게 하지? 유닉스의 “Cron”, 윈도우의 “예약된 작업”을 사용하여 DB2 관리 작업을 자동화 한다. 보통은 OS의 스케줄링 기능을 이용하는데, DB2 자체에서도 기능이 있는지 문의를 받는 경우가 있다. 기능은 있다. 그러나 권장하지는 않는다.(왜 권장하지 않는지는 글을 읽으면 알게 될 것이다.) DB2 자체의 작업 스케줄링 기능을 어떻게 설정할 수 있는지 살펴 보자. Windows에서도 DAS (DB2 Administration Server)라는 용도로 계정을 설치할 때 묻는다. Unix나 Linux 에서는 OS 계정으로 인스턴스나 DAS를 생성하기 때문에 설치 작업 하면서 DAS를 왜 만들어야 하는지 의문을 많이 가졌을 것이다. 이 DAS 가 하는 주 업무가 DB2의 작업 스케줄링을 해주는 것이라 보면 되겠다.. 더보기