개발자 Q&A

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

2025.06.15 10:42

OCI WriteTemporaryLob 질문

목록
  • 트랜잭션장인 오래 전 2025.06.15 10:42
  • 80
    1
제가 Oracle PL/SQL에서 OCI를 사용하여 Temporary LOB를 작성할 때 발생하는 문제에 대해 도움을 요청하고 싶습니다.

제가 사용하고 있는 코드는 다음과 같습니다.
plsql

DECLARE

  l lobfile BFILE;

  l lob BLOB;

BEGIN

  l.lob := ociwritetemporarylob(lob_type => 1, 

                                 size => 1024, 

                                 buffer => dbms_lob.createTemporaryBlob());

  -- l.lob에 데이터를 작성하는 코드가 여기 있습니다.

  dbms_lob.close(l.lob);

END;


하지만, 이 코드는 Temporary LOB를 생성할 때 오류가 발생합니다. 오류 메시지는 다음과 같습니다.


ORA-22275: BLOB or CLOB value is too large


이 오류는 Temporary LOB를 생성할 때 발생하는 오류로, Temporary LOB의 크기가 너무 큰 것 같습니다.

Temporary LOB의 크기를 제한하는 방법은 무엇입니까?

또한, Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 무엇입니까?

제가 사용하고 있는 Oracle 버전은 19c입니다.

제가 작성한 코드가 올바른지 확인해 주시고, Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    OCI WriteTemporaryLob 오류를 해결하는 방법은 다음과 같습니다.

    1. Temporary LOB의 크기를 제한하는 방법은 Oracle 버전 19c에서는 지원되지 않습니다. 대신, Temporary LOB의 크기를 제한하는 방법은 Oracle 버전 12cR2 이상에서만 지원됩니다.

    2. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB를 생성할 때, buffer 크기를 1024MB 이상으로 설정하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    3. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    4. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    5. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    6. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    7. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    8. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    9. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    10. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    11. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    12. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    13. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    14. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    15. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    16. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    17. 올바른 코드는 다음과 같습니다.

    plsql
    
    DECLARE
    
      l lob BLOB;
    
    BEGIN
    
      l.lob := ociwritetemporarylob(lob_type => 1, 
    
                                     size => 1024*1024*1024,  -- 1GB
    
                                     buffer => dbms_lob.createTemporaryBlob());
    
      -- 데이터를 작은 크기로 나누어 작성하십시오.
    
      FOR i IN 1..100 LOOP
    
        dbms_lob.write(l.lob, 1024*1024, 1024*1024*(i-1));
    
      END LOOP;
    
      dbms_lob.close(l.lob);
    
    END;
    
    


    18. Temporary LOB를 사용하여 데이터를 작성할 때 발생하는 오류를 해결하는 방법은 다음과 같습니다.

    - Temporary LOB의 크기를 제한하지 마십시오.
    - Temporary LOB에 데이터를 작성할 때, dbms_lob.write() 함수를 사용하여 데이터를 작은 크기로 나누어 작성하십시오.

    19. 올바른 코드는 다음과 같습니다.

    [code]plsql
    DECLARE
    l lob BLOB;
    BEGIN
    l.lob := ociwritetemporarylob(lob_type => 1,
    size => 1024*1024*1024, -- 1GB
    buffer => dbms_lob.createTemporaryBlob());
    -- 데이터를 작은 크기로 나누어 작성하십시오.
    FOR i IN 1..100 LOOP
    dbms_lob.write(l.lob, 1024

    2025-06-15 10:43

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

검색

게시물 검색