
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