'DB2'에 해당되는 글 2건

안녕하세요 피터입니다.

DB2에서 아래와 같이 DBI1309E 에러가 발생하는 경우에는 주요 설정 파일의 권한 문제일 가능성이 높습니다.


DBI1309E  System error.

Explanation:

The tool encountered an operating system error.

User response:

A system error was encountered during registry access. Ensure that there
is enough space on the file system where the registry is located, the
correct file permissions are set, and that there is a valid LAN
connection if the registry is remote.


1. profile.env 파일 권한 확인


root@localhost ~]# ls -l /db2home/db2계정/sqllib/profile.env
-rw-rw-r-- 1 db2계정 db2iadm1 128 4월 13 09:49 /db2home/db2inst2/sqllib/profile.env

profile.env 파일의 권한이 664 가 아니거나 소유주가 db2계정이 아닌 경우에 에러가 발생될 수 있습니다.

이런 경우 chmod, chown 명령어를 이용해서 권한을 위와 같이 변경해주시면 됩니다.


2. /var/db2/global.reg 파일 권한 확인

[root@localhost ~]# ls -l /var/db2/global.reg
-rw-r--r-- 1 root root 1040 4월 12 20:07 /var/db2/global.reg

othersread 권한이 없거나 소유주가 root가 아닌 경우 에러가 발생할 수 있습니다.

위와 같이 변경해주세요.



-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

'Database > DB2' 카테고리의 다른 글

[DB2] import 로 bulkinsert 하기  (0) 2018.06.22
[DB2] DBI1309E 에러 발생 시  (0) 2018.05.17
[DB2] 특정 테이블 export 하기  (0) 2018.05.03
블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

안녕하세요 피터입니다.

IBM의 DBMS인 db2에서 특정 테이블을 export 하는 방법을 소개하겠습니다.


export 명령어는 주로 대용량 데이터를 처리할 때 사용하며 table의 데이터를 file로 추출하기 때문에 db2 shell 에서 작업하는 것이 일반적입니다.


db2 계정으로 로그인 후 아래와 같이 명령어 수행

db2 connect
db2 "export to test.del of del select * from tmptable"


export가 완료되면 test.del 파일에 csv형태로 데이터가 저장됩니다.

※ csv(comma seperated value): 각 값이 콤마(,) 로 구분된 데이터

문자열 데이터는 "" 로 감싸여진 형태로 되어 있고, 숫자형 데이터는 "" 없이 값이 그대로 저장되기 때문에 구분이 가능합니다.

이렇게 export의 결과물인 del 파일을 이용해서 다시 db2 명령어인 import를 하면 파일의 데이터를 데이터베이스에 저장할 수 있습니다.


특정 조건으로 데이터를 추출하고자 할 때는 select * from 구문에 where 절을 추가하면 됩니다.


ex) servertime이 2018년 5월 3일 이후인 데이터만 추출

db2 "export to test.del of del select * from tmptable 
where servertime > to_date('2018-05-03 00:00:00', 'YYYY-MM-DD HH24:MI:SS')"


export 와 import 는 일반적인 sql 쿼리 구문보다 속도가 빠르기 때문에 대용량 데이터를 처리하고자 할 때 유용하게 사용할 수 있습니다.


예를 들면 특정 테이블에 데이터가 많이 누적되어 일정 시점 이전의 로그를 삭제하고자 할 때 delete 구문을 사용하여 where 조건을 주고 실행하면 성능도 느리지만 transaction log가 대량으로 생성되어 최악의 경우 transaction log full로 인해 rollback 이 발생될 수 있습니다.

이럴 때 export 기능을 활용하면 유용합니다.

위 예제처럼 특정 기간 이후의 데이터만 export 한 후 table을 truncate 한 후에 추출한 파일을 다시 테이블에 import 하면 됩니다.

[DB2] import 로 bulkinsert 하기



- Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

'Database > DB2' 카테고리의 다른 글

[DB2] import 로 bulkinsert 하기  (0) 2018.06.22
[DB2] DBI1309E 에러 발생 시  (0) 2018.05.17
[DB2] 특정 테이블 export 하기  (0) 2018.05.03
블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요