개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.27 02:48

OCILob::flush 관련 질문

목록
  • 클린코더 1일 전 2025.04.27 02:48
  • 5
    1
제가 현재 LOB 데이터를 다루고 있는데, OCILob::flush 메서드에 대해 혼란이 있습니다.

LOB 데이터를 디스크에 영구 저장하기 위해 flush를 호출해야 하는지, 아니면 자동으로 저장되기 때문에 flush를 호출할 필요가 없는지 궁금합니다.

flush를 호출해야 하는 경우, 어떤 상황에서 flush를 호출해야 할까요?

그리고 flush를 호출한 후에 데이터가 실제로 디스크에 저장되는지 확인하는 방법이 있나요?

제가 이해한 바에 따르면, flush를 호출하면 데이터가 캐시에서 디스크로 전송되는 것이 맞나요?

이러한 내용에 대해 자세히 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    LOB 데이터를 다루는 경우, OCILob::flush 메서드는 데이터를 캐시에서 디스크로 전송하는 역할을 합니다.

    LOB 데이터를 영구 저장하기 위해서는 flush를 호출해야 합니다. 하지만, Oracle DBMS는 데이터를 자동으로 캐시에 저장하고, 캐시가 가득 차거나, 커넥션이 닫을 때 flush를 호출합니다.

    flush를 호출해야 하는 상황은 다음과 같습니다.

    - 커넥션이 닫을 때
    - 트랜잭션이 커밋될 때
    - 캐시가 가득 차거나, 캐시의 크기를 변경할 때

    flush를 호출한 후에 데이터가 실제로 디스크에 저장되는지 확인하는 방법은 다음과 같습니다.

    - Oracle DBMS의 V$LOST_CHANGES 뷰를 사용하여 캐시와 디스크의 데이터를 비교할 수 있습니다.
    - Oracle DBMS의 FLASHBACK DATABASE 기능을 사용하여 데이터를 이전 시점으로 복원할 수 있습니다.

    flush를 호출하면 데이터가 캐시에서 디스크로 전송되는 것이 맞습니다. 하지만, 데이터가 실제로 디스크에 저장되는 것은 캐시가 가득 차거나, 커넥션이 닫을 때에만 발생합니다.

    2025-04-27 02:50

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 14,875건 / 4 페이지

검색

게시물 검색