Q&A

  • 오라클 DB 고수님들께.. 200만건 Insert 질문좀 드릴께요..
델파이 질문이 아니라서.. 죄송합니다.. 델피언들중에는 디비 고수님들도 많이 계시니

혹여나 DBA 하시는 분이나, 또는 조언을 주실수 있는 분이 계시다면 감사하겠습니다..

디비는 오라클이구요..

200만건이 들어잇는 테이블이 있는데,

새로운 200만건이 파일(csv)로 왔을경우

이 파일을 서비스중단없이 가장 빠르게 안전하게 테이블에 쑤셔넣는 방법이 무엇인가? 입니다..


현재는 sqlldr 로더를 이용해서 10분미만으로 작업을 끝내고 있다고 합니다만,

이것이 로더를 사용하게 되면 쿼리시 정확히 조회가 안되는 상황이 발생되므로

로더로 쑤셔넣는 동안은 서비스(조회해야 하는 상황)를 못하는 상황이 발생한다고 합니다..

그렇다구 update 를 치면 쿼리야 되겠지만, 작업시간이 1시간 이상 걸리게 되어서

문제가 됩니다..

이 상황에서 빠르게 200만건을 입력하면서도 조회도 동시에 될수있는

방법으로는 어떤것이 있을까요?..

작은 조언이라도 감사히 받겠습니다..
4  COMMENTS
  • Profile
    phono 2010.01.07 02:10
    batch 처리 statement가 있다고는 얼핏 들은거 같은데..,

    200만건 이면은 후덜덜한 양이네요.. ^^
  • Profile
    phono 2010.01.08 19:14
    "현재는 sqlldr 로더를 이용해서 10분미만으로 작업을 끝내고 있다고 합니다만,

    이것이 로더를 사용하게 되면 쿼리시 정확히 조회가 안되는 상황이 발생되므로

    로더로 쑤셔넣는 동안은 서비스(조회해야 하는 상황)를 못하는 상황이 발생한다고 합니다..
    "

    를 보면 템퍼러리 영역 사이즈는 어떻게 되어있는지도 궁굼해 지내요.. 혹 템퍼러리 영역을 더 늘려는 줘보셨는지요?
  • Profile
    구창민 2010.01.08 19:49
    아..

    네 그런 조치는 이미 해두었다고 하네요..

    현재는 그냥 로더를 이용해 처리한답니다...그시간안에는 조회는 되지 않지만..
  • Profile
    phono 2010.01.08 22:38
    이렇게 해도 될런지 모르겠지만..

    저같은 경우 인서트 껀수가 많은거 같은 경우 가끔

    트랜젝션 시작처리

    try
    insert intto 테이블(
    필드1,
    필드2,
    필드3)

    select 1, 2, 3
    union all
    select 11, 22, 33
    union all
    select 111, 222, 333
    .
    .
    .
    .
    .
    ExecSQL;
    except
    트렌젝션 롤백
    end;

    트랜젝션 커밋..

    방식으로 해서 넣기도 하는데.. 이렇게 해보셨나요?


    아니면 혹
    혹 프로그램으로
    직접 루프를 돌려가며 인서트를 해보았는지도..
    • 후초보
    • 2010.01.07 01:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김준형
      2010.06.12 00:31
      아마 한글설정하는 부분에서 Microsoft IME 2007이상으로 설정되어 있는것 같은데.. 제어판->국가 및...
    • 매중원
    • 2010.01.06 22:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.01.06 23:02
      코드를 이해하시고 짜신것은 아닌듯하군요... 아래 부분이 잘못
    • 한윤식
    • 2010.01.06 22:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.01.07 01:35
      폰트 크기 줄이지 않는 이상 안됩니다. 퀵레포트의 비애죠 ㅠ.ㅠ
    • 최용일
      2010.01.06 23:10
      이런경우는 OnMouseDown이나 OnMouseUp에서 처리하시면 됩니다. 이벤트의 파라매터중에서 Button을 보시...
    • 이종원
      2010.01.06 23:45
      답변 감사드립니다. ^^ 확인해보겠습니다 ^^
    • 스바쉬
    • 2010.01.06 20:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.01.07 01:37
      BDE 쓰시나요 ADO 쓰시나요? 아 하긴 델4면 BDE 일거 같은데.., 아주 간단 INSERT 쿼리부터 테스트...
    • 희아빠
    • 2010.01.06 19:19
    • 0 COMMENTS
    • /
    • 0 LIKES
    • HyunjSohn
    • 2010.01.06 10:05
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.01.06 23:17
      자료실에 있는 델6지원하는 2.75버전을 설치해보세요.
    • HyunjSohn
      2010.01.08 08:36
      감사합니다만, 제가 보안때문에 외부파일을 가지고 들어가지 못하는 상황인데 지금 가지고 있는 RxLib를 ...
    • 최용일
      2010.01.08 08:47
      require절에있는 것들 다 지우고 다시 컴파일해보세요. 아마도 필요한 패키지 추가할 것인가 물어볼것입...
    • HyunjSohn
      2010.01.12 07:36
      감사합니다^^ path 추가로 해결이 됐습니다.
    • 이규하
      2010.01.27 18:05
      http://jvcl.delphi-jedi.org/ 에 최신의 Rxlib 를 계승한 Jedi Visual Component Library 가 있습니...
    • 구창민
    • 2010.01.06 02:17
    • 4 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.01.07 02:10
      batch 처리 statement가 있다고는 얼핏 들은거 같은데.., 200만건 이면은 후덜덜한 양이네요.. ^^
    • phono
      2010.01.08 19:14
      "현재는 sqlldr 로더를 이용해서 10분미만으로 작업을 끝내고 있다고 합니다만, 이것이 로더를 사용...
    • 구창민
      2010.01.08 19:49
      아.. 네 그런 조치는 이미 해두었다고 하네요.. 현재는 그냥 로더를 이용해 처리한답니다...그시간...
    • phono
      2010.01.08 22:38
      이렇게 해도 될런지 모르겠지만.. 저같은 경우 인서트 껀수가 많은거 같은 경우 가끔 트랜젝션 ...
    • 이강석
    • 2010.01.06 01:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2010.01.06 01:55
      <!--CodeS--> procedure TfMain.VMRTextOut(AText: string); var VMRBitmap: TVMRBit...
    • 이강석
      2010.01.06 02:29
      쩌업...TVideoWindow 프로퍼티 Mode를 vmVMR로 주니까 나오네요?? ^^
    • 이용벽
    • 2010.01.04 19:35
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 아이에스
      2010.01.04 19:46
      Memo1.Lines[0] + Memo1.Lines[1];
    • 이용벽
      2010.01.04 20:14
      2개만이 아니라 연속으로 출력하려고 하는데요
    • 오름
      2010.01.04 20:45
      Memo1.Lines.Add('A'); Memo1.Lines.Add('B'); Memo1.Lines.Delimiter:=chr(28); ShowMEssage(Memo1.L...
    • 이용벽
      2010.01.04 22:52
      콤파일 시 이런 메시지가 나옵니다. 제가 뭔가 사용을 잘못한것인지... Undeclared identifier: 'Delimi...
    • 장성호
      2010.01.04 22:59
      다음과 같이 하면 line을 바꾸지 않고 계속 Memo에 추가됩니다. Memo1.Text:=Memo1.Text+'A';...
    • 이용벽
      2010.01.05 00:05
      감사합니다. 그런 방법이 있었군요. 한가지 더. 정지시킬 때까지 무한 루프일 경우는 어떻게 될까요. M...
    • 소울해커
      2010.01.05 08:12
      변수 하나 두시고 취소 버튼만드셔서 컨트롤하셔요. 루프중에 프로그램이 응답없음이 되지 않도록 ...
    • • • •
    • 최용일
      2010.01.04 23:19
      TList로 바꾸시는것이 좋을듯하네요. 안의 데이터가 WIN32_FIND_DATA라고 생각하시고 포팅하시면 될것같...
    • 소울해커
      2010.01.05 08:15
      답변 감사합니다. 헌데... 개발 방향이 수정되어서 고심한 의미가 사라질거 같습니다. ㅠ_ㅠ;
    • 김수현
    • 2010.01.02 06:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2010.01.04 00:35
      <!--CodeS--> var pUserName: array[0..80] of Char; wLength: LongWord; begin wLengt...
    • 신동열
    • 2010.01.01 03:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권익수
      2010.01.02 04:38
      Connections 메뉴의 Show Host Name 옵션이 체크되어있지않나 확인해보세요. Show Host Name 옵션이 체...
    • 최용일
      2009.12.31 12:37
      pipe
    • 이용벽
    • 2009.12.31 02:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2009.12.31 12:45
      최대 count만큼 RS232C를 통해서 데이터를 읽고, 데이터중 화면상에 뿌릴 수 없는 아스키코드는 16진수로...
    • 이용벽
      2009.12.31 19:44
      질문 하나 더. 잘 동작하던 프로그램이 가끔 이상 동작을 해서 고생하고 있습니다. 위 문장을 보시면 ...
    • 박선우
    • 2009.12.30 20:40
    • 0 COMMENTS
    • /
    • 0 LIKES