ora-01461 에러
- 작성자 :
- 김*진
- 작성일 :
- 2011-02-07 12:56:33
- 조회수 :
- 2,871
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
해결방법을 찾습니다.
서버환경은 HP-UX에서 oracle 11g 를 사용중이고요.
자바버전은 jdk1.6 버전입니다.
jsp화면에서 varchar2 4000 byte 의 데이터를 입력받을때 에러가납니다.
에러 상황은 한글 2000 글자까지를 받을수 있어야하는데 1600글자 정도까지만
정상입력이되고요. 오바되면 ora-01461 에러화면이 나옵니다. 이미지첨부.
개발환경인 oracle10g 에 연결해서 입력할때는 한글2000자까지
정상입력되는것을 확인했고요.
운영환경인 oracle11g 에 연결해서 입력할때는 에러가납니다.
제 생각에는 jdbc쪽 jar에서 문제가있는듯해서 ojdbc6-11.1.0.jar
를 추가해줬는데도 에러가 나네요... ㅠㅠ
어떻게 해결해야할지 문의드립니다.
*was에서 서비스중인 웹프로젝트의 lib jar파일 목록 첨부했습니다.
서버환경은 HP-UX에서 oracle 11g 를 사용중이고요.
자바버전은 jdk1.6 버전입니다.
jsp화면에서 varchar2 4000 byte 의 데이터를 입력받을때 에러가납니다.
에러 상황은 한글 2000 글자까지를 받을수 있어야하는데 1600글자 정도까지만
정상입력이되고요. 오바되면 ora-01461 에러화면이 나옵니다. 이미지첨부.
개발환경인 oracle10g 에 연결해서 입력할때는 한글2000자까지
정상입력되는것을 확인했고요.
운영환경인 oracle11g 에 연결해서 입력할때는 에러가납니다.
제 생각에는 jdbc쪽 jar에서 문제가있는듯해서 ojdbc6-11.1.0.jar
를 추가해줬는데도 에러가 나네요... ㅠㅠ
어떻게 해결해야할지 문의드립니다.
*was에서 서비스중인 웹프로젝트의 lib jar파일 목록 첨부했습니다.
A
안녕하세요.. 김형진님..
해당 문제는 두 가지 가능성이 있을 것 같습니다.
첫번째의 경우는 말씀하신 것 처럼.. jdbc에 대한 bug로.. 해당 Oracle 버전에 맞는 JDBC Driver의 최신 버전으로 변경해 보시면 될 것 같습니다.
두번째의 경우는 실제 bytes가 4000을 넘긴 경우입니다.
utf-8의 경우는 실제 2~3 bytes의 데이터를 가지기 때문에.. 실제 입력되는 한글개수 * 2 byte로 계산되지 않습니다. 일부 문제는 3 bytes를 사용하기 때문입니다.
따라서 정확하진 않지만.. 대략 1500자로 제한을 두시거나..
그 이상의 문제가 필요하시면.. CLOB으로 변경하셔야 합니다.
참고로 Oracle에서 DB 테이블 생성 시에.. varchar2(1000 char)와 같은 형식으로 지정하시면.. 데이터베이스의 encoding에 따라 euc-kr이면.. 2000 bytes, utf-8이면.. 300 bytes로 지정됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
해당 문제는 두 가지 가능성이 있을 것 같습니다.
첫번째의 경우는 말씀하신 것 처럼.. jdbc에 대한 bug로.. 해당 Oracle 버전에 맞는 JDBC Driver의 최신 버전으로 변경해 보시면 될 것 같습니다.
두번째의 경우는 실제 bytes가 4000을 넘긴 경우입니다.
utf-8의 경우는 실제 2~3 bytes의 데이터를 가지기 때문에.. 실제 입력되는 한글개수 * 2 byte로 계산되지 않습니다. 일부 문제는 3 bytes를 사용하기 때문입니다.
따라서 정확하진 않지만.. 대략 1500자로 제한을 두시거나..
그 이상의 문제가 필요하시면.. CLOB으로 변경하셔야 합니다.
참고로 Oracle에서 DB 테이블 생성 시에.. varchar2(1000 char)와 같은 형식으로 지정하시면.. 데이터베이스의 encoding에 따라 euc-kr이면.. 2000 bytes, utf-8이면.. 300 bytes로 지정됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.