728x90

DB2왕초보님 | 관리/SAP on DB2 | 2013-06-27 14:28:46


안녕하세요 

현재 db 버젼은 DB2 v9.1.0.4 를 사용하고 있으며 SAP on DB2 입니다. 

지금 현상은 HWM가 너무 높아져서 DB2DART를 사용하여 해당 오브 젝트들을 모두 reorg 해주었는데

HWM 가내려가지 않아 DB2DART를 사용하여 다시한번 내리니 아래와 같은 로그가 발생 되었습니다.

사용 스크립트 : db2dart BID /LHWM /TSI 32 /NP 0

______________________________________________________________________________

        _______                    DART                   _______

 

   D a t a b a s e   A n a l y s i s   a n d   R e p o r t i n g   T o o l

 

                           IBM    DB2    6000

______________________________________________________________________________

 

DART (V9.1)  Report:

2013-05-29-14.26.51.813752

 

            Database Name: BID

            Report name: BID.RPT

            Old report back-up: BID.BAK

            Database Subdirectory: /db2/BID/db2bid/NODE0000/SQL00001

            Operational Mode: Database Inspection only (INSPECT)

 

______________________________________________________________________________

------------------------------------------------------------------------------

 

 

Action option: LHWM

Tablespace-ID: 32; Desired Highwater Mark (Number-pages): 0

 

Connecting to Buffer Pool Services...

 

Highwater mark processing - phase start.

 

 

NOTES:  All highwater mark values and/or object sizes listed below are

        given in extents and not pages (unless explicitly stated).

 

        The object ID and object type are shown for each extent listed.

 

        Extents marked with an asterisk (*) hold the first page of an

        object and these extents can only be moved by dropping and

        recreating that object.

 

        Extents marked as belonging to objects with ID equal to 65534 or

        65535 are SMP extents or object table extents and they are not

        movable.

 

        After following a step and before continuing on to the next one,

        disconnect and reconnect to the database.

 

 

