728x90

1. 입력값 오류

DBIO 를 작성할 때 VIEW의 출력변수 생성 버튼을 눌렀을 때 아래 그림과 같은 오류 메시지가 나오는 경우가 있다.  이것은 스튜디오의 버그라기 보다는 개발자의 프로프레임 스튜디오 사용법의 미숙함에 기인된다. 

ORA-01840 : 입력된 값의 길이가 날짜 형식에 비해 부족합니다.


사용자 삽입 이미지


DBIO 스튜디오의 view 출력변수 생성시에는 개발자의 편의를 위하여 입력값 자동 설정기능이 있는데 이것을 체크해 놓았을 경우 입력변수에 디폴트 값으로 1 을 세팅하여 SQL을 실행한다. VIEW의 출력변수 생성은 작성된 SQL이 문법적으로 오류가 없는지 수행해 보고 정상동작될 경우 출력변수를 생성해 주는 편의 기능이다.  따라서 원래는 입력변수에 값을 일일이 개발자가 넣어서 실행시켜 주어야 하나 개발자의 편의를 위하여 "입력값자동설정" 기능을 제공하고 있는 것이다.

따라서  이 입력값자동설정 체크를 해제하고 출력변수생성 버튼을 클릭하면 다음과 같이 입력값을 직접 넣을 수 있는 팝업이 뜨게 된다.

사용자 삽입 이미지

기본 세팅 값이 1 로 되어 있는데 이것을 포맷에 맞는 적당한 값을 넣으면 정상 실행 될 것이다. SQL 상에서 포맷이 'YYYYMMDD' 이므로 20080404 와 같은 년월일 모양대로 입력하고 실행하면 오류 없이 출력변수 생성을 할 수 있을 것이다.


2. 수행시간


간혹 SQL 튜닝이 제대로 되지 않아 실행시간이 너무 오래 걸리는 경우  timeout 이 나서 출력변수 생성을 하지 못 하는 경우가 있다. 이런 경우 우선적으로 해야 할 것은 해당 SQL 이 빨리 수행될 수 있도록 튜닝을 하는 것이 우선이다.

그러나 개발 형편상 튜닝을 뒤로 미루고 우선 dbio 부터 작성하고자 한다면 다음과 같은 편법을 이용하여 출력변수를 작성할 수 있다.

출력변수가 FTR_DT, MO_ACNO  두개 라고 가정할 때 다음과 같이 정상 수행될 수 있는 임시 SQL 을 작성하고 이것을 실행하여 출력변수를 먼저 작성할 수 있다.

SELECT '1' FTR_DT, '2' MO_ACNO FROM DUAL

사용자 삽입 이미지

출력변수가 생성이 된 후에 원래의 SQL 을 바꿔서 붙여 넣고 저장을 한다.

(문의) 프레임웍팀 이영균 책임

출처 : http://pangate.com/49

728x90
농협에서 HP 장비를 개발장비로 사용하고 있으며 dbio 는 60여초, 매퍼는 40여초 정도의 컴파일 시간이 걸리고 있습니다.
 
IBM 장비를 사용하고 있는 프로젝트로서 3.0을 사용하고 있는 신협, 4.0 사용중인 대우증권, 하나은행에서는 컴파일 속도 때문에 문제된 경우는 없다고 합니다. ( 전화문의 )
그러나 HP 장비를 사용하고 있는 신한은행의 경우 농협의 경우와 같이  DBIO를 컴파일 하는데 1분 이상이 걸린다는 것을 들었습니다.( 전화문의 )
 
make 시 시간이 오래 걸리는 것은 HP 장비의 일반적인 현상으로 보입니다.
 
다음은 농협에 투입되어 있는 HP 기술자의 현재까지의 진행상황에 대한 답변 내용인데요.
 
[ 원 본 글 ]====================================================================================
* 발 신 자 : 류익상 차장/한국HP/인프라
* 발신시각 : 2008-05-22 09:23:13

안녕하세요? 
컴파일 속도 지연에 대한 진행상황을 업데이트정보입니다.
<진행상황>
-HP RC에 환경구성 후 테스트 프로그램으로 상황 재연 테스트(파일 120,000개 생성후)==>농협에서와 같이 성능지연, 문제파악
         -컴파일 옵션 변경에 의한 개선 테스트==> 효과 없음
         -컴파일 과정의 분석에 의한 개선부분을 체크 테스트 ==> 지연원인 파악 및 농협과 화일시스템 변경테스트 효과없음
         -WTEC에 의해 개선부분 진행중 ==> 현재 개선부분에 대한 문의중

 
