개발 등/ORACLE

[펌글] java.sql.SQLException: IO 예외 상황

darkhorizon 2009. 11. 14. 15:44
728x90
반응형

## java.sql.SQLException: IO 예외 상황: Socket closed
==> 어떻게 해야될지..-.-

 ## java.sql.SQLException: ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다
Union 을 사용하는 경우에 컬럼의 type 이 같아야 한다.

아래 예에서 bnid 는 Number 이고, errorid 는 char 인 경우에 위와 같은 에러가 날 수 있다.

 ex)

select name, bnid from table_a

union

select myname, errorid from table_a

 

## Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;

==> jre1.5.0_11 에서는 에러가 나고 jre1.5.0_07 로 변경하면 안남

 

## Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;

==> jre1.6.0_3 에서는 에러가 나고 jre1.6.0_2 로 변경하면 안남
 

 

## java.sql.SQLException: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다

1. 실행하는 SQL 이 잘못 되어 있다.
2. SQL 마지막에 ";" 가 들어가 있다.
3. 형식에 맞지 않는 값을 사용하는 경우

  ex) 에러 발생: Connection.setSavepoint("20071126");    // 숫자
  ex) 정상 처리: Connection.setSavepoint("T20071126");  // 문자 + 숫자

 문자가 필요한 곳에 숫자 형식의 값을 입력하는 경우

 

## ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다

ALTER TABLE MAUS.MCP_META_INFO
 ADD (
  UPDATE_SUPPLIER VARCHAR2(20)
)


ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다

1. Lock 걸린 session 찾기
select a.sid , a.serial#, b.type,c.object_name
from v$session a , v$lock b , dba_objects c
where a.sid = b.sid and b.id1 = c.object_id
and b.type = 'TM' and c.object_name='MCP_META_INFO'


2. session 제거
SQL> /

       SID    SERIAL# TY
---------- ---------- --
OBJECT_NAME
--------------------------------------------------------------------------------
      2715      40427 TM
GAME_BBS_FREE_COMMENT


SQL>
SQL> alter system kill session '2715,40427';

System altered.

 

## java.sql.SQLException: 인덱스에 IN 또는 OUT 매개변수가 없음 :: 30
==> PreparedStatement에서 매개변수의 숫자가 맞지 않은경우이다.

 setString(30, "aaa); 와 같이 30번에 대한 setXXX()가 없는 경우.

 

 ## ORA-01006: 바인드 변수가 없습니다.
--> PreparedStatement에서 ?의 개수보다 setXXX()의 개수가 더 많은 경우

 

 ## java.sql.SQLException: ORA-01008: 일부 변수가 결합되지 않았습니다.
--> ? 의 개수만큼 pstmt.setXXX() 를 수행하지 않아서 나는 에러임

 

 ## java.sql.SQLException: ORA-00904: 열명이 부적합합니다
--> select 나 insert 하는 컬럼명이 잘못된 경우..

  

## java.sql.SQLException: ORA-00913: 값의 수가 너무 많습니다
--> 입력할려는 칼럼의 갯수가 values () 란 안의 데이터 갯수보다 모자랄때 생기는 에러

ex) insert into aaa (val1, val2) values(?, ?, ?)

 

## ORA-01438: 지정한 정도를 초과한 값이 열에 지정되었습니다
--> CHAR 10 에 20자리의 문자를 넣는 경우..

 

## java.sql.SQLException: ORA-01000: 최대 열기 커서 수를 초과했습니다
--> while 안에 rs 가 있는 경우 rs를 close 해야 한다.

ResultSet rs = null;

while (it.hasNext()) {
  rs = stmt.executeQuery(sql);
 
  while(rs.next()){
 
  } // while 2
 
  // 꼭 rs 를 close 하자
  try{rs.close(); rs = null;}catch(Exception e){}
} // while 1

 

 
ORA-00932: 데이터 유형이 일치하지 않습니다
  ==> int 컬럼에 String을 선언한 경우


ORA-01722: 수치가 부적합합니다
http://blog.naver.com/hschoi82?Redirect=Log&logNo=20027341968

문자인데 숫자처럼 썼다던가(비교했다던가)
숫자인데 문자처럼 썼다던가 했을 경우 생긴다.
 
또는 문자에 Null이거나 공백이 있는데 숫자형식으로 바꾼경우..
이 경우는 Trim을 시켜준다.

NVL명령어는 형이 같아야 한다.

 

 //======================= 공간 연산 ==============================

 

## USER_SDO_GEOM_METADATA 테이블을 읽는 데 실패했습니다
==> user_sdo_geom_metadata 추가 및 공간 인덱스를 확인한다.

 

 ## java.sql.SQLException: ORA-29875: ODCIINDEXINSERT 루틴을 수행하는 곳에 실패가 있습니다
ORA-13365: 층 SRID가 도면 SRID와 일치하지 않음
ORA-06512: "MDSYS.SDO_INDEX_METHOD_9I", 줄 319에서
ORA-06512: 줄 1에서

 

==> user_sdo_geom_metadata.SRID 컬럼과 일치해야 한다.
입력된 SRID와 insert 시의 SRID를 동일하게 ..
오라클에서는 8307이 WGS84 이다.

 

 ## java.sql.SQLException: ORA-13050: 스페이셜 객체를 구성할 수 없습니다
ORA-06512: "MDSYS.SDO_3GL", 줄 41에서
ORA-06512: "MDSYS.MD2", 줄 726에서
ORA-06512: "MDSYS.SDO_GEOM", 줄 2950에서
ORA-06512: "MDSYS.SDO_GEOM", 줄 2977에서


==>
1. Data 가 유효한지 확인을 하라..

  SELECT SDO_GEOM.VALIDATE_GEOMETRY(a.coordinate, 0.005) valid
  FROM PMI_apa_1 a
 
 
  SELECT SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(a.coordinate, 0.005) valid
  FROM PMI_apa_1 a ;

 

2. 저장된 데이터의 Dimension(GTYPE)이 요청 Dimension 이랑 같은지 확인!!!
  SELECT a.coordinate FROM PMI_apa_1 a ;
 

3. 컬럼이 null 인지 확인한다.
  null 인경우 공간 인덱스를 사용 할 수 없다.


728x90