Highwater Mark:  6843804 pages, 3421902 extents (extents #0 - 3421901)

 

 

Lower highwater mark processing - phase start.

     Current highwater mark:                     3421901

     Desired highwater mark:                     0

     Number of used extents in tablespace:       1434060

     Number of free extents below original HWM:  1987842

     Number of free extents below desired HWM:   0

     Number of free extents below current HWM:   1987842

 

 

Final highwater mark:  Extent #3389568 (3389569 extents, 6779138 pages).

 

** This cannot be lowered further as it holds an SMP extent which is not movable.

 

 

Lower highwater mark processing - phase end.

 

Highwater mark processing - phase end.

 

                     ______________________________________

 

         The requested DB2DART processing has completed successfully!

                     All operation completed without error;

                   no problems were detected in the database.

                     ______________________________________

 

                        Complete DB2DART report found in:

/db2/BID/db2dump/DART0000/BID.RPT

 

    _______    D A R T    P R O C E S S I N G    C O M P L E T E    _______

 

 위와 같은 메세지가 나와 아래의 명령어를 사용하여 HWM를 내려보았지만

사용스크립트 : db2dart bid /tsi 32 /np 0 /rhwm

또한 HWM도 내려가지 않았으며 백업 펜딩도 걸리지 않았습니다.

위스크립트의 로그는 아래와 같습니다. 

______________________________________________________________________________

 

        _______                    DART                   _______

 

   D a t a b a s e   A n a l y s i s   a n d   R e p o r t i n g   T o o l

 

                           IBM    DB2    600

______________________________________________________________________________

 

DART (V9.1)  Report:

2013-06-27-12.05.12.370250

 

            Database Name: BID

            Report name: BID.RPT

            Old report back-up: BID.BAK

            Database Subdirectory: /db2/BID/db2bid/NODE0000/SQL00001

            Operational Mode: Database Inspection only (INSPECT)

 

______________________________________________________________________________

------------------------------------------------------------------------------

 

Action option: RHWM

Tablespace-ID: 32

 

Connecting to Buffer Pool Services...

 

Highwater mark processing - phase start.

 

Reduce highwater mark processing - phase start.

 

 

The Highwater mark cannot be reduced.

The index of the last SMP extent used is: (52)

Reduce highwater mark processing - phase end.

 

Highwater mark processing - phase end.

 

                     ______________________________________

 

         The requested DB2DART processing has completed successfully!

                     All operation completed without error;

                   no problems were detected in the database.

                     ______________________________________

 

                        Complete DB2DART report found in:

/db2/BID/db2dump/DART0000/BID.RPT

 

    _______    D A R T    P R O C E S S I N G    C O M P L E T E    _______

 위와 같은 로그만 생기고 HWM가 내려가지 않습니다. 

HWM를 내릴수있는 방법을 알려주셨으면 감사하겠습니다.

감사합니다.




pajama 2013-06-27 17:17:18
저도 8버전에서 reorg 다하고 lhwm rhwm 했는데도 HWM가 내려가지 않았던 적이 있었는데.. 방법이 없더군요 테이블내렸다가 테이블스페이스 재생성, 로드하는 방법뿐...다른해결방법 있다면 저도 알고싶네요

DB2왕초보 2013-06-28 14:03:09
진자로 위와 같은상황이면 HWM를 내릴수 있는 방법 이 EXPORT/LOAD 방법 바께없는건가요.. 다른 방법으로 HWM를 내리신분들은 안계신가요??

냉정과열정사이. 2013-07-02 16:42:28
없는 듯.

냉정과열정사이. 2013-07-23 16:38:39
RESETDICTIONARY



728x90
728x90

무무님 | 개발/설치/관리 | 2013-06-26 10:15:55


안녕하세요?
드라이버 업데이트 쉽게하는 방법이 없는지요?
현재는 기존거 "프로그램추가삭제"에서 삭제하고 신규 버전을 setup해서 설치합니다.
수십명을 일일이 지우고 삭제할려니 일이 만만치 않네요..

드라이버 파일이 cwbodbc.dll 이길래 이걸 업어쓰니까 오류가 나네요.





pajama 2013-06-27 17:25:33
odbc 드라이버만 설치하는 이미지를 만드는 방법이 있다고 하네요 regsvr32로 cwbodbc.dll 파일을 등록하는건 잘 안되더군요

참고해보시길.. 레드북엔 설치이미지 만드는 과정이 나와있습니다.
http://www.acronet.kr/index.php?_filter=search&mid=qna01&search_target=title&search_keyword=odbc&document_srl=1430
http://www.redbooks.ibm.com/redbooks/pdfs/sg246226.pdf


728x90
728x90

히로님 | 쿼리 | 2013-06-18 17:01:37


안녕하세요.

kdug에서 많은 정보 얻고 있는 개발자 입니다.

다른게 아니라 프로시져 생성 도중에 다음과 같은 에러가 생겨 질문 드리는데요.
Lookup Error - DB2 Database Error: ERROR [] [IBM][DB2/NT] SQL8004N  A valid license key was not found for the requested function.

에러 메시지 내용으로는 무슨 라이센스 키 말하는 거 같은데 전혀 짐작이 안가네요.ㅜㅜ
혹시 동일현상 겪고 있다 해결하신분 없으세요?
도움 부탁드립니다.

감사합니다.





pajama 2013-06-18 17:46:30
혹시 db2 express-c 에디션을 사용중이신가요? 9.7.5 (수정팩5) 버전 이상에서만 pl/sql 생성, 실행이 가능합니다.
가능하시다면 최신버전 express-c 버전으로 테스트해보시기 바랍니다.

수정팩 요약사항
http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.wn.doc/doc/c0056050.html

제품 다운로드
http://www-01.ibm.com/software/data/db2/express-c/download.html


히로 2013-06-20 10:33:57
답변 감사합니다.
네. 개발에서 express-c 사용 중입니다. DB2 v9.7.400.501 해당 버젼이면 pl/sql 적용이 안되나요?
현재 ibm 사이트에선 10.x 버젼만 다운되는것 같은데 수정팩만 따로 받을수 있나요?
저의 무지한 영어실력으로 아무리 찾아봐도 없네요.ㅜㅜ
아, 그냥 10.x 버젼으로 깔아도 호환성에 문제는 없나요? 혹시 경험이 있으신가 여쭤 봅니다~

HyunHo Lee 2013-06-19 09:42:27
제 생각에도 Oracle compatibility 기능을 Express-C에서 사용하셔서 그런 것 같습니다. 
조금 초기에 생겼던 문제들 같은데요.
9.7을 사용하신다면 oracle_compatibility_vector=ora 라고 세팅 되어 있는지 확인해 보세요. 
db2set -all 하면 나오는데 db를 생성할 때 부터 생성 하셨다고 하면 될 가능성이 높습니다.

9.7에서는 아래와 같이 ora로 설정해야 된다는 말이 나와 있네요.
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.licensing.doc/doc/r0053238.html

10.1에서는 다른 에디션과 동일한 레벨인 것 같습니다.
http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.licensing.doc/doc/r0053238.html

히로 2013-06-20 10:35:01
네 express-c 사용 중입니다.
oracle_compatibility_vector=ora 세팅하고 db 생성했는데 안되네요.ㅜㅜ
db2set -all해도 =ora로 나오구요..
일단 윗분말슴대로 더 윗 버젼의 수정팩을 찾아봐야겠네요.ㅜㅜ

HyunHo Lee 2013-06-20 11:27:25
express-c를 운영에 사용하실게 아니고 단순히 테스트용이시라면 90일 평가판을 모든 에디션으로 받으실 수 있어요.
http://www-01.ibm.com/support/docview.wss?uid=swg27007053



728x90
728x90

Lpar1과 아이들님 | 2013-06-14 15:35:08




Lpar1과 아이들 2013-06-14 15:38:12
본문쓰는 부분이 안되서 여기다 보충 설명을 하겠습니다.
만약 select * from table where db2.date = '201306'; 이렇게 하면 결과는 빠르게 나오지만,
select * from table where db2.date between '20130601' and '20130630' 이렇게 하면, 몇시간이 걸려도 정지 상태입니다.
혹시 db2 federation에 관해 아시는 분 계시면 정보 좀 공유 부탁드립니다.

pajama 2013-06-14 15:52:14
느리다면 where db2.date like '201306%' 또는 where db2.date in ('20130601', '20130602', ...)와 같은식으로 해보시는건 어떨까요
실행계획도 봐야합니다.

Lpar1과 아이들 2013-06-14 19:05:40
like로 하는것은 between을 했을때 처럼 느립니다. in으로 걸으면, 당연히 빠르고요.

pajama 2013-06-14 21:43:19
혹시 between으로 했을때 인덱스를 쓰지 못하는게 아닌지.. in이나 <, > 등으로 변경해서 수행해보시는게 좋겠습니다.

Lpar1과 아이들 2013-06-17 17:29:08
넹 감사합니다. 말씀하신데로, 인덱스를 못탑니다. 그래도 between 이 안된다니~ 좀 아쉽긴 하네요.

HyunHo Lee 2013-06-18 10:53:25
Federation의 경우 Optimizer가 데이터를 가져올때 where 절을 무시하고 전체를 가져와서 작업을 할지 일부 데이터만 가지고 올지 정하게 되어 있습니다. where 절을 최대한 이용해서 적게 가져올 수 있는 방법이 있는데
db2 "ALTER SERVER 서버명 OPTIONS (ADD DB2_MAXIMAL_PUSHDOWN 'Y')"
그런데 이게 꼭 먹는 방법은 아닙니다. 상식적으로 생각하시기에 index를 안타는 이유를 모르시겠으면 IBM support인 PMR을 열어 보십시오.
가끔 bug성으로 옵티마이져가 잘못 판단하는 경우가 있습니다. 이런건 fix를 통해 해결해 줍니다.

Lpar1과 아이들 2013-06-19 13:40:19
db2 "ALTER SERVER 서버명 OPTIONS (ADD DB2_MAXIMAL_PUSHDOWN 'Y')" 이옵션은 처음에 서버 생성할때 줬습니다. ㅠㅠ



728x90
728x90

무무님 | 개발 | 2013-06-13 15:13:59


안녕하세요?

아래와 같은 형태로 insert를 할때, seq에 1부터 순차적으로 순번을 매겨서 넣고 싶은데,
방법이 없을까요?

INSERT INTO TABLE_A (SEQ, NAME)
(
SELECT '1번부터 순번' ,
              EMP_NAME
  FROM TABLE_B
)

감사합니다.




pajama 2013-06-13 16:12:54
이런 형태로 입력할 수 있습니다. 원하시는 결과가 맞는지요?

insert into table_a
select row_number() over() as seq,firstnme from employee

http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0023461.html


728x90
728x90

greatoh님 | 설치 | 2013-06-12 17:33:13


안녕하세요.

pureScale 구성을 해보려 합니다.

infocenter에서 네트워크 요구사항을 확인해 보니 아래와 같이 Infiniband 또는 10GE 가 필요하다고 합니다.

Servers in a DB2 pureScale environment must use both an Ethernet network and high-speed communication adapter port.
The communication adapter port can be: 
an InfiniBand (IB) network.
a 10 Gigabit Ethernet (10GE) network.

성능과 무관하게 구성 및 테스트 목적으로 설치하려 하는데 위와 같은 장비가 꼭 필요한지 궁금하여 질문드립니다.

답변 부탁드리겠습니다.

감사합니다.




pajama 2013-06-12 18:57:42
장비 없이 vmware로 구성할 수 있습니다. vmware에서 설치하고 테스트까지 해보았는데 사양이 좋지 않아서 썩 잘되지는 않았습니다만..

여기 참조해서 만들었습니다.
http://www.zinox.com/node/156

greatoh 2013-06-13 10:14:34
한참 찾았는데도 마땅히 자료가 없었는데 답변 감사드립니다!!

^ㅇ^ 2013-06-14 10:06:59
놀랍네요. 가능한지 해봐야 겠습니다. 원래 공식 문서상으로는 가상화로 가능한 방법이 Redhat KVM을 이용해 최소 10G ethernet을 path through로 Node에 각각에 물리적으로 붙인 후 설치하는 것으로 알고 있었습니다. 물론 vmware로는 교육용으로 나온게 따로 있었죠. 이것은 ROCE를 1G 이하의 Ethernet으로 가능하게 한 편법을 쓴 버전으로 방법이 공개되어 있지 않았습니다. 원래 10G ethernet 이상에서 밖에 안되는 이유는 ROCE를 위해 사용하는 OFED software가 10G나 infiniband 밖에 지원하지 않기 때문이죠. 위의 문서에는 RDMA 통신을 위해서 10G Ethernet과 묶는 작업인 OFED에 대한 설정이 완전히 빠져 있네요. 신기할 따름입니다. ㅎㅎ



728x90
728x90

DB는내운명님 | 2013-06-11 14:19:11


v9.7.4 -> 9.7.7로 fixpack upgrade를 했습니다. 

그 후 connect을 해보니까 이전 버전 보다 connect 하는 시간이 늘어났습니다.

 v9.7.4에서는 약 2초 걸리는 것이  connect time이 v9.7.7에서는 약 9초 정도 걸리고 있습니다.
 
fixpack을 다시 내려야 되나요? 무슨 문제 일까요?




pajama 2013-06-11 17:15:54
윈도우 클라이언트의 경우 새로 db catalog를 하는 방법이 있습니다. 

AIX에는 DB2_ALTERNATE_GROUP_LOOKUP 레지스트리 변수를 설정하는 방법이 있네요.

참고해보십시오.

http://www-01.ibm.com/support/docview.wss?uid=swg21455469
http://www-01.ibm.com/support/docview.wss?uid=swg21450945

RaiKan 2013-07-28 10:14:00
저도 비슷한 경험이 있어서 답변 드립니다.
인스턴스 계정에
export ICC_TRNG = ALT 
export ICC_IGNORE_FIPS = YES
내용을 .profile 안에 넣어보세요.
속도 지연이 사라집니다.



728x90
728x90

바즈라님 | 쿼리 | 2013-06-03 17:09:36


일단 DB2에서는 ORDER BY 절이 디폴트로 대소문자를 구분하지 않고 정렬을 하는 것 같습니다.
예를들어
SELECT *
FROM (VALUES 'a','b','c','A','B','C'
         ) TMP(COL1)
ORDER BY COL1;

의 실행 결과는 다음과 같습니다.
a A b B c C

출력 순서를 아래와 같이 수정하려면 어떻게 해야 할까요?

경우1 : a b c A B C
경우2 : A B C a b c
경우3 : A a B b C c




pajama 2013-06-03 17:42:54
안녕하세요. 방법은 여러가지 있을것 같습니다만..그런데 제가 실행해보기로는 말씀하신 SQL의 결과는 A B C a b c 로 나오네요
찾아보니 translate 함수를 쓰는 방법이 있더군요


$ db2 "select col1 from tmp order by col1"

COL1
----
A
B
C
a
b
c


SQL1)
select col1 from tmp
order by translate 
(col1,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghujklmnopqrstuvwxyz',
'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')