<5월 21일 HP RC 김병수, 정영훈에 의한 테스트 및 진행과정의 1차 답변>
================================================================================================
make 유틸리티가 실행 되면서 내부적으로 opendir(), readdir() 함수를 통해 현재 디렉터리의 내용(directory entry)을 읽으면서 시간 지연이 있는 것으로 판단됩니다.
10:39:24 {3675851} <0.000011> open(".", O_RDONLY|0x200000, 0)
................................................ = 5
10:39:24 {3675851} <0.000006> fstat(5, 0x7fffd380)
........................................................... = 0
10:39:24 {3675851} <0.000005> fcntl(5, F_SETFD, 0)
........................................................... = 0
10:39:24 {3675851} <0.000052> getdents(5, 0x40450ec0, 8192)
.................................................. = 7960
10:39:24 {3675851} <0.000036> getdents(5, 0x40450ec0, 8192)
.................................................. = 7952
10:39:24 {3675851} <0.000037> getdents(5, 0x40450ec0, 8192)
.................................................. = 7728
10:39:24 {3675851} <0.000025> getdents(5, 0x40450ec0, 8192)
.................................................. = 7872
...
위 부분이 "." directory (현재 directory)를 open 한 후 getdents()를 계속 호출하는 부분인데 이 부분은 아래와 같이 directory open 후에 readdir() 이 호출되는 과정입니다.
    struct dirent *d;
    ....
    if ((dp = opendir(".")) == NULL) {
        perror(".");
        exit(1);
    }
   ...
    while ((d = readdir(dp)) != NULL) {
        ....
이렇게 가져온 dirent 구조체를 통해 파일 정보를 얻을 수 있습니다.
 120,000 개 정도 되는 파일을 prealloc 으로 실제 size를 줘서 생성한 후 테스트를 해 보면 make 시간이 상당히 지연되는 것을 확인했습니다. HP-UX 에서 이 시간 지연 문제는 make 유틸리티의 옵션 조정 등 으로는 해결하기 어렵다고 판단됩니다.
화일 시스템을 변경하여 HFS 파일 시스템에서도 테스트를 해보았으나 성능 향상은 없었습니다.
현재 까지의 테스트 결과에 의해 결과는 Compile 시의 작업 디렉터리에 파일을 적게 두는 방법이 개선의 방법입니다.
===================================================================================
감사합니다.
류익상

출처 : http://pangate.com/48

728x90

백업 파일을 도스 커맨드(DOS Command)로 관리하거나 하는 경우 날짜를 달아야 하는데 도스 커맨드를 이용해서 batch파일로 만들면 편리합니다.

Winzip과 wzcline 이라는 커맨드 지원 파일을 이용한 예입니다.
wzcline은 윈집 정품 구매자는 무료로 사용할 수 있습니다. 윈집 정품이 아니면 wzcline을 이용할 때 아무 키나 누르면 진행이 되지만 이 경우 스케쥴러에 등록할 수 가 없습니다. 그냥 개인적으로 하루에 한번씩 수동으로 실행할 것이라면 등록을 안해도 되겠죠;;

다음은 오늘날짜를 YYYYMMDD형식으로 받아오는 스크립트입니다.
for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET DT=%%a%%b%%c

일문이나 영문OS같은 경우 날짜 앞에 요일이 나오는 경우가 있습니다.
그 경우는 다음을 이용해주세요.
for /F "tokens=1-4 delims=/ " %%a in ('date /t') do SET DT=%%a%%d%%b%%c
Set DT=%DT:~3,8%

다음은 특정 날자를 구하는 스크립트입니다. 백업까지 예제로 넣었습니다. 오늘날짜는 구하기 쉬운데 특정 날짜를 입력하려면 무지 힘들죠? -ㅅ-;;
배치파일을 실행할 때 뒤에 변수로 날짜(YYYY/MM/DD)를 입력하면 입력한 날짜의 것이 압축됩니다. 날짜를 입력안하면 오늘보다 하루 전날 것만 압축합니다.

if "%1"=="" ( 
    for /F "tokens=1" %%a in ('date /t') do set orgdate=%%a
) else (
    set orgdate=%1
)

:년월일 분리
set yy=%orgdate:~0,4%
set mm=%orgdate:~5,2%
set dd=%orgdate:~8,2%
:월, 일의 숫자화
set /a mm=1%mm%-100
set /a dd=1%dd%-100

set /a dd=dd-1

if %dd% NEQ 0 goto end

:월 처리
set /a mm=mm-1
if %mm% EQU 0 set mm=12&&set /a yy=yy-1

echo set sub=0030101001010 >sub.bat
echo set /a dd=31-%%sub:~%mm%,1%% >>sub.bat
call sub.bat

:윤년처리
:4년주기
  set /a u=yy %% 4
  if not %u%==0 goto end
:100년주기, 400년주기
  set /a u=yy %% 400
  set /a v=yy %% 100
  if %v%==0 if not %u%==0 goto end
:2월인지 체크
  if %mm% EQU 2 set /a dd=dd+1

:end
set mm=0%mm%
set mm=%mm:~-2%

set dd=0%dd%
set dd=%dd:~-2%

set DT=%yy%%mm%%dd%
:작업폴더
set fdn=c:\Logs

:찾을 파일명
set ffn=account
:압축실행
c:\progra~1\winzip\wzzip -p -r %fdn%\backup\%ffn%_%DT%.zip %fdn%\%ffn%\*%DT%*.*
:에러의 경우 다음줄 실행, 아닌경우 Exit로 이동
If Not ErrorLevel 1 Goto Exit
Echo Error of %fname% >> log.txt
:Exit
Del %fdn%\%ffn%\*%DT%*.*


출처 : http://www.littleworld.net/ai/kmod.asp?no=305&isn=&mymsg=

+ Recent posts