본문 바로가기

DB2

[관리] 접속한 Application 개수 및 정보 확인 DB2에 접속한 Application 확인 방법은 다양하다. db2pd, db2 list application 및 db2 스냅샷 함수 등등… 그런데 Application 접속에 의해 파생된 추가적인 쓰레드 들을 제외한 것을 보고자 하는 요건이 많을 것이다. (순수하게 db에 접속해서 작업을 요청하는 쓰레드만..) 쉽게 접속 수를 확인하는 방법은 db2 list active databases 명령어일 것이다. 실행 예 $> db2 list active databases Active Databases Database name = SAMPLE Applications connected currently = 3 Database path = /database/inst10/NODE0000/SQL00001/MEMBER.. 더보기
[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 .. 더보기
[관리] 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 작업 스케줄러.. 더보기
[관리] DB2 설정정보 백업방법과 그 활용 DB2에서 백업은 데이터베이스 범위에서 이뤄진다. DB보다 큰 범위인 인스턴스 범위에서의 백업은 db2 get dbm cfg 나 db2set –all 등을 통해서 백업받는게 보통인데, 버전이 올라갈 수록 DB 윗단의 백업으로서 사용할만 해지는 것 같다.(추출되어지는 정보가 많아짐) 1. db2rspgn DB2 식 용어로는 “응답 설치” 방법으로 일컬어지면서 등장하는 “응답파일 생성 도구”이다. “응답 파일 설치는” 쉽게 말해 “묻지마 설치”라고 표현할 수 있을 것 같다. 위 명령어를 사용하면 DB2 설치에서 OS 계정 생성, DB2 설정, DB 생성까지 일괄 실행할 수 있는 파일이 생성된다. (많진지 오래되서 기억이 가물해졌지만) oracle도 인스턴스 및 DB 생성 시 “설정 파일”을 이용해서 생성하는.. 더보기
[SQL] Recursive 처리 (재귀 SQL) KDUG를 방문했다가 oracle “connect by” 변환에 대한 질문이 있어 테스트를 해 보았다. 댓글 달기가 좀 불편한 점이 있어 recursive 처리에 대한 자세한 내용을 하지 못해서, 이곳에 좀 더 자세히 올리면 좋겠다 하는 생각에 적어 본다. V9.1까지는 오라클 SQL 호환성 기능이 지원되지 않아 recursive 처리가 쉽지가 않았다. 9.5부터 connect by 사용이 가능해져서 전보다 변환 작업이 편해 졌을 것이라 생각한다. 참고로 오라클 SQL 호환성 기능을 활용하여 ORACLE 변환 작업한 기회가 많지 않아 어느 정도 가능한지 말하기는 어렵다. (단, 2년 전 V9.7 Cobra로 PoC 수행시 문제가 발생해서 connect by를 쓰지 않고 Common table로 변환 처리.. 더보기
[관리] 백업, 복구 히스토리, 아카이브 로그 자동 관리 DB2에서 백업, 아카이브 로그, 복구 히스토리는 서로 관련이 있는 시스템?들이다. 백업의 유형에 따라 아카이브 로그를 사용할 수도 있고 사용 안 할 수도 있지만, 복구 히스토리는 백업, reorg, 테이블 공간 변경, 아카이브 로그 등등에 대한 실행 기록들을 보관을 한다. 따라서 이에 대해 별 생각없이 DB 관리를 하다 보면, 복구 히스토리 파일(db2rhist.asc)은 비대해 지고, (file system에 백업을 받아 놓는 경우) 백업 이미지로 인해 disk full이 되는 상황이 발생하게 된다. 앞으로 쓰고자 할 내용은 권장을 하는 내용은 아니고, “관리를 최소화 하고자 하는 경우” 이렇게 하면 이 부분들에 대한 관리 부담을 줄일 수 있는 방법이 존재한다는 것을 참고적으로 보이고자 한다. V9... 더보기
[가상컴퓨터를 활용한 Linux 기반의 DB2 Test Bed 구축] 2. 구축계획 테스트 환경 구축을 위해선 가상컴퓨터 소프트웨어와 리눅스 OS가 필요한데, 다음과 같이 다양한 선택권이 있다. [ 가상컴퓨터 소프트웨어 ] 1. VMware 2. VirtualBox 3. VirtualPC [ 리눅스 ] 1. Red Hat Enterprise Linux ( Oracle Enterprise Linux / CentOS ) 2. SUSE Enterprise Linux ( openSUSE ) 가상컴퓨터 소프트웨어는 VirtualBox나 VirtualPC와 같이 무료 소프트웨어가 있기는 하나 (개인적인 생각에는) 안정성과 편의성이 다소 떨어지는 측면이 있기 때문에, 부득이 하게 유료 소프트웨어인 VMware 을 사용할 예정이다. 물론 VMware에도 VMware Player나 VMware Serv.. 더보기
[SQL] 익명 블록 (Anonymous Block) V9.7에서 소개된 개념으로 FixPack5에서 약간 기능(locking 처리) 개선되어진 것으로 알고 있다. 이 기능이 업무 단에 실질적으로 적용될 가능성은 없을 것 같지만, 개발자 측면에서는 편의성을 제공해 주는 기능이 아닐까 싶다. routine 을 프로그래밍 하면서, 함수나 저장 프로시저(stored procedure)의 로직 검증을 하기 위해 매번 삭제하고 컴파일하여 db에 반영(deploy)하는 작업을 거쳐야 한다. 어떤 면에서는 불필요하게 반영(deploy)하는 것을 꼭 해야하나? 하는 의문이 들 것이다. 특히 운영 시스템에 routine들을 적용해야 하는 시점에서 검증을 하기 위해 컴파일해서 반영(deploy)하는 것도 때로는 부담이 되고 번거롭게 하는 과정일 수도 있을 것이다. 이렇게 d.. 더보기
[SQL] 자율 트랜잭션(Autonomous Transaction) DB2 V9.7 FixPack3 에서 도입된 기능이다. 저장 프로시저(Stored Procedure) 내부에서 호출되는 저장 프로시저의 트랜잭션 처리를 “호출한 저장 프로시저 트랜잭션 상태”와 상관없이 DB에 반영(commit)할 수 있게 하는 기능이다. 다른 DBMS에서는 어떤 용도로 사용되는지 찾아보질 않아 모르겠지만, 곰곰이 생각해 보면 업무적으로 “특수한 요건”일 때 적용이 될 법하고, 이외는 “호출한/호출당한 저장 프로시저”의 트랜잭션 수행 기록을 남기는 용도로 사용할 수도 있지 않나 싶다. 먼가 중요한 처리를 담당하는 “저장 프로시저”인 경우, 이 저장 프로시저가 수행될 때 마다 처리한 트랜잭션들을 기록하도록 하기 위해 (commit 이던 rollback이던) “자율 트랜잭션”을 사용할 필요가.. 더보기