SQL1_결과)
COL1
----
a
A
b
B
c
C

SQL2)
select col1 from tmp
order by translate 
(col1,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghujklmnopqrstuvwxyz',
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz')

SQL2_결과)
COL1
----
A
a
B
b
C
c

SQL3)
select col1 from tmp
order by translate 
(col1,
'abcdefghujklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghujklmnopqrstuvwxyz')

SQL3_결과)
COL1
----
a
b
c
A
B
C

바즈라 2013-06-03 17:52:30
감사합니다. 위 방법으로 일단 해결했습니다.
근데 디폴트 정렬 순서가 다른 이유가 뭘까요? 혹시 테스트 환경에서 오라클 호환모드 켜셨나요?

pajama 2013-06-03 17:59:40
저도 혹시나해서 DB2_COMPATIBILITY_VECTOR=ORA 설정을 바꿔봤습니다만 동일한 결과였습니다. 9.7이고 AIX환경에서 테스트했습니다.

pajama 2013-06-03 22:02:56
보아하니 코드셋 차이로 보입니다. UTF-8일때는 'A B C a b c' IBM-eucKR, ISO885915 등일때는 'a A b B c C'로 나옵니다.

바즈라 2013-06-04 09:02:46
코드셋 차이로 생기는 문제가 맞군요. 
970, 1363 등의 코드셋은 알파벳 순서가 아스키 코드 순서랑 다른가봅니다. 신기하군요.



728x90
728x90

푸른솔님 | 개발 | 2013-05-31 14:54:16




푸른솔 2013-05-31 14:54:57
본문 내용을 어떻게 붙이는지요? 아무리 해도 본문을 쓸수가 없습니다.

푸른솔 2013-05-31 14:55:51
안녕하세요.. 외부 함수 등록(External function)에 대해 문의를 드립니다.

C로 된 소스이며, 이를 컴파일해서 외부 함수로 등록을 하려고 합니다.

컴파일 옵션
xlc_r -q64 -qarch=auto -qmkshrobj Test.c -o Test.so

이상없이 컴파일되었으며 지정한 디렉토리(db2/v9.7/function)에 등록되었습니다.

그리고 다음과 같이 외부함수를 등록, 실행하였습니다.
CREATE FUNCTION test.TEST_UDF1()
RETURNS INTEGER
SPECIFIC test.TEST_UDF1
EXTERNAL NAME 'test!TestInt'
LANGUAGE C
PARAMETER STYLE DB2SQL
DETERMINISTIC
NOT FENCED
RETURNS NULL on NULL INPUT
NO SQL
NO EXTERNAL ACTION
ALLOW PARALLEL


위에 등록된 함수를 실행해 보면
select test.test_udf1
from sysibm.sysdummy1

Integer값(100)을 리턴해야 하는데 0 또는 1078373값이 리턴됩니다.
오라클만 하다가 DB2를 처음 해 보는데 왜 값이 제대로 리턴 안되는지
도저히 모르겠습니다.

혹시 경험있은분의 도움을 부탁드립니다.


해당부분의 C소스입니다. 그냥 숫자 100을 리턴만 합니다..

int TestInt(void)
{
return 100;
}

DB2 버전은 9.7이며 os는 AIX 6.1입니다....

푸른솔 2013-05-31 14:56:39
본문 작성이 안돼서 댓글로 붙였습니다....

pajama 2013-06-01 16:03:41
DB2에서 C/C++로 함수를 작성할때는 매개변수에 포인터를 사용해야 합니다.
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.apdv.routines.doc/doc/c0023758.html

아래와 같이 작성하면 원하시는 결과가 나옵니다.

void TestInt (int *out){
*out=100;
return;

자세한 함수 작성법은 인포센터를 참조하십시오.
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.apdv.routines.doc/doc/c0020578.html

푸른솔 2013-06-03 10:41:24
대단히 감사합니다. 덕분에 해결이 됐습니다. 감사합니다.
그런데 char형은 int와 또 다른 모양입니다. 
아래와 같은 char형이 있는데 int와 같이 해 줬는데 안되네요... 물론 링크의 내용도
보고 있습니다.

-- 외부함수호출..
CREATE FUNCTION edge.TEST_UDF2()
RETURNS varchar(100)
SPECIFIC edge.TEST_UDF2
EXTERNAL NAME 'testlib!TestString'
LANGUAGE C
PARAMETER STYLE DB2SQL
DETERMINISTIC
....

-- 외부 함수 C 소스
void TestString(char out[20]) /* *out 도 해 보았습니다 */
{
/* *out = "Character returned."; 이 부분은 에러가 발생합니다 */
/* 그래서 아래와 같이 했는데 값이 안 올라 옵니다 */
out = "Character returned.";
return;
}

한 번만 더 살펴 주시면 감사하겠습니다.
감사합니다.

pajama 2013-06-03 12:26:13
참고하시기 바랍니다.

void TestString(char *out)
{
strcpy(out, "Character returned.");
return;
}

푸른솔 2013-06-03 12:53:43
pajama님...대단히 감사합니다. 드디어 해결이 됐습니다.
오라클하고는 많이 다르네요...
무지 감사드립니다....



728x90
728x90

히로님 | 개발 | 2013-05-29 20:51:41


안녕하세요. DB2는 처음 쓰는 개발자 입니다.
운영DB export후 local로 import 하여 사용하고 있습니다.

날짜 관련 연산에서 쿼리를 수행하게 되면
SQL0182N  날짜 시간 값 또는 레이블된 지속 기간을 갖는 표현식이 유효하지 않습니다.  SQLSTATE=42816

위와 같은 메시지가 나네요.
timestamp 값에서 현재(sysdate -3) 시간을 빼서 최신 글을 몇개를 가지고 오는 쿼리 인듯 합니다.
ex) select   case test_date < sysdate - 3
                     then 0 else 1
                   end flag
           from aaa

헌데, 운영에서는 잘 됩니다..-_-
....._VECTOR=ORA 설정까지 한 상태 이고 
dual로 sysdate - 3 하면 잘 수행 됩니다.(select sysdtae - 3 from dual)
어떤 설정을 해야 sysdate 관련해서 연산을 할 수 있을까요?
도움좀 주세요!

감사합니다.




pajama 2013-05-29 21:38:30
안녕하세요 해당 연산을 수행하려면 DB2_COMPATIBILITY_VECTOR=ORA로 설정을 한 상태에서 DB를 만들어야 합니다.

'db2 get db cfg' 명령 출력에서 Date compatibility 설정이 on인지 확인해보십시오 이 설정은 DB를 생성할때 적용됩니다.

만일 OFF로 되어있다면 sysdate -3 과 같은 연산을 지원하지 않습니다.


히로 2013-05-30 17:18:25
pajama님 말씀대로 VECTOR 설정은 on이지만 콘솔에서 확인해보니 
날짜 호환성 속성이 OFF 네요.ㅜㅜ
다시 DB를 생성하는데 해당 속성을 on으로 하고 만들려면 어떻게 해야 하나요?

지기 2013-05-30 14:55:59
db2 "select sysdate -3 day from sysibm.sysdummy1"

단위는 year, month, day, hour, minute, second 입니다.

DB2_COMPATIBILITY_VECTOR=ORA 설정 하지 않아도 됩니다.


히로 2013-05-30 17:18:53
지기님 답변 감사합니다.
헌데 질문의 요는 timestamp 컬럼과 sysdate-3의 날짜연산이 문제네요.ㅜㅜ


pajama 2013-05-31 00:00:07
해당 속성 (Date compatibility)을 on으로 DB를 만드려면, 만들기전에 db2set DB2_COMPATIBILITY_VECTOR=ORA 하시고 create database ...하시면 됩니다. DB를 생성한 후에는 DB2_COMPATIBILITY_VECTOR=ORA 설정값에 관계없이 말씀하신 연산이 가능합니다.

지기 2013-05-30 18:09:04
db2 "create table aaa (c1 timestamp,c2 char(8),c3 char(5),c4 varchar(10))"
db2 "insert into aaa values(current timestamp,'AAA','BBB','CCC')"
db2 "insert into aaa values(current timestamp,'AA1','BB1','CC1')"
db2 "insert into aaa values(current timestamp,'AA2','BB2','CC2')"
db2 "insert into aaa values(current timestamp,'AA3','BB3','CC3')"
db2 "insert into aaa values(current timestamp,'AA4','BB4','CC4')"
db2 "select * from aaa"

C1 C2 C3 C4
-------------------------- -------- ----- ----------
2013-05-30-17.47.48.694344 AAA BBB CCC
2013-05-30-17.47.58.844898 AA1 BB1 CC1
2013-05-30-17.48.05.732783 AA2 BB2 CC2
2013-05-30-17.48.14.461513 AA3 BB3 CC3
2013-05-30-17.48.23.076692 AA4 BB4 CC4

db2 "select case when c1 > sysdate -3 hour then 0 else 1 end flag from aaa"

FLAG
-----------
0
0
0
0
0

도움이 되실런지 모르겠습니다.

히로 2013-06-03 17:14:31
모두 답변 감사 드립니다
덕분에 해결 하였네요.^^



728x90

+ Recent